summaryrefslogtreecommitdiff
path: root/gdk/gdkevents.c
diff options
context:
space:
mode:
authorJosé Expósito <jose.exposito89@gmail.com>2021-09-20 19:59:45 +0200
committerCarlos Garnacho <carlosg@gnome.org>2022-08-10 14:23:58 +0000
commit6ebb38e12e1d096c02e6eee3148552904ff87d81 (patch)
tree3db8570e90be8a11e04ba776a0d99a638d925d9b /gdk/gdkevents.c
parent51ca454eef480886c5f5e584e5b8c24631f932ab (diff)
downloadgtk+-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.c23
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;