eventcontrollerscroll: Always propagate hold events
authorAlexander Mikhaylenko <alexm@gnome.org>
Sun, 27 Mar 2022 21:05:23 +0000 (01:05 +0400)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 28 Mar 2022 12:04:15 +0000 (12:04 +0000)
Otherwise a stray scroll controller may prevent others from getting hold
events, even if it always propagates scroll events and does absolutely
nothing.

gtk/gtkeventcontrollerscroll.c

index 500993bb8ffa176f7fb2f7a41d930d2ec67dbe83..f40826cf7b85da0020b9051dba3b255f3428a715 100644 (file)
@@ -241,28 +241,26 @@ gtk_event_controller_scroll_get_property (GObject    *object,
     }
 }
 
-static gboolean
+static void
 gtk_event_controller_scroll_begin (GtkEventController *controller)
 {
   GtkEventControllerScroll *scroll = GTK_EVENT_CONTROLLER_SCROLL (controller);
 
   if (scroll->active)
-    return FALSE;
+    return;
 
   g_signal_emit (controller, signals[SCROLL_BEGIN], 0);
   scroll_history_reset (scroll);
   scroll->active = TRUE;
-
-  return TRUE;
 }
 
-static gboolean
+static void
 gtk_event_controller_scroll_end (GtkEventController *controller)
 {
   GtkEventControllerScroll *scroll = GTK_EVENT_CONTROLLER_SCROLL (controller);
 
   if (!scroll->active)
-    return FALSE;
+    return;
 
   g_signal_emit (controller, signals[SCROLL_END], 0);
   scroll->active = FALSE;
@@ -274,8 +272,6 @@ gtk_event_controller_scroll_end (GtkEventController *controller)
       scroll_history_finish (scroll, &vel_x, &vel_y);
       g_signal_emit (controller, signals[DECELERATE], 0, vel_x, vel_y);
     }
-
-  return TRUE;
 }
 
 static gboolean
@@ -298,30 +294,29 @@ gtk_event_controller_scroll_handle_hold_event (GtkEventController *controller,
                                                GdkEvent           *event)
 {
   GtkEventControllerScroll *scroll = GTK_EVENT_CONTROLLER_SCROLL (controller);
-  gboolean handled = GDK_EVENT_PROPAGATE;
   GdkTouchpadGesturePhase phase;
   guint n_fingers = 0;
 
   if (gdk_event_get_event_type (event) != GDK_TOUCHPAD_HOLD)
-    return handled;
+    return GDK_EVENT_PROPAGATE;
 
   n_fingers = gdk_touchpad_event_get_n_fingers (event);
   if (n_fingers != 1 && n_fingers != 2)
-    return handled;
+    return GDK_EVENT_PROPAGATE;
 
   if (scroll->hold_timeout_id != 0)
-    return handled;
+    return GDK_EVENT_PROPAGATE;
 
   phase = gdk_touchpad_event_get_gesture_phase (event);
 
   switch (phase)
     {
     case GDK_TOUCHPAD_GESTURE_PHASE_BEGIN:
-      handled = gtk_event_controller_scroll_begin (controller);
+      gtk_event_controller_scroll_begin (controller);
       break;
 
     case GDK_TOUCHPAD_GESTURE_PHASE_END:
-      handled = gtk_event_controller_scroll_end (controller);
+      gtk_event_controller_scroll_end (controller);
       break;
 
     case GDK_TOUCHPAD_GESTURE_PHASE_CANCEL:
@@ -339,7 +334,7 @@ gtk_event_controller_scroll_handle_hold_event (GtkEventController *controller,
       break;
     }
 
-  return handled;
+  return GDK_EVENT_PROPAGATE;
 }
 
 static gboolean