diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkspinbutton.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 7429efdb1a..162f63588e 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -45,6 +45,8 @@ #define MAX_TEXT_LENGTH 256 #define MAX_TIMER_CALLS 5 #define EPSILON 1e-5 +#define WHEEL_UP_BUTTON 4 +#define WHEEL_DOWN_BUTTON 5 enum { ARG_0, @@ -763,7 +765,19 @@ gtk_spin_button_button_press (GtkWidget *widget, if (!spin->button) { - if (event->window == spin->panel) + if (event->button == WHEEL_UP_BUTTON) + { + if (!GTK_WIDGET_HAS_FOCUS (widget)) + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, spin->adjustment->step_increment); + } + else if (event->button == WHEEL_DOWN_BUTTON) + { + if (!GTK_WIDGET_HAS_FOCUS (widget)) + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, -spin->adjustment->step_increment); + } + else if (event->window == spin->panel) { if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); |