[gtk/shortcuts-rebased-again: 2/6] event controller: Add a name property



commit 9dc64a625ce43b71b833b7de4a7dfebc16f558f4
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jun 19 11:09:38 2019 +0000

    event controller: Add a name property
    
    This helps identifying controllers in the inspector.

 gtk/gtkeventcontroller.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkeventcontroller.h |  6 ++++++
 2 files changed, 58 insertions(+)
---
diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c
index 11e4372517..48f66c189b 100644
--- a/gtk/gtkeventcontroller.c
+++ b/gtk/gtkeventcontroller.c
@@ -46,6 +46,7 @@ enum {
   PROP_WIDGET = 1,
   PROP_PROPAGATION_PHASE,
   PROP_PROPAGATION_LIMIT,
+  PROP_NAME,
   LAST_PROP
 };
 
@@ -56,6 +57,7 @@ struct _GtkEventControllerPrivate
   GtkWidget *widget;
   GtkPropagationPhase phase;
   GtkPropagationLimit limit;
+  char *name;
 };
 
 G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GtkEventController, gtk_event_controller, G_TYPE_OBJECT)
@@ -130,6 +132,7 @@ gtk_event_controller_set_property (GObject      *object,
                                    GParamSpec   *pspec)
 {
   GtkEventController *self = GTK_EVENT_CONTROLLER (object);
+  GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self);
 
   switch (prop_id)
     {
@@ -141,6 +144,11 @@ gtk_event_controller_set_property (GObject      *object,
       gtk_event_controller_set_propagation_limit (self,
                                                   g_value_get_enum (value));
       break;
+    case PROP_NAME:
+      g_free (priv->name);
+      priv->name = g_value_dup_string (value);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -166,11 +174,25 @@ gtk_event_controller_get_property (GObject    *object,
     case PROP_PROPAGATION_LIMIT:
       g_value_set_enum (value, priv->limit);
       break;
+    case PROP_NAME:
+      g_value_set_string (value, priv->name);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
 }
 
+static void
+gtk_event_controller_finalize (GObject *object)
+{
+  GtkEventController *self = GTK_EVENT_CONTROLLER (object);
+  GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self);
+  
+  g_free (priv->name);
+
+  G_OBJECT_CLASS (gtk_event_controller_parent_class)->finalize (object);
+}
+
 static void
 gtk_event_controller_class_init (GtkEventControllerClass *klass)
 {
@@ -181,6 +203,7 @@ gtk_event_controller_class_init (GtkEventControllerClass *klass)
   klass->filter_event = gtk_event_controller_filter_event_default;
   klass->handle_event = gtk_event_controller_handle_event_default;
 
+  object_class->finalize = gtk_event_controller_finalize;
   object_class->set_property = gtk_event_controller_set_property;
   object_class->get_property = gtk_event_controller_get_property;
 
@@ -222,6 +245,13 @@ gtk_event_controller_class_init (GtkEventControllerClass *klass)
                          GTK_LIMIT_SAME_NATIVE,
                          GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
 
+  properties[PROP_NAME] =
+      g_param_spec_string ("name",
+                           P_("Name"),
+                           P_("Name for this controller"),
+                           NULL,
+                           GTK_PARAM_READWRITE);
+
   g_object_class_install_properties (object_class, LAST_PROP, properties);
 }
 
@@ -393,3 +423,25 @@ gtk_event_controller_set_propagation_limit (GtkEventController  *controller,
 
   g_object_notify_by_pspec (G_OBJECT (controller), properties[PROP_PROPAGATION_LIMIT]);
 }
+
+const char *
+gtk_event_controller_get_name (GtkEventController *controller)
+{
+  GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (controller);
+
+  g_return_val_if_fail (GTK_IS_EVENT_CONTROLLER (controller), NULL);
+
+  return priv->name;
+}
+
+void
+gtk_event_controller_set_name (GtkEventController *controller,
+                               const char         *name)
+{
+  GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (controller);
+
+  g_return_if_fail (GTK_IS_EVENT_CONTROLLER (controller));
+
+  g_free (priv->name);
+  priv->name = g_strdup (priv->name);
+}
diff --git a/gtk/gtkeventcontroller.h b/gtk/gtkeventcontroller.h
index 963f440e6a..e5a999961a 100644
--- a/gtk/gtkeventcontroller.h
+++ b/gtk/gtkeventcontroller.h
@@ -65,6 +65,12 @@ GtkPropagationLimit gtk_event_controller_get_propagation_limit (GtkEventControll
 GDK_AVAILABLE_IN_ALL
 void                gtk_event_controller_set_propagation_limit (GtkEventController  *controller,
                                                                 GtkPropagationLimit  limit);
+GDK_AVAILABLE_IN_ALL
+const char *        gtk_event_controller_get_name              (GtkEventController *controller);
+GDK_AVAILABLE_IN_ALL
+void                gtk_event_controller_set_name              (GtkEventController *controller,
+                                                                const char         *name);
+
 G_END_DECLS
 
 #endif /* __GTK_EVENT_CONTROLLER_H__ */


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