]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/spinbutt.cpp
serbase.cpp added to the list of files
[wxWidgets.git] / src / gtk1 / spinbutt.cpp
index 31a244d6c3a8b62cd20faa427f75b1e2e67d1472..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 );
+    }
 }
 
 //-----------------------------------------------------------------------------
@@ -98,7 +103,7 @@ bool wxSpinButton::Create(wxWindow *parent,
     if (new_size.y == -1)
         new_size.y = 30;
 
-    if (!PreCreation( parent, pos, size ) ||
+    if (!PreCreation( parent, pos, new_size ) ||
         !CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
     {
         wxFAIL_MSG( _T("wxXX creation failed") );
@@ -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) )