X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0655ad290a99dc0d4e8ea86aec60c7833a53be53..07d4b94c3b5d8876d3c9a5f93048afdd6734fe78:/src/gtk/spinbutt.cpp?ds=sidebyside diff --git a/src/gtk/spinbutt.cpp b/src/gtk/spinbutt.cpp index e4ef0744ed..762d4cc3be 100644 --- a/src/gtk/spinbutt.cpp +++ b/src/gtk/spinbutt.cpp @@ -55,12 +55,9 @@ 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); @@ -68,8 +65,17 @@ static void gtk_spinbutt_callback( GtkWidget *WXUNUSED(widget), wxSpinButton *wi wxSpinEvent event( command, win->GetId()); event.SetPosition( value ); 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 ); + } } //----------------------------------------------------------------------------- @@ -183,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) )