75 GdkEventScroll* scroll_event,
77 g_return_if_fail(FL_IS_SCROLLING_MANAGER(
self));
79 GdkEvent*
event =
reinterpret_cast<GdkEvent*
>(scroll_event);
81 guint event_time = gdk_event_get_time(
event);
82 gdouble event_x = 0.0, event_y = 0.0;
83 gdk_event_get_coords(
event, &event_x, &event_y);
84 gdouble scroll_delta_x = 0.0, scroll_delta_y = 0.0;
85 GdkScrollDirection event_direction = GDK_SCROLL_SMOOTH;
86 if (gdk_event_get_scroll_direction(
event, &event_direction)) {
87 if (event_direction == GDK_SCROLL_UP) {
90 }
else if (event_direction == GDK_SCROLL_DOWN) {
93 }
else if (event_direction == GDK_SCROLL_LEFT) {
96 }
else if (event_direction == GDK_SCROLL_RIGHT) {
101 gdk_event_get_scroll_deltas(
event, &scroll_delta_x, &scroll_delta_y);
106 const int kScrollOffsetMultiplier = 53;
107 scroll_delta_x *= kScrollOffsetMultiplier * scale_factor;
108 scroll_delta_y *= kScrollOffsetMultiplier * scale_factor;
110 if (gdk_device_get_source(gdk_event_get_source_device(
event)) ==
111 GDK_SOURCE_TOUCHPAD) {
112 scroll_delta_x *= -1;
113 scroll_delta_y *= -1;
114 if (gdk_event_is_scroll_stop_event(
event)) {
117 event_x * scale_factor, event_y * scale_factor,
kPanZoomEnd,
121 if (!
self->pan_started) {
126 event_x * scale_factor, event_y * scale_factor,
kPanZoomStart, 0, 0,
130 self->pan_x += scroll_delta_x;
131 self->pan_y += scroll_delta_y;
138 self->last_x = event_x * scale_factor;
139 self->last_y = event_y * scale_factor;
146 event_y * scale_factor, scroll_delta_x, scroll_delta_y, 0);