X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09ff2ee1632c8c484134da2a31d0d5c4d0a4bef4..169d1d643c0ee0c90fa8e393b5298606bbb68cfd:/src/mac/carbon/slider.cpp diff --git a/src/mac/carbon/slider.cpp b/src/mac/carbon/slider.cpp index b9d1fd97c6..5094f4ca40 100644 --- a/src/mac/carbon/slider.cpp +++ b/src/mac/carbon/slider.cpp @@ -20,12 +20,10 @@ #include "wx/slider.h" #include "wx/mac/uma.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) BEGIN_EVENT_TABLE(wxSlider, wxControl) END_EVENT_TABLE() -#endif // The dimensions of the different styles of sliders (From Aqua document) #define wxSLIDER_DIMENSIONACROSS 15 @@ -52,8 +50,6 @@ END_EVENT_TABLE() m_tickFreq = 0; } -extern ControlActionUPP wxMacLiveScrollbarActionUPP ; - bool wxSlider::Create(wxWindow *parent, wxWindowID id, int value, int minValue, int maxValue, const wxPoint& pos, @@ -91,10 +87,10 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, while (tickMarks > 20) tickMarks /= 5; //keep the number of tickmarks from becoming unwieldly - m_peer = new wxMacControl() ; + m_peer = new wxMacControl(this) ; verify_noerr ( CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , value , minValue , maxValue , kControlSliderPointsDownOrRight , tickMarks , true /* liveTracking */ , - wxMacLiveScrollbarActionUPP , m_peer->GetControlRefAddr() ) ); + GetwxMacLiveScrollbarActionProc() , m_peer->GetControlRefAddr() ) ); if(style & wxSL_VERTICAL) { @@ -123,7 +119,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, wxSlider::~wxSlider() { - // this is a special case, as we had to add windows as siblings we are + // this is a special case, as we had to add windows as siblings we are // responsible for their disposal, but only if we are not part of a DestroyAllChildren if ( m_parent && m_parent->IsBeingDeleted() == false ) { @@ -136,7 +132,7 @@ wxSlider::~wxSlider() int wxSlider::GetValue() const { // We may need to invert the value returned by the widget - return MacInvertOrNot( m_peer->GetValue() ) ; + return ValueInvertOrNot( m_peer->GetValue() ) ; } void wxSlider::SetValue(int value) @@ -147,7 +143,7 @@ void wxSlider::SetValue(int value) m_macValueStatic->SetLabel( valuestring ) ; // We only invert for the setting of the actual native widget - m_peer->SetValue( MacInvertOrNot ( value ) ) ; + m_peer->SetValue( ValueInvertOrNot ( value ) ) ; } void wxSlider::SetRange(int minValue, int maxValue) @@ -161,11 +157,11 @@ void wxSlider::SetRange(int minValue, int maxValue) m_peer->SetMaximum( m_rangeMax); if(m_macMinimumStatic) { - value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) ); + value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) ); m_macMinimumStatic->SetLabel(value); } if(m_macMaximumStatic) { - value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) ); + value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) ); m_macMaximumStatic->SetLabel(value); } SetValue(m_rangeMin); @@ -254,7 +250,7 @@ void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart, bo { // Whatever the native value is, we may need to invert it for calling // SetValue and putting the possibly inverted value in the event - SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ; + SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ; SetValue( value ) ; @@ -278,7 +274,7 @@ wxInt32 wxSlider::MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF mevent ) { // Whatever the native value is, we may need to invert it for calling // SetValue and putting the possibly inverted value in the event - SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ; + SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ; SetValue( value ) ; @@ -326,9 +322,9 @@ wxSize wxSlider::DoGetBestSize() const int ht, wd; // Get maximum text label width and height - text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) ); + text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) ); GetTextExtent(text, &textwidth, &textheight); - text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) ); + text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) ); GetTextExtent(text, &wd, &ht); if(ht > textheight) { textheight = ht; @@ -389,9 +385,9 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags) int ht; // Get maximum text label width and height - text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) ); + text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) ); GetTextExtent(text, &minValWidth, &textheight); - text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) ); + text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) ); GetTextExtent(text, &maxValWidth, &ht); if(ht > textheight) { textheight = ht; @@ -433,31 +429,30 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags) m_macValueStatic->Move(GetPosition().x + w, GetPosition().y + 0); } } - - + // yet another hack since this is a composite control - // when wxSlider has it's size hardcoded, we're not allowed to - // change the size. But when the control has labels, we DO need - // to resize the internal Mac control to accomodate the text labels. + // when wxSlider has it's size hardcoded, we're not allowed to + // change the size. But when the control has labels, we DO need + // to resize the internal Mac control to accommodate the text labels. // We need to trick the wxWidgets resize mechanism so that we can - // resize the slider part of the control ONLY. - + // resize the slider part of the control ONLY. + // TODO: Can all of this code go in the conditional wxSL_LABELS block? - + int minWidth; - minWidth = m_minWidth; - - if (GetWindowStyle() & wxSL_LABELS) + minWidth = m_minWidth; + + if (GetWindowStyle() & wxSL_LABELS) { - // make sure we don't allow the entire control to be resized accidently - if (width == GetSize().x) - m_minWidth = -1; - } - //If the control has labels, we still need to call this again because + // make sure we don't allow the entire control to be resized accidently + if (width == GetSize().x) + m_minWidth = -1; + } + //If the control has labels, we still need to call this again because //the labels alter the control's w and h values. wxControl::DoSetSize( x, y , w , h ,sizeFlags ) ; - m_minWidth = minWidth; + m_minWidth = minWidth; } void wxSlider::DoMoveWindow(int x, int y, int width, int height) @@ -466,7 +461,7 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height) } // Common processing to invert slider values based on wxSL_INVERSE -int wxSlider::MacInvertOrNot(int value) const +int wxSlider::ValueInvertOrNot(int value) const { if (m_windowStyle & wxSL_VERTICAL) { @@ -480,10 +475,7 @@ int wxSlider::MacInvertOrNot(int value) const } else // normal logic applies to HORIZONTAL sliders { - if (m_windowStyle & wxSL_INVERSE) - return (m_rangeMax + m_rangeMin) - value; - else - return value; + return wxSliderBase::ValueInvertOrNot(value); } }