forked from AuroraMiddleware/gtk
GtkScrolledWindow: Always uninstall scroll cursor when starting deceleration
It could be the case that the last scroll event is received long after any previous scroll event, in this case the last scroll event discards all "old" scroll events, and scroll_history_finish() returns FALSE because there's no time/offset deltas in the scroll history. This is desired so we don't trigger the deceleration effect if there was no effective velocity, we still must reset the installed scroll cursor, so take it out of this if() condition.
This commit is contained in:
parent
c0f66ed1ea
commit
9eb356d9f2
@ -3503,12 +3503,12 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
|
|||||||
priv->scroll_events_overshoot_id = 0;
|
priv->scroll_events_overshoot_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (start_deceleration)
|
||||||
|
uninstall_scroll_cursor (scrolled_window);
|
||||||
|
|
||||||
if (start_deceleration &&
|
if (start_deceleration &&
|
||||||
scroll_history_finish (scrolled_window, &vel_x, &vel_y))
|
scroll_history_finish (scrolled_window, &vel_x, &vel_y))
|
||||||
{
|
gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y);
|
||||||
uninstall_scroll_cursor (scrolled_window);
|
|
||||||
gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y);
|
|
||||||
}
|
|
||||||
else if (_gtk_scrolled_window_get_overshoot (scrolled_window, NULL, NULL))
|
else if (_gtk_scrolled_window_get_overshoot (scrolled_window, NULL, NULL))
|
||||||
{
|
{
|
||||||
priv->scroll_events_overshoot_id =
|
priv->scroll_events_overshoot_id =
|
||||||
|
Loading…
Reference in New Issue
Block a user