diff options
author | José Expósito <jose.exposito89@gmail.com> | 2021-09-20 19:59:45 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-08-10 14:23:58 +0000 |
commit | 6ebb38e12e1d096c02e6eee3148552904ff87d81 (patch) | |
tree | 3db8570e90be8a11e04ba776a0d99a638d925d9b /gdk/gdkevents.c | |
parent | 51ca454eef480886c5f5e584e5b8c24631f932ab (diff) | |
download | gtk+-6ebb38e12e1d096c02e6eee3148552904ff87d81.tar.gz |
gdk/events: Set discrete scroll deltas in its constructor
Instead of calculating the discrete scroll deltas in
GtkEventControllerScroll, move that code to the event constructor and
access the precalculated values using gdk_scroll_event_get_deltas.
Refactor, no functional changes.
Diffstat (limited to 'gdk/gdkevents.c')
-rw-r--r-- | gdk/gdkevents.c | 23 |
1 files changed, 23 insertions, 0 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; |