diff options
author | Owen Taylor <otaylor@redhat.com> | 2000-02-18 20:02:24 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2000-02-18 20:02:24 +0000 |
commit | c8a2382b65120b32277f84394c55c7b51383523b (patch) | |
tree | 5fa6f133218b9f19106fb6720f1a7f6258f44476 /gtk/gtkspinbutton.c | |
parent | ab1deac87fa395332b73daf8e2e4c893e23be3e4 (diff) | |
download | gtk+-c8a2382b65120b32277f84394c55c7b51383523b.tar.gz |
Remove OwnerGrabButtonMask from button entries for GDK_BUTTON_PRESS /
Fri Feb 18 14:37:29 2000 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_event_mask_table): Remove
OwnerGrabButtonMask from button entries for
GDK_BUTTON_PRESS / GDK_BUTTON_RELEASE.
* gtk/gtklayout.c (gtk_layout_realize): Always add GDK_SCROLL
to the event mask (which will result in button/press release
being added to the event mask on Unix) so scrolling works
for layouts in scroll windows.
* gdk/gdkevents.h (enum): Fix up GDK_ALL_EVENTS_MASK.
Patch from Anders Carlsson <andersca@picard.andersnet> to add
a scroll event.
* gtk/testgtk.c (scroll_test_scroll): Added an example of mouse wheel
scrolling to the "Test Scrolling" part of testgtk.
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added scroll_event signal.
* gtk/gtkwidget.c: Added "scroll_event" GTK+ signal and matched
it against GDK_SCROLL.
* gtk/gtkrange.c (gtk_range_scroll_event): Updated to use the new
way of mouse wheel scrolling.
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_scroll_event): Likewise.
* gtk/gtkspinbutton.c (gtk_spin_button_scroll): Likewise.
* gtk/gtkmain.c: Removed previous mouse wheel hack.
* gdk/x11/gdkwindow-x11.c (gdk_event_mask_table): Added entry in
gdk_event_mask_table.
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Added
GdkEventScroll handler.
* gdk/gdkevents.h: Added GdkEventScroll structure.
Diffstat (limited to 'gtk/gtkspinbutton.c')
-rw-r--r-- | gtk/gtkspinbutton.c | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 162f63588e..8261e71589 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -45,8 +45,6 @@ #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, @@ -113,6 +111,8 @@ static gint gtk_spin_button_key_press (GtkWidget *widget, GdkEventKey *event); static gint gtk_spin_button_key_release (GtkWidget *widget, GdkEventKey *event); +static gint gtk_spin_button_scroll (GtkWidget *widget, + GdkEventScroll *event); static void gtk_spin_button_activate (GtkEditable *editable); static void gtk_spin_button_snap (GtkSpinButton *spin_button, gfloat val); @@ -235,6 +235,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) widget_class->size_allocate = gtk_spin_button_size_allocate; widget_class->draw = gtk_spin_button_draw; widget_class->expose_event = gtk_spin_button_expose; + widget_class->scroll_event = gtk_spin_button_scroll; widget_class->button_press_event = gtk_spin_button_button_press; widget_class->button_release_event = gtk_spin_button_button_release; widget_class->motion_notify_event = gtk_spin_button_motion_notify; @@ -752,6 +753,36 @@ gtk_spin_button_focus_out (GtkWidget *widget, } static gint +gtk_spin_button_scroll (GtkWidget *widget, + GdkEventScroll *event) +{ + GtkSpinButton *spin; + + g_return_val_if_fail (widget != NULL, FALSE); + g_return_val_if_fail (GTK_IS_SPIN_BUTTON (widget), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + spin = GTK_SPIN_BUTTON (widget); + + if (event->direction == GDK_SCROLL_UP) + { + if (!GTK_WIDGET_HAS_FOCUS (widget)) + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, spin->adjustment->step_increment); + } + else if (event->direction == GDK_SCROLL_DOWN) + { + if (!GTK_WIDGET_HAS_FOCUS (widget)) + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, -spin->adjustment->step_increment); + } + else + return FALSE; + + return TRUE; +} + +static gint gtk_spin_button_button_press (GtkWidget *widget, GdkEventButton *event) { @@ -765,19 +796,7 @@ gtk_spin_button_button_press (GtkWidget *widget, if (!spin->button) { - 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 (event->window == spin->panel) { if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); |