[gtk+] Remove priv pointer from GtkStackSwitcher



commit d137f74fe9cc3dfcd0087e9342b5f51f87f3aeb5
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Sep 21 23:36:05 2013 -0400

    Remove priv pointer from GtkStackSwitcher
    
    This is a new widget, so lets avoid the unnecessary
    priv pointer while we still can.

 gtk/gtkstackswitcher.c |   69 +++++++++++++++++++++++++++++++++--------------
 gtk/gtkstackswitcher.h |    4 ---
 2 files changed, 48 insertions(+), 25 deletions(-)
---
diff --git a/gtk/gtkstackswitcher.c b/gtk/gtkstackswitcher.c
index aba8613..b8e008e 100644
--- a/gtk/gtkstackswitcher.c
+++ b/gtk/gtkstackswitcher.c
@@ -41,6 +41,7 @@
  * The GtkStackSwitcher widget was added in 3.10.
  */
 
+typedef struct _GtkStackSwitcherPrivate GtkStackSwitcherPrivate;
 struct _GtkStackSwitcherPrivate
 {
   GtkStack *stack;
@@ -62,7 +63,6 @@ gtk_stack_switcher_init (GtkStackSwitcher *switcher)
   GtkStackSwitcherPrivate *priv;
 
   priv = gtk_stack_switcher_get_instance_private (switcher);
-  switcher->priv = priv;
 
   priv->stack = NULL;
   priv->buttons = g_hash_table_new (g_direct_hash, g_direct_equal);
@@ -84,11 +84,14 @@ on_button_clicked (GtkWidget        *widget,
                    GtkStackSwitcher *self)
 {
   GtkWidget *child;
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
 
-  if (!self->priv->in_child_changed)
+  if (!priv->in_child_changed)
     {
       child = g_object_get_data (G_OBJECT (widget), "stack-child");
-      gtk_stack_set_visible_child (self->priv->stack, child);
+      gtk_stack_set_visible_child (priv->stack, child);
     }
 }
 
@@ -142,8 +145,11 @@ update_button (GtkStackSwitcher *self,
 {
   gchar *title;
   gchar *icon_name;
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
 
-  gtk_container_child_get (GTK_CONTAINER (self->priv->stack), widget,
+  gtk_container_child_get (GTK_CONTAINER (priv->stack), widget,
                            "title", &title,
                            "icon-name", &icon_name,
                            NULL);
@@ -167,8 +173,11 @@ on_title_icon_updated (GtkWidget        *widget,
                        GtkStackSwitcher *self)
 {
   GtkWidget *button;
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
 
-  button = g_hash_table_lookup (self->priv->buttons, widget);
+  button = g_hash_table_lookup (priv->buttons, widget);
   update_button (self, widget, button);
 }
 
@@ -179,10 +188,13 @@ on_position_updated (GtkWidget        *widget,
 {
   GtkWidget *button;
   gint position;
+  GtkStackSwitcherPrivate *priv;
 
-  button = g_hash_table_lookup (self->priv->buttons, widget);
+  priv = gtk_stack_switcher_get_instance_private (self);
 
-  gtk_container_child_get (GTK_CONTAINER (self->priv->stack), widget,
+  button = g_hash_table_lookup (priv->buttons, widget);
+
+  gtk_container_child_get (GTK_CONTAINER (priv->stack), widget,
                            "position", &position,
                            NULL);
 
@@ -195,6 +207,9 @@ add_child (GtkStackSwitcher *self,
 {
   GtkWidget *button;
   GList *group;
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
 
   button = gtk_radio_button_new (NULL);
   gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
@@ -216,7 +231,7 @@ add_child (GtkStackSwitcher *self,
   g_signal_connect (widget, "child-notify::icon-name", G_CALLBACK (on_title_icon_updated), self);
   g_signal_connect (widget, "child-notify::position", G_CALLBACK (on_position_updated), self);
 
-  g_hash_table_insert (self->priv->buttons, widget, button);
+  g_hash_table_insert (priv->buttons, widget, button);
 }
 
 static void
@@ -229,7 +244,10 @@ foreach_stack (GtkWidget        *widget,
 static void
 populate_switcher (GtkStackSwitcher *self)
 {
-  gtk_container_foreach (GTK_CONTAINER (self->priv->stack), (GtkCallback)foreach_stack, self);
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
+  gtk_container_foreach (GTK_CONTAINER (priv->stack), (GtkCallback)foreach_stack, self);
 }
 
 static void
@@ -239,14 +257,17 @@ on_child_changed (GtkWidget        *widget,
 {
   GtkWidget *child;
   GtkWidget *button;
+  GtkStackSwitcherPrivate *priv;
+
+  priv = gtk_stack_switcher_get_instance_private (self);
 
   child = gtk_stack_get_visible_child (GTK_STACK (widget));
-  button = g_hash_table_lookup (self->priv->buttons, child);
+  button = g_hash_table_lookup (priv->buttons, child);
   if (button != NULL)
     {
-      self->priv->in_child_changed = TRUE;
+      priv->in_child_changed = TRUE;
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-      self->priv->in_child_changed = FALSE;
+      priv->in_child_changed = FALSE;
     }
 }
 
@@ -264,17 +285,20 @@ on_stack_child_removed (GtkContainer     *container,
                         GtkStackSwitcher *self)
 {
   GtkWidget *button;
+  GtkStackSwitcherPrivate *priv;
 
-  button = g_hash_table_lookup (self->priv->buttons, widget);
+  priv = gtk_stack_switcher_get_instance_private (self);
+  button = g_hash_table_lookup (priv->buttons, widget);
   gtk_container_remove (GTK_CONTAINER (self), button);
-  g_hash_table_remove (self->priv->buttons, widget);
+  g_hash_table_remove (priv->buttons, widget);
 }
 
 static void
 disconnect_stack_signals (GtkStackSwitcher *switcher)
 {
-  GtkStackSwitcherPrivate *priv = switcher->priv;
+  GtkStackSwitcherPrivate *priv;
 
+  priv = gtk_stack_switcher_get_instance_private (switcher);
   g_signal_handlers_disconnect_by_func (priv->stack, on_stack_child_added, switcher);
   g_signal_handlers_disconnect_by_func (priv->stack, on_stack_child_removed, switcher);
   g_signal_handlers_disconnect_by_func (priv->stack, on_child_changed, switcher);
@@ -284,8 +308,9 @@ disconnect_stack_signals (GtkStackSwitcher *switcher)
 static void
 connect_stack_signals (GtkStackSwitcher *switcher)
 {
-  GtkStackSwitcherPrivate *priv = switcher->priv;
+  GtkStackSwitcherPrivate *priv;
 
+  priv = gtk_stack_switcher_get_instance_private (switcher);
   g_signal_connect_after (priv->stack, "add",
                           G_CALLBACK (on_stack_child_added), switcher);
   g_signal_connect_after (priv->stack, "remove",
@@ -312,10 +337,9 @@ gtk_stack_switcher_set_stack (GtkStackSwitcher *switcher,
   GtkStackSwitcherPrivate *priv;
 
   g_return_if_fail (GTK_IS_STACK_SWITCHER (switcher));
-  if (stack)
-    g_return_if_fail (GTK_IS_STACK (stack));
+  g_return_if_fail (GTK_IS_STACK (stack) || stack == NULL);
 
-  priv = switcher->priv;
+  priv = gtk_stack_switcher_get_instance_private (switcher);
 
   if (priv->stack == stack)
     return;
@@ -354,9 +378,11 @@ gtk_stack_switcher_set_stack (GtkStackSwitcher *switcher,
 GtkStack *
 gtk_stack_switcher_get_stack (GtkStackSwitcher *switcher)
 {
+  GtkStackSwitcherPrivate *priv;
   g_return_val_if_fail (GTK_IS_STACK_SWITCHER (switcher), NULL);
 
-  return switcher->priv->stack;
+  priv = gtk_stack_switcher_get_instance_private (switcher);
+  return priv->stack;
 }
 
 static void
@@ -366,8 +392,9 @@ gtk_stack_switcher_get_property (GObject      *object,
                                  GParamSpec   *pspec)
 {
   GtkStackSwitcher *switcher = GTK_STACK_SWITCHER (object);
-  GtkStackSwitcherPrivate *priv = switcher->priv;
+  GtkStackSwitcherPrivate *priv;
 
+  priv = gtk_stack_switcher_get_instance_private (switcher);
   switch (prop_id)
     {
     case PROP_STACK:
diff --git a/gtk/gtkstackswitcher.h b/gtk/gtkstackswitcher.h
index da52f3a..402b837 100644
--- a/gtk/gtkstackswitcher.h
+++ b/gtk/gtkstackswitcher.h
@@ -32,15 +32,11 @@ G_BEGIN_DECLS
 #define GTK_STACK_SWITCHER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_STACK_SWITCHER, 
GtkStackSwitcherClass))
 
 typedef struct _GtkStackSwitcher              GtkStackSwitcher;
-typedef struct _GtkStackSwitcherPrivate       GtkStackSwitcherPrivate;
 typedef struct _GtkStackSwitcherClass         GtkStackSwitcherClass;
 
 struct _GtkStackSwitcher
 {
   GtkBox widget;
-
-  /*< private >*/
-  GtkStackSwitcherPrivate *priv;
 };
 
 struct _GtkStackSwitcherClass


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