X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/41c9a21f8cc72250ee4b0d5230c5f529c0ab0aab..2beae4b5a5785cdf89af79383e062fbe9540b663:/src/mac/spinbutt.cpp?ds=sidebyside

diff --git a/src/mac/spinbutt.cpp b/src/mac/spinbutt.cpp
index 87db4b041a..08151678ac 100644
--- a/src/mac/spinbutt.cpp
+++ b/src/mac/spinbutt.cpp
@@ -27,7 +27,7 @@
 
 #if !USE_SHARED_LIBRARY
     IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
-    IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent);
+    IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent)
 #endif
 
 wxSpinButton::wxSpinButton()
@@ -49,10 +49,10 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
 	
 	MacPreControlCreate( parent , id ,  "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ;
 
-	m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 100, 
+	m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 100, 
 		kControlLittleArrowsProc , (long) this ) ;
 	
-	wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
+	wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
 
 	MacPostControlCreate() ;
 
@@ -90,59 +90,51 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
 {
 	m_min = minVal;
 	m_max = maxVal;
-    SetControlMaximum( m_macControl , maxVal ) ;
-    SetControlMinimum(  m_macControl , minVal ) ;
+    SetControl32BitMaximum( (ControlHandle) m_macControl , maxVal ) ;
+    SetControl32BitMinimum((ControlHandle) m_macControl , minVal ) ;
 }
 
-void wxSpinButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) 
+void wxSpinButton::MacHandleValueChanged( int inc )
 {
-	if ( m_macControl == NULL )
-		return ;
-	
+     
+    wxEventType scrollEvent = wxEVT_NULL;
 	int oldValue = m_value ;
-  wxEventType scrollEvent = wxEVT_NULL;
-  int nScrollInc = 0;
-
-	switch( controlpart )
-	{
-		case kControlUpButtonPart :
-        nScrollInc = 1;
-        scrollEvent = wxEVT_SCROLL_LINEUP;
-			break ;
-		case kControlDownButtonPart :
-        nScrollInc = -1;
-        scrollEvent = wxEVT_SCROLL_LINEDOWN;
-			break ;
-	}
 
-  m_value = m_value + nScrollInc;
+    m_value = oldValue + inc;
 
-  if (m_value < m_min)
-  {
-  	if ( m_windowStyle & wxSP_WRAP )
+    if (m_value < m_min)
+    {
+    if ( m_windowStyle & wxSP_WRAP )
       m_value = m_max;
-  	else
+    else
       m_value = m_min;
-  }
-  
-  if (m_value > m_max)
-  {
-  	if ( m_windowStyle & wxSP_WRAP )
+    }
+
+    if (m_value > m_max)
+    {
+    if ( m_windowStyle & wxSP_WRAP )
       m_value = m_min;
     else
       m_value = m_max;
-  }
-  	
-  wxSpinEvent event(scrollEvent, m_windowId);
+    }
+
+    if ( m_value - oldValue == -1 )
+        scrollEvent = wxEVT_SCROLL_LINEDOWN ;
+    else if ( m_value - oldValue == 1 )
+        scrollEvent = wxEVT_SCROLL_LINEUP ;
+    else
+        scrollEvent = wxEVT_SCROLL_THUMBTRACK ;
+        
+    wxSpinEvent event(scrollEvent, m_windowId);
 
-  event.SetPosition(m_value);
-  event.SetEventObject( this );
-  if ((GetEventHandler()->ProcessEvent( event )) &&
+    event.SetPosition(m_value);
+    event.SetEventObject( this );
+    if ((GetEventHandler()->ProcessEvent( event )) &&
         !event.IsAllowed() )
-  {
-  	m_value = oldValue ;
-  }
-  SetControlValue(  m_macControl , m_value ) ;
+    {
+        m_value = oldValue ;
+    }
+    SetControl32BitValue( (ControlHandle) m_macControl , m_value ) ;
 
     /* always send a thumbtrack event */
     if (scrollEvent != wxEVT_SCROLL_THUMBTRACK)
@@ -155,6 +147,26 @@ void wxSpinButton::MacHandleControlClick( ControlHandle control , SInt16 control
     }
 }
 
+void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) 
+{
+	if ( (ControlHandle) m_macControl == NULL )
+		return ;
+	
+  int nScrollInc = 0;
+
+	switch( controlpart )
+	{
+		case kControlUpButtonPart :
+            nScrollInc = 1;
+			break ;
+		case kControlDownButtonPart :
+            nScrollInc = -1;
+			break ;
+	}
+	MacHandleValueChanged( nScrollInc ) ;
+
+}
+
 // ----------------------------------------------------------------------------
 // size calculation
 // ----------------------------------------------------------------------------