-
- Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
-
- procID = kControlSliderProc + kControlSliderLiveFeedback;
- if(style & wxSL_AUTOTICKS) {
- procID += kControlSliderHasTickMarks;
- }
-
-
- m_macControl = (WXWidget) ::NewControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, "\p", true,
- value, minValue, maxValue, procID, (long) this);
-
- wxASSERT_MSG( (ControlRef) m_macControl != NULL , wxT("No valid mac control") ) ;
-
- ::SetControlAction( (ControlRef) m_macControl , wxMacLiveScrollbarActionUPP ) ;
-
+
+ Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
+
+ //
+ // NB: (RN) Ticks here are sometimes off in the GUI if there
+ // is not as many ticks as there are values
+ //
+ UInt16 tickMarks = 0 ;
+ if ( style & wxSL_AUTOTICKS )
+ tickMarks = (maxValue - minValue) + 1; //+1 for the 0 value
+
+ while (tickMarks > 20)
+ tickMarks /= 5; //keep the number of tickmarks from becoming unwieldly
+
+ m_peer = new wxMacControl() ;
+ verify_noerr ( CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
+ value , minValue , maxValue , kControlSliderPointsDownOrRight , tickMarks , true /* liveTracking */ ,
+ wxMacLiveScrollbarActionUPP , m_peer->GetControlRefAddr() ) );
+
+