[mutter/gbsneto/cancel-input-actions: 2/4] clutter/gesture-action: Cancel gesture when disabling the action



commit d88c3fef56d805ea902f199526810eeec64a2745
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Wed Apr 8 12:40:03 2020 -0300

    clutter/gesture-action: Cancel gesture when disabling the action
    
    Like the click action, it makes sense to cancel the ongoing gesture
    when the action is disabled. Do so by overriding our new friend,
    ClutterActorMeta.set_enabled, and canceling the gesture when disabling
    the action.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1188

 clutter/clutter/clutter-gesture-action.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
---
diff --git a/clutter/clutter/clutter-gesture-action.c b/clutter/clutter/clutter-gesture-action.c
index bd345eacb..636053036 100644
--- a/clutter/clutter/clutter-gesture-action.c
+++ b/clutter/clutter/clutter-gesture-action.c
@@ -556,6 +556,21 @@ clutter_gesture_action_set_actor (ClutterActorMeta *meta,
   meta_class->set_actor (meta, actor);
 }
 
+static void
+clutter_gesture_action_set_enabled (ClutterActorMeta *meta,
+                                    gboolean          is_enabled)
+{
+  ClutterActorMetaClass *meta_class =
+    CLUTTER_ACTOR_META_CLASS (clutter_gesture_action_parent_class);
+  ClutterGestureAction *gesture_action = CLUTTER_GESTURE_ACTION (meta);
+  ClutterGestureActionPrivate *priv = gesture_action->priv;
+
+  if (!is_enabled && priv->in_gesture)
+    cancel_gesture (gesture_action);
+
+  meta_class->set_enabled (meta, is_enabled);
+}
+
 static gboolean
 default_event_handler (ClutterGestureAction *action,
                        ClutterActor *actor)
@@ -654,6 +669,7 @@ clutter_gesture_action_class_init (ClutterGestureActionClass *klass)
   gobject_class->get_property = clutter_gesture_action_get_property;
 
   meta_class->set_actor = clutter_gesture_action_set_actor;
+  meta_class->set_enabled = clutter_gesture_action_set_enabled;
 
   klass->gesture_begin = default_event_handler;
   klass->gesture_progress = default_event_handler;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]