[mutter/gbsneto/cancel-input-actions: 2/3] clutter/click-action: Release when disabling



commit 45f588e75bad61e92fe13b5ce6f3508860baaa5a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Wed Apr 8 12:36:34 2020 -0300

    clutter/click-action: Release when disabling
    
    ClutterClickAction, like other actions, can potentially be disabled
    at any time (that is not during painting). When that happens with
    ClutterClickAction, it must release all timeouts and disconnect from
    the stage's 'capture-event'.
    
    Override ClutterActorMeta.set_enabled and release the click action
    when the action is being disabled.

 clutter/clutter/clutter-click-action.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
---
diff --git a/clutter/clutter/clutter-click-action.c b/clutter/clutter/clutter-click-action.c
index 6b523b033..6e7ea9d01 100644
--- a/clutter/clutter/clutter-click-action.c
+++ b/clutter/clutter/clutter-click-action.c
@@ -467,6 +467,20 @@ clutter_click_action_set_actor (ClutterActorMeta *meta,
   CLUTTER_ACTOR_META_CLASS (clutter_click_action_parent_class)->set_actor (meta, actor);
 }
 
+static void
+clutter_click_action_set_enabled (ClutterActorMeta *meta,
+                                  gboolean          is_enabled)
+{
+  ClutterClickAction *click_action = CLUTTER_CLICK_ACTION (meta);
+  ClutterActorMetaClass *parent_class =
+    CLUTTER_ACTOR_META_CLASS (clutter_click_action_parent_class);
+
+  if (!is_enabled)
+    clutter_click_action_release (click_action);
+
+  parent_class->set_enabled (meta, is_enabled);
+}
+
 static void
 clutter_click_action_set_property (GObject      *gobject,
                                    guint         prop_id,
@@ -546,6 +560,7 @@ clutter_click_action_class_init (ClutterClickActionClass *klass)
   ClutterActorMetaClass *meta_class = CLUTTER_ACTOR_META_CLASS (klass);
 
   meta_class->set_actor = clutter_click_action_set_actor;
+  meta_class->set_enabled = clutter_click_action_set_enabled;
 
   gobject_class->dispose = clutter_click_action_dispose;
   gobject_class->set_property = clutter_click_action_set_property;


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