[gtk+/wip/actor: 39/42] xxx: actor



commit f2e04eed7e3e555517d4ec2d1e65325f0ac62e45
Author: Benjamin Otte <otte redhat com>
Date:   Tue Dec 18 12:35:41 2012 +0100

    xxx: actor

 gtk/actors/gtkactor.c        |   54 +++++++++++++++++++++++++++++++++++++++--
 gtk/actors/gtkactorprivate.h |    6 ++++
 2 files changed, 57 insertions(+), 3 deletions(-)
---
diff --git a/gtk/actors/gtkactor.c b/gtk/actors/gtkactor.c
index 8ee5ee9..4c8cbb2 100644
--- a/gtk/actors/gtkactor.c
+++ b/gtk/actors/gtkactor.c
@@ -24,11 +24,12 @@
 #include "gtkactorprivate.h"
 #include "gtkdebug.h"
 #include "gtkintl.h"
-#include "actors/gtklayoutmanagerprivate.h"
+#include "gtkmarshalers.h"
 #include "gtkprivate.h"
 #include "gtksizerequestcacheprivate.h"
 #include "gtktypebuiltins.h"
 #include "gtkwidget.h"
+#include "actors/gtklayoutmanagerprivate.h"
 
 struct _GtkActorPrivate {
   SizeRequestCache requests;
@@ -98,7 +99,15 @@ enum
   PROP_LAST
 };
 
+enum {
+  ACTOR_ADDED,
+  ACTOR_REMOVED,
+
+  LAST_SIGNAL
+};
+
 static GParamSpec *obj_props[PROP_LAST];
+static guint       actor_signals[LAST_SIGNAL] = { 0 };
 
 G_DEFINE_TYPE (GtkActor, _gtk_actor, G_TYPE_INITIALLY_UNOWNED)
 
@@ -643,6 +652,45 @@ _gtk_actor_class_init (GtkActorClass *klass)
                          GTK_TYPE_ACTOR,
                          GTK_PARAM_READABLE);
 
+  /**
+   * GtkActor::actor-added:
+   * @actor: the actor which received the signal
+   * @child: the new child that has been added to @actor
+   *
+   * The ::actor-added signal is emitted each time a child
+   * has been added to @actor.
+   *
+   * Since: 0.4
+   */
+  actor_signals[ACTOR_ADDED] =
+    g_signal_new (I_("actor-added"),
+                  G_TYPE_FROM_CLASS (object_class),
+                  G_SIGNAL_RUN_FIRST,
+                  G_STRUCT_OFFSET (GtkActorClass, actor_added),
+                  NULL, NULL,
+                  _gtk_marshal_VOID__OBJECT,
+                  G_TYPE_NONE, 1,
+                  GTK_TYPE_ACTOR);
+  /**
+   * GtkActor::actor-removed:
+   * @actor: the actor which received the signal
+   * @child: the child that has been removed from @actor
+   *
+   * The ::actor-removed signal is emitted each time a child
+   * is removed from @actor.
+   *
+   * Since: 0.4
+   */
+  actor_signals[ACTOR_REMOVED] =
+    g_signal_new (I_("actor-removed"),
+                  G_TYPE_FROM_CLASS (object_class),
+                  G_SIGNAL_RUN_FIRST,
+                  G_STRUCT_OFFSET (GtkActorClass, actor_removed),
+                  NULL, NULL,
+                  _gtk_marshal_VOID__OBJECT,
+                  G_TYPE_NONE, 1,
+                  GTK_TYPE_ACTOR);
+
   g_object_class_install_properties (object_class, PROP_LAST, obj_props);
 
   g_type_class_add_private (klass, sizeof (GtkActorPrivate));
@@ -1118,7 +1166,7 @@ gtk_actor_add_child_internal (GtkActor              *self,
       _gtk_actor_queue_relayout (child->priv->parent);
     }
 
-  g_signal_emit_by_name (self, "actor-added", child);
+  g_signal_emit (self, actor_signals[ACTOR_ADDED], 0, child);
 
   if (old_first_child != self->priv->first_child)
     g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_FIRST_CHILD]);
@@ -1540,7 +1588,7 @@ gtk_actor_remove_child_internal (GtkActor *self,
   GTK_ACTOR_GET_CLASS (child)->parent_set (child, self);
 
   /* we need to emit the signal before dropping the reference */
-  g_signal_emit_by_name (self, "actor-removed", child);
+  g_signal_emit (self, actor_signals[ACTOR_REMOVED], 0, child);
 
   if (old_first != self->priv->first_child)
     g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_FIRST_CHILD]);
diff --git a/gtk/actors/gtkactorprivate.h b/gtk/actors/gtkactorprivate.h
index 949b9dd..f19fbad 100644
--- a/gtk/actors/gtkactorprivate.h
+++ b/gtk/actors/gtkactorprivate.h
@@ -85,6 +85,12 @@ struct _GtkActorClass
   void                  (* screen_changed)       (GtkActor                 *self,
                                                   GdkScreen                *new_screen,
                                                   GdkScreen                *old_screen);
+
+  /* signals */
+  void                  (* actor_added)          (GtkActor                 *self,
+                                                  GtkActor                 *child);
+  void                  (* actor_removed)        (GtkActor                 *self,
+                                                  GtkActor                 *child);
 };
 
 /**



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