clapper-app: Do not trigger default scroll handler on GtkRange

In addition to GtkScrolledWindow, when also hovering over GtkRange
subclassing widgets like GtkScale, do not trigger accidentally
default app window scroll handler.

We want the hovered upon widget and only that widget to handle scroll
events in such case.
This commit is contained in:
Rafał Dzięgiel
2024-04-07 20:13:20 +02:00
parent 1327dc23e4
commit b282f3c1d2

View File

@@ -471,11 +471,14 @@ scroll_cb (GtkEventControllerScroll *scroll,
pickup = _pick_pointer_widget (self);
/* We do not want to accidentally allow this controller
* to handle scrolls when hovering over scrolled window */
if (pickup && (GTK_IS_SCROLLED_WINDOW (pickup)
|| gtk_widget_get_ancestor (pickup, GTK_TYPE_SCROLLED_WINDOW)))
return FALSE;
/* We do not want to accidentally allow this controller to handle
* scrolls when hovering over widgets that also handle scroll */
while ((pickup && !CLAPPER_GTK_IS_VIDEO (pickup))) {
if (GTK_IS_SCROLLED_WINDOW (pickup) || GTK_IS_RANGE (pickup))
return FALSE;
pickup = gtk_widget_get_parent (pickup);
}
device = gtk_event_controller_get_current_event_device (GTK_EVENT_CONTROLLER (scroll));