summaryrefslogtreecommitdiff
path: root/gtk/gtkspinbutton.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2000-02-18 20:02:24 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-02-18 20:02:24 +0000
commitc8a2382b65120b32277f84394c55c7b51383523b (patch)
tree5fa6f133218b9f19106fb6720f1a7f6258f44476 /gtk/gtkspinbutton.c
parentab1deac87fa395332b73daf8e2e4c893e23be3e4 (diff)
downloadgtk+-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.c49
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);