X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fe8635a7e78715344f0f4b6abc9d797931429333..0bbe61b8c18a1795189f0cf73cc61c14a0fb846d:/src/mac/carbon/gauge.cpp diff --git a/src/mac/carbon/gauge.cpp b/src/mac/carbon/gauge.cpp index 531cf003f3..b2f36abe95 100644 --- a/src/mac/carbon/gauge.cpp +++ b/src/mac/carbon/gauge.cpp @@ -11,7 +11,7 @@ #include "wx/wxprec.h" -#if wxUSE_GAUGE +#if wxUSE_GAUGE #include "wx/gauge.h" @@ -51,27 +51,40 @@ bool wxGauge::Create( wxWindow *parent, m_peer->SetData( kControlEntireControl, kControlProgressBarAnimatingTag, (Boolean)false ); MacPostControlCreate( pos, size ); - + return true; } void wxGauge::SetRange(int r) { - // we are going via the base class in case there is + // we are going via the base class in case there is // some change behind the values by it wxGaugeBase::SetRange( r ) ; - if ( m_peer && m_peer->Ok() ) + if ( m_peer && m_peer->Ok() ){ + // switch back to determinate mode if not there already + if ( m_peer->GetData( kControlNoPart, kControlProgressBarIndeterminateTag ) != false ) + { + m_peer->SetData( kControlNoPart, kControlProgressBarIndeterminateTag, (Boolean)false ); + } + m_peer->SetMaximum( GetRange() ) ; + } } void wxGauge::SetValue(int pos) { - // we are going via the base class in case there is + // we are going via the base class in case there is // some change behind the values by it wxGaugeBase::SetValue( pos ) ; if ( m_peer && m_peer->Ok() ) { + // switch back to determinate mode if not there already + if ( m_peer->GetData( kControlNoPart, kControlProgressBarIndeterminateTag ) != false ) + { + m_peer->SetData( kControlNoPart, kControlProgressBarIndeterminateTag, (Boolean)false ); + } + m_peer->SetValue( GetValue() ) ; // turn off animation in the unnecessary situations as this is consuming a lot of CPU otherwise @@ -99,7 +112,15 @@ void wxGauge::Pulse() { if ( m_peer && m_peer->Ok() ) { - // need to use the animate() method of NSProgressIndicator Class here + if ( m_peer->GetData( kControlNoPart, kControlProgressBarIndeterminateTag ) != true ) + { + m_peer->SetData( kControlNoPart, kControlProgressBarIndeterminateTag, true); + } + + if ( m_peer->GetData( kControlEntireControl, kControlProgressBarAnimatingTag ) != true ) + { + m_peer->SetData( kControlEntireControl, kControlProgressBarAnimatingTag, true ) ; + } } }