scrolledwindow: Ignore 0/0 scroll events when possibly cancelling animation

These should be used eventually to start kinetic scrolling, so should definitely
be ignored on cancellation.

https://bugzilla.gnome.org/show_bug.cgi?id=747133
This commit is contained in:
Carlos Garnacho 2015-03-31 20:24:07 +02:00
parent 361a0574dc
commit b1696436d1

View File

@ -1074,7 +1074,18 @@ captured_event_cb (GtkWidget *widget,
if (event->type == GDK_SCROLL) if (event->type == GDK_SCROLL)
{ {
gtk_scrolled_window_cancel_deceleration (sw); gdouble dx, dy;
/* The libinput driver may generate a final event with dx=dy=0
* after scrolling finished, this is usually an indication that
* the deceleration animation just started, so we definitely
* shouldn't cancel it.
*/
if (event->scroll.direction != GDK_SCROLL_SMOOTH ||
(gdk_event_get_scroll_deltas (event, &dx, &dy) &&
((int) dx != 0 || (int) dy != 0)))
gtk_scrolled_window_cancel_deceleration (sw);
return GDK_EVENT_PROPAGATE; return GDK_EVENT_PROPAGATE;
} }