diff options
-rw-r--r-- | gdk/gdkevents.c | 23 | ||||
-rw-r--r-- | gtk/gtkeventcontrollerscroll.c | 20 |
2 files changed, 24 insertions, 19 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 0e78d337d2..4b61715575 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -2368,10 +2368,33 @@ gdk_scroll_event_new_discrete (GdkSurface *surface, GdkScrollDirection direction) { GdkScrollEvent *self = gdk_event_alloc (GDK_SCROLL, surface, device, time); + double delta_x = 0, delta_y = 0; + + switch (direction) + { + case GDK_SCROLL_UP: + delta_y = -1; + break; + case GDK_SCROLL_DOWN: + delta_y = 1; + break; + case GDK_SCROLL_LEFT: + delta_x = -1; + break; + case GDK_SCROLL_RIGHT: + delta_x = 1; + break; + case GDK_SCROLL_SMOOTH: + default: + g_assert_not_reached (); + break; + } self->tool = tool != NULL ? g_object_ref (tool) : NULL; self->state = state; self->direction = direction; + self->delta_x = delta_x; + self->delta_y = delta_y; self->unit = GDK_SCROLL_UNIT_WHEEL; return (GdkEvent *) self; diff --git a/gtk/gtkeventcontrollerscroll.c b/gtk/gtkeventcontrollerscroll.c index d78cc01770..e51cb7b241 100644 --- a/gtk/gtkeventcontrollerscroll.c +++ b/gtk/gtkeventcontrollerscroll.c @@ -416,25 +416,7 @@ gtk_event_controller_scroll_handle_event (GtkEventController *controller, } else { - switch (direction) - { - case GDK_SCROLL_UP: - dy -= 1; - break; - case GDK_SCROLL_DOWN: - dy += 1; - break; - case GDK_SCROLL_LEFT: - dx -= 1; - break; - case GDK_SCROLL_RIGHT: - dx += 1; - break; - case GDK_SCROLL_SMOOTH: - default: - g_assert_not_reached (); - break; - } + gdk_scroll_event_get_deltas (event, &dx, &dy); if ((scroll->flags & GTK_EVENT_CONTROLLER_SCROLL_VERTICAL) == 0) dy = 0; |