]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/spinbutt.cpp
Factorize timercmm.cpp code
[wxWidgets.git] / src / gtk1 / spinbutt.cpp
index 1198df9597a402bc00ffa23adda312eba52b5b93..762d4cc3be54b5e710e6a1e2d74349dd4c2a197a 100644 (file)
@@ -55,22 +55,27 @@ static void gtk_spinbutt_callback( GtkWidget *WXUNUSED(widget), wxSpinButton *wi
     wxEventType command = wxEVT_NULL;
 
     float line_step = win->m_adjust->step_increment;
-    float page_step = win->m_adjust->page_increment;
 
     if (fabs(diff-line_step) < sensitivity) command = wxEVT_SCROLL_LINEDOWN;
     else if (fabs(diff+line_step) < sensitivity) command = wxEVT_SCROLL_LINEUP;
-    else if (fabs(diff-page_step) < sensitivity) command = wxEVT_SCROLL_PAGEDOWN;
-    else if (fabs(diff+page_step) < sensitivity) command = wxEVT_SCROLL_PAGEUP;
     else command = wxEVT_SCROLL_THUMBTRACK;
 
     int value = (int)ceil(win->m_adjust->value);
 
     wxSpinEvent event( command, win->GetId());
     event.SetPosition( value );
-    event.SetOrientation( wxVERTICAL );
     event.SetEventObject( win );
-
     win->GetEventHandler()->ProcessEvent( event );
+    
+    /* always send a thumbtrack event */
+    if (command != wxEVT_SCROLL_THUMBTRACK)
+    {
+        command = wxEVT_SCROLL_THUMBTRACK;
+        wxSpinEvent event2( command, win->GetId());
+        event2.SetPosition( value );
+        event2.SetEventObject( win );
+        win->GetEventHandler()->ProcessEvent( event2 );
+    }
 }
 
 //-----------------------------------------------------------------------------
@@ -184,6 +189,10 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
     m_adjust->upper = fmax;
 
     gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" );
+    
+    // these two calls are required due to some bug in GTK
+    Refresh();
+    SetFocus();
 }
 
 void wxSpinButton::OnSize( wxSizeEvent &WXUNUSED(event) )