[gdl] Remove public members from GdlDockObject



commit ea5dd182cb80febb4e95a19f2d2c61da943b3d17
Author: SÃbastien Granjoux <seb sfo free fr>
Date:   Sun Aug 5 19:50:39 2012 +0200

    Remove public members from GdlDockObject

 gdl/gdl-dock-item.c        |    4 +-
 gdl/gdl-dock-notebook.c    |    2 +-
 gdl/gdl-dock-object.c      |  242 +++++++++++++++++++++++++++++--------------
 gdl/gdl-dock-object.h      |   59 +++++++----
 gdl/gdl-dock-paned.c       |    3 +-
 gdl/gdl-dock-placeholder.c |    2 +-
 gdl/gdl-dock.c             |    3 +-
 7 files changed, 205 insertions(+), 110 deletions(-)
---
diff --git a/gdl/gdl-dock-item.c b/gdl/gdl-dock-item.c
index 837b92c..b2c44cb 100644
--- a/gdl/gdl-dock-item.c
+++ b/gdl/gdl-dock-item.c
@@ -240,7 +240,6 @@ struct _GdlDockItemClassPrivate {
  * the base class initialization function because this function is called for
  * each derived type.
  */
-
 static gpointer gdl_dock_item_parent_class = NULL;
 
 GType
@@ -357,8 +356,7 @@ gdl_dock_item_class_init (GdlDockItemClass *klass)
     container_class->set_focus_child = gdl_dock_item_set_focus_child;
     gtk_container_class_handle_border_width (container_class);
 
-    dock_object_class->is_compound = FALSE;
-
+    gdl_dock_object_class_set_is_compound (object_class, FALSE);
     dock_object_class->dock_request = gdl_dock_item_dock_request;
     dock_object_class->dock = gdl_dock_item_dock;
     dock_object_class->present = gdl_dock_item_present;
diff --git a/gdl/gdl-dock-notebook.c b/gdl/gdl-dock-notebook.c
index a0705e5..68d693a 100644
--- a/gdl/gdl-dock-notebook.c
+++ b/gdl/gdl-dock-notebook.c
@@ -142,7 +142,7 @@ gdl_dock_notebook_class_init (GdlDockNotebookClass *klass)
     container_class->forall = gdl_dock_notebook_forall;
     container_class->child_type = gdl_dock_notebook_child_type;
 
-    object_class->is_compound = TRUE;
+    gdl_dock_object_class_set_is_compound (object_class, TRUE);
     object_class->dock = gdl_dock_notebook_dock;
     object_class->child_placement = gdl_dock_notebook_child_placement;
     object_class->present = gdl_dock_notebook_present;
diff --git a/gdl/gdl-dock-object.c b/gdl/gdl-dock-object.c
index 74a201d..a6ac628 100644
--- a/gdl/gdl-dock-object.c
+++ b/gdl/gdl-dock-object.c
@@ -55,7 +55,9 @@
 
 /* ----- Private prototypes ----- */
 
-static void     gdl_dock_object_class_init         (GdlDockObjectClass *klass);
+static void    gdl_dock_object_base_class_init    (GdlDockObjectClass *klass);
+static void    gdl_dock_object_class_init         (GdlDockObjectClass *klass);
+static void    gdl_dock_object_init               (GdlDockObject *object);
 
 static void     gdl_dock_object_set_property       (GObject            *g_object,
                                                     guint               prop_id,
@@ -103,6 +105,24 @@ enum {
 
 static guint gdl_dock_object_signals [LAST_SIGNAL] = { 0 };
 
+struct _GdlDockObjectPrivate {
+    guint               automatic : 1;
+    guint               attached : 1;
+    gint                freeze_count;
+
+    GObject            *master;
+    gchar              *name;
+    gchar              *long_name;
+    gchar              *stock_id;
+    GdkPixbuf          *pixbuf_icon;
+
+    gboolean            reduce_pending;
+};
+
+struct _GdlDockObjectClassPrivate {
+    gboolean           is_compound;
+};
+
 struct DockRegisterItem {
 	gchar* nick;
 	gpointer type;
@@ -112,22 +132,65 @@ static GArray *dock_register = NULL;
 
 /* ----- Private interface ----- */
 
-G_DEFINE_TYPE (GdlDockObject, gdl_dock_object, GTK_TYPE_CONTAINER);
+/* It is not possible to use G_DEFINE_TYPE_* macro for GdlDockObject because it
+ * has some class private data. The priv pointer has to be initialized in
+ * the base class initialization function because this function is called for
+ * each derived type.
+ */
+static gpointer gdl_dock_object_parent_class = NULL;
+
+GType
+gdl_dock_object_get_type (void)
+{
+    static GType gtype = 0;
+
+    if (G_UNLIKELY (gtype == 0)) {
+        const GTypeInfo gtype_info = {
+	    sizeof (GdlDockObjectClass),
+	    (GBaseInitFunc) gdl_dock_object_base_class_init,
+	    NULL,
+	    (GClassInitFunc) gdl_dock_object_class_init,
+	    NULL,		/* class_finalize */
+	    NULL,		/* class_data */
+	    sizeof (GdlDockObject),
+	    0,		/* n_preallocs */
+	    (GInstanceInitFunc) gdl_dock_object_init,
+	    NULL,		/* value_table */
+        };
+
+        gtype = g_type_register_static (GTK_TYPE_CONTAINER,
+                                        "GdlDockObject",
+                                        &gtype_info,
+                                        0);
+
+        g_type_add_class_private (gtype, sizeof (GdlDockObjectClassPrivate));
+    }
+
+    return gtype;
+}
+
+static void
+gdl_dock_object_base_class_init (GdlDockObjectClass *klass)
+{
+    klass->priv = G_TYPE_CLASS_GET_PRIVATE (klass, GDL_TYPE_DOCK_OBJECT, GdlDockObjectClassPrivate);
+}
 
 static void
 gdl_dock_object_class_init (GdlDockObjectClass *klass)
 {
-    GObjectClass      *g_object_class;
+    GObjectClass      *object_class;
     GtkWidgetClass    *widget_class;
     GtkContainerClass *container_class;
 
-    g_object_class = G_OBJECT_CLASS (klass);
+    gdl_dock_object_parent_class = g_type_class_peek_parent (klass);
+    
+    object_class = G_OBJECT_CLASS (klass);
     widget_class = GTK_WIDGET_CLASS (klass);
     container_class = GTK_CONTAINER_CLASS (klass);
 
-    g_object_class->set_property = gdl_dock_object_set_property;
-    g_object_class->get_property = gdl_dock_object_get_property;
-    g_object_class->finalize = gdl_dock_object_finalize;
+    object_class->set_property = gdl_dock_object_set_property;
+    object_class->get_property = gdl_dock_object_get_property;
+    object_class->finalize = gdl_dock_object_finalize;
 
     /**
      * GdlDockObject:name:
@@ -136,7 +199,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
      * to recall the object from any other object in the ring
      */
     g_object_class_install_property (
-        g_object_class, PROP_NAME,
+        object_class, PROP_NAME,
         g_param_spec_string (GDL_DOCK_NAME_PROPERTY, _("Name"),
                              _("Unique name for identifying the dock object"),
                              NULL,
@@ -149,7 +212,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
      * A long descriptive name.
      */
     g_object_class_install_property (
-        g_object_class, PROP_LONG_NAME,
+        object_class, PROP_LONG_NAME,
         g_param_spec_string ("long-name", _("Long name"),
                              _("Human readable name for the dock object"),
                              NULL,
@@ -161,7 +224,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
      * A stock id to use for the icon of the dock object.
      */
     g_object_class_install_property (
-        g_object_class, PROP_STOCK_ID,
+        object_class, PROP_STOCK_ID,
         g_param_spec_string ("stock-id", _("Stock Icon"),
                              _("Stock icon for the dock object"),
                              NULL,
@@ -175,7 +238,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
      * Since: 3.3.2
      */
     g_object_class_install_property (
-        g_object_class, PROP_PIXBUF_ICON,
+        object_class, PROP_PIXBUF_ICON,
         g_param_spec_pointer ("pixbuf-icon", _("Pixbuf Icon"),
                               _("Pixbuf icon for the dock object"),
                               G_PARAM_READWRITE));
@@ -186,7 +249,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
      * The master which manages all the objects in a dock ring
      */
     g_object_class_install_property (
-        g_object_class, PROP_MASTER,
+        object_class, PROP_MASTER,
         g_param_spec_object ("master", _("Dock master"),
                              _("Dock master this dock object is bound to"),
                              GDL_TYPE_DOCK_MASTER,
@@ -197,7 +260,7 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
     widget_class->show = gdl_dock_object_show;
     widget_class->hide = gdl_dock_object_hide;
 
-    klass->is_compound = TRUE;
+    klass->priv->is_compound = TRUE;
 
     klass->detach = gdl_dock_object_real_detach;
     klass->reduce = gdl_dock_object_real_reduce;
@@ -247,13 +310,23 @@ gdl_dock_object_class_init (GdlDockObjectClass *klass)
                       GDL_TYPE_DOCK_OBJECT,
                       GDL_TYPE_DOCK_PLACEMENT,
                       G_TYPE_VALUE);
+
+    g_type_class_add_private (object_class, sizeof (GdlDockObjectPrivate));
 }
 
 static void
 gdl_dock_object_init (GdlDockObject *object)
 {
-    object->flags = GDL_DOCK_AUTOMATIC;
-    object->freeze_count = 0;
+    object->priv = G_TYPE_INSTANCE_GET_PRIVATE (object,
+                                                GDL_TYPE_DOCK_OBJECT,
+                                                GdlDockObjectPrivate);
+    
+    object->priv->automatic = TRUE;
+    object->priv->freeze_count = 0;
+#ifndef GDL_DISABLE_DEPRECATED
+    object->flags = 0;
+    object->master = NULL;
+#endif
 }
 
 static void
@@ -299,19 +372,19 @@ gdl_dock_object_get_property  (GObject      *g_object,
 
     switch (prop_id) {
     case PROP_NAME:
-        g_value_set_string (value, object->name);
+        g_value_set_string (value, object->priv->name);
         break;
     case PROP_LONG_NAME:
-        g_value_set_string (value, object->long_name);
+        g_value_set_string (value, object->priv->long_name);
         break;
     case PROP_STOCK_ID:
-        g_value_set_string (value, object->stock_id);
+        g_value_set_string (value, object->priv->stock_id);
         break;
     case PROP_PIXBUF_ICON:
-        g_value_set_pointer (value, object->pixbuf_icon);
+        g_value_set_pointer (value, object->priv->pixbuf_icon);
         break;
     case PROP_MASTER:
-        g_value_set_object (value, object->master);
+        g_value_set_object (value, object->priv->master);
         break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -326,10 +399,10 @@ gdl_dock_object_finalize (GObject *g_object)
 
     object = GDL_DOCK_OBJECT (g_object);
 
-    g_free (object->name);
-    g_free (object->long_name);
-    g_free (object->stock_id);
-    g_free (object->pixbuf_icon);
+    g_free (object->priv->name);
+    g_free (object->priv->long_name);
+    g_free (object->priv->stock_id);
+    g_free (object->priv->pixbuf_icon);
 
     G_OBJECT_CLASS (gdl_dock_object_parent_class)->finalize (g_object);
 }
@@ -356,14 +429,14 @@ gdl_dock_object_destroy (GtkWidget *dock_object)
         gtk_container_foreach (GTK_CONTAINER (object),
                                (GtkCallback) gdl_dock_object_foreach_detach,
                                NULL);
-        object->reduce_pending = FALSE;
+        object->priv->reduce_pending = FALSE;
         gdl_dock_object_thaw (object);
     }
     /* detach ourselves */
     gdl_dock_object_detach (object, FALSE);
 
     /* finally unbind us */
-    if (object->master)
+    if (object->priv->master)
         gdl_dock_object_unbind (object);
 
     GTK_WIDGET_CLASS(gdl_dock_object_parent_class)->destroy (dock_object);
@@ -393,10 +466,7 @@ gdl_dock_object_update_parent_visibility (GdlDockObject *object)
         gtk_container_foreach (GTK_CONTAINER (parent),
                                (GtkCallback) gdl_dock_object_foreach_is_visible,
                                &visible);
-        if (visible)
-                GDL_DOCK_OBJECT_SET_FLAGS (parent, GDL_DOCK_ATTACHED);
-        else
-                GDL_DOCK_OBJECT_UNSET_FLAGS (parent, GDL_DOCK_ATTACHED);
+        parent->priv->attached = visible;
         gtk_widget_set_visible (GTK_WIDGET (parent), visible);
     }
     gdl_dock_object_layout_changed_notify (object);
@@ -415,7 +485,7 @@ gdl_dock_object_foreach_automatic (GdlDockObject *object,
 static void
 gdl_dock_object_show (GtkWidget *widget)
 {
-    GDL_DOCK_OBJECT_SET_FLAGS (widget, GDL_DOCK_ATTACHED);
+    GDL_DOCK_OBJECT (widget)->priv->attached = TRUE;
     GTK_WIDGET_CLASS (gdl_dock_object_parent_class)->show (widget);
 
     /* Update visibility of automatic parents */
@@ -425,7 +495,7 @@ gdl_dock_object_show (GtkWidget *widget)
 static void
 gdl_dock_object_hide (GtkWidget *widget)
 {
-   GDL_DOCK_OBJECT_UNSET_FLAGS (widget, GDL_DOCK_ATTACHED);
+    GDL_DOCK_OBJECT (widget)->priv->attached = FALSE;
    GTK_WIDGET_CLASS (gdl_dock_object_parent_class)->hide (widget);
 
     /* Update visibility of automatic parents */
@@ -449,7 +519,7 @@ gdl_dock_object_real_detach (GdlDockObject *object,
     }
 
     /* detach the object itself */
-    GDL_DOCK_OBJECT_UNSET_FLAGS (object, GDL_DOCK_ATTACHED);
+    object->priv->attached = FALSE;
     parent = gdl_dock_object_get_parent_object (object);
     widget = GTK_WIDGET (object);
     if (gtk_widget_get_parent (widget))
@@ -515,7 +585,7 @@ gdl_dock_object_real_reduce (GdlDockObject *object)
         /* sink the widget, so any automatic floating widget is destroyed */
         g_object_ref_sink (object);
         /* don't reenter */
-        object->reduce_pending = FALSE;
+        object->priv->reduce_pending = FALSE;
         gdl_dock_object_thaw (object);
         if (parent)
             gdl_dock_object_thaw (parent);
@@ -555,13 +625,10 @@ gdl_dock_object_real_present (GdlDockObject *object,
 gboolean
 gdl_dock_object_is_compound (GdlDockObject *object)
 {
-    GdlDockObjectClass *klass;
-
     g_return_val_if_fail (object != NULL, FALSE);
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), FALSE);
 
-    klass = GDL_DOCK_OBJECT_GET_CLASS (object);
-    return klass->is_compound;
+    return GDL_DOCK_OBJECT_GET_CLASS (object)->priv->is_compound;
 }
 
 /**
@@ -625,11 +692,11 @@ gdl_dock_object_freeze (GdlDockObject *object)
 {
     g_return_if_fail (object != NULL);
 
-    if (object->freeze_count == 0) {
+    if (object->priv->freeze_count == 0) {
         g_object_ref (object);   /* dock objects shouldn't be
                                     destroyed if they are frozen */
     }
-    object->freeze_count++;
+    object->priv->freeze_count++;
 }
 
 /**
@@ -644,12 +711,12 @@ void
 gdl_dock_object_thaw (GdlDockObject *object)
 {
     g_return_if_fail (object != NULL);
-    g_return_if_fail (object->freeze_count > 0);
+    g_return_if_fail (object->priv->freeze_count > 0);
 
-    object->freeze_count--;
-    if (object->freeze_count == 0) {
-        if (object->reduce_pending) {
-            object->reduce_pending = FALSE;
+    object->priv->freeze_count--;
+    if (object->priv->freeze_count == 0) {
+        if (object->priv->reduce_pending) {
+            object->priv->reduce_pending = FALSE;
             gdl_dock_object_reduce (object);
         }
         g_object_unref (object);
@@ -672,7 +739,7 @@ gdl_dock_object_is_frozen (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), FALSE);
 
-    return object->freeze_count > 0;
+    return object->priv->freeze_count > 0;
 }
 
 /**
@@ -688,7 +755,7 @@ gdl_dock_object_reduce (GdlDockObject *object)
     g_return_if_fail (object != NULL);
 
     if (gdl_dock_object_is_frozen (object)) {
-        object->reduce_pending = TRUE;
+        object->priv->reduce_pending = TRUE;
         return;
     }
 
@@ -744,14 +811,14 @@ gdl_dock_object_dock (GdlDockObject    *object,
     if (object == requestor)
         return;
 
-    if (!object->master)
+    if (!object->priv->master)
         g_warning (_("Dock operation requested in a non-bound object %p. "
                      "The application might crash"), object);
 
     if (!gdl_dock_object_is_bound (requestor))
-        gdl_dock_object_bind (requestor, object->master);
+        gdl_dock_object_bind (requestor, object->priv->master);
 
-    if (requestor->master != object->master) {
+    if (requestor->priv->master != object->priv->master) {
         g_warning (_("Cannot dock %p to %p because they belong to different masters"),
                    requestor, object);
         return;
@@ -781,7 +848,7 @@ gdl_dock_object_dock (GdlDockObject    *object,
     gdl_dock_object_thaw (object);
 	
     if (gtk_widget_get_visible (GTK_WIDGET (requestor)))
-        GDL_DOCK_OBJECT_SET_FLAGS (requestor, GDL_DOCK_ATTACHED);
+        requestor->priv->attached = TRUE;
 
     /* Update visibility of automatic parents */
     gdl_dock_object_update_parent_visibility (GDL_DOCK_OBJECT (requestor));
@@ -802,19 +869,19 @@ gdl_dock_object_bind (GdlDockObject *object,
     g_return_if_fail (object != NULL && master != NULL);
     g_return_if_fail (GDL_IS_DOCK_MASTER (master));
 
-    if (object->master == master)
+    if (object->priv->master == master)
         /* nothing to do here */
         return;
 
-    if (object->master) {
+    if (object->priv->master) {
         g_warning (_("Attempt to bind to %p an already bound dock object %p "
-                     "(current master: %p)"), master, object, object->master);
+                     "(current master: %p)"), master, object, object->priv->master);
         return;
     }
 
     gdl_dock_master_add (GDL_DOCK_MASTER (master), object);
-    object->master = master;
-    g_object_add_weak_pointer (master, (gpointer *) &object->master);
+    object->priv->master = master;
+    g_object_add_weak_pointer (master, (gpointer *) &object->priv->master);
 
     g_object_notify (G_OBJECT (object), "master");
 }
@@ -835,10 +902,10 @@ gdl_dock_object_unbind (GdlDockObject *object)
     /* detach the object first */
     gdl_dock_object_detach (object, TRUE);
 
-    if (object->master) {
-        GObject *master = object->master;
-        g_object_remove_weak_pointer (master, (gpointer *) &object->master);
-        object->master = NULL;
+    if (object->priv->master) {
+        GObject *master = object->priv->master;
+        g_object_remove_weak_pointer (master, (gpointer *) &object->priv->master);
+        object->priv->master = NULL;
         gdl_dock_master_remove (GDL_DOCK_MASTER (master), object);
         g_object_notify (G_OBJECT (object), "master");
     }
@@ -857,7 +924,7 @@ gboolean
 gdl_dock_object_is_bound (GdlDockObject *object)
 {
     g_return_val_if_fail (object != NULL, FALSE);
-    return (object->master != NULL);
+    return (object->priv->master != NULL);
 }
 
 /**
@@ -875,7 +942,7 @@ gdl_dock_object_get_master (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return object->master;
+    return object->priv->master;
 }
 
 /**
@@ -893,7 +960,7 @@ gdl_dock_object_get_controller (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return gdl_dock_master_get_controller (GDL_DOCK_MASTER (object->master));
+    return gdl_dock_master_get_controller (GDL_DOCK_MASTER (object->priv->master));
 }
 
 /**
@@ -908,8 +975,8 @@ gdl_dock_object_get_controller (GdlDockObject *object)
 void
 gdl_dock_object_layout_changed_notify (GdlDockObject *object)
 {
-    if (object->master)
-        g_signal_emit_by_name (object->master, "layout-changed");
+    if (object->priv->master)
+        g_signal_emit_by_name (object->priv->master, "layout-changed");
 }
 
 
@@ -1018,7 +1085,7 @@ gdl_dock_object_child_placement (GdlDockObject    *object,
 gboolean
 gdl_dock_object_is_closed (GdlDockObject *object)
 {
-    return (object->flags & GDL_DOCK_ATTACHED) == 0; 
+    return !object->priv->attached;
 }
 
 /**
@@ -1037,7 +1104,7 @@ gdl_dock_object_is_automatic (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), FALSE);
 
-    return (object->flags & GDL_DOCK_AUTOMATIC) != 0;
+    return object->priv->automatic;
 }
 
 /**
@@ -1055,7 +1122,7 @@ gdl_dock_object_set_manual (GdlDockObject *object)
 {
     g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
 
-    object->flags &= ~GDL_DOCK_AUTOMATIC;
+    object->priv->automatic = FALSE;
 }
 
 /**
@@ -1073,7 +1140,7 @@ gdl_dock_object_get_name (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return object->name;
+    return object->priv->name;
 }
 
 /**
@@ -1091,8 +1158,8 @@ gdl_dock_object_set_name (GdlDockObject *object,
 {
     g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
 
-    g_free (object->name);
-    object->name = g_strdup (name);
+    g_free (object->priv->name);
+    object->priv->name = g_strdup (name);
 }
 
 /**
@@ -1111,7 +1178,7 @@ gdl_dock_object_get_long_name (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return object->long_name;
+    return object->priv->long_name;
 }
 
 /**
@@ -1130,8 +1197,8 @@ gdl_dock_object_set_long_name (GdlDockObject *object,
 {
     g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
 
-    g_free (object->long_name);
-    object->long_name = g_strdup (name);
+    g_free (object->priv->long_name);
+    object->priv->long_name = g_strdup (name);
 }
 
 /**
@@ -1149,7 +1216,7 @@ gdl_dock_object_get_stock_id (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return object->stock_id;
+    return object->priv->stock_id;
 }
 
 /**
@@ -1167,8 +1234,8 @@ gdl_dock_object_set_stock_id (GdlDockObject *object,
 {
     g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
 
-    g_free (object->stock_id);
-    object->stock_id = g_strdup (stock_id);
+    g_free (object->priv->stock_id);
+    object->priv->stock_id = g_strdup (stock_id);
 }
 
 /**
@@ -1186,7 +1253,7 @@ gdl_dock_object_get_pixbuf (GdlDockObject *object)
 {
     g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
 
-    return object->pixbuf_icon;
+    return object->priv->pixbuf_icon;
 }
 
 /**
@@ -1205,7 +1272,7 @@ gdl_dock_object_set_pixbuf (GdlDockObject *object,
     g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
     g_return_if_fail (icon == NULL || GDK_IS_PIXBUF (icon));
 
-    object->pixbuf_icon =icon;
+    object->priv->pixbuf_icon =icon;
 }
 
 
@@ -1489,3 +1556,20 @@ gdl_dock_object_set_type_for_nick (const gchar *nick,
     return old_type;
 }
 
+/**
+ * gdl_dock_object_class_set_is_compound:
+ * @item: a #GdlDockObjectClass
+ * @is_compound: %TRUE is the dock object contains other objects
+ *
+ * Define in the corresponding kind of dock object can contains children.
+ *    
+ * Since: 3.6
+ */
+void
+gdl_dock_object_class_set_is_compound (GdlDockObjectClass *object_class,
+                                       gboolean            is_compound)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT_CLASS (object_class));
+
+    object_class->priv->is_compound = is_compound;
+}
diff --git a/gdl/gdl-dock-object.h b/gdl/gdl-dock-object.h
index 0153a5f..d8c99b1 100644
--- a/gdl/gdl-dock-object.h
+++ b/gdl/gdl-dock-object.h
@@ -57,6 +57,7 @@ typedef enum {
 #define GDL_DOCK_NAME_PROPERTY    "name"
 #define GDL_DOCK_MASTER_PROPERTY  "master"
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GdlDockObjectFlags:
  * @GDL_DOCK_AUTOMATIC: Object is created and destroyed by the master, not the user
@@ -66,21 +67,28 @@ typedef enum {
  *
  * Described the state of a #GdlDockObject.
  *
- **/
+ * Since 3.6: These flags are available using access function, like
+ * gdl_dock_object_is_automatic() or gdl_dock_object_is_closed().
+ */
 typedef enum {
     GDL_DOCK_AUTOMATIC  = 1 << 0,
     GDL_DOCK_ATTACHED   = 1 << 1,
     GDL_DOCK_IN_REFLOW  = 1 << 2,
     GDL_DOCK_IN_DETACH  = 1 << 3
 } GdlDockObjectFlags;
+#endif
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GDL_DOCK_OBJECT_FLAGS_SHIFT:
  *
  * Minimum shift count to be used for user defined flags, to be stored in
  * #GdlDockObject.flags.
+ * 
+ * Deprecated: 3.6: Use a private flag instead
  */
 #define GDL_DOCK_OBJECT_FLAGS_SHIFT 8
+#endif
 
 /**
  * GdlDockPlacement:
@@ -105,9 +113,11 @@ typedef enum {
     GDL_DOCK_FLOATING
 } GdlDockPlacement;
 
-typedef struct _GdlDockObject      GdlDockObject;
-typedef struct _GdlDockObjectClass GdlDockObjectClass;
-typedef struct _GdlDockRequest     GdlDockRequest;
+typedef struct _GdlDockObject             GdlDockObject;
+typedef struct _GdlDockObjectPrivate      GdlDockObjectPrivate;
+typedef struct _GdlDockObjectClass        GdlDockObjectClass;
+typedef struct _GdlDockObjectClassPrivate GdlDockObjectClassPrivate;
+typedef struct _GdlDockRequest            GdlDockRequest;
 
 /**
  * GdlDockRequest:
@@ -129,24 +139,19 @@ struct _GdlDockRequest {
 
 struct _GdlDockObject {
     GtkContainer        container;
-
-    /* private */
+#ifndef GDL_DISABLE_DEPRECATED
+    /* Just for compiling, these data are not initialized anymore */
     GdlDockObjectFlags  flags;
-    gint                freeze_count;
-
     GObject            *master;
-    gchar              *name;
-    gchar              *long_name;
-    gchar              *stock_id;
-    GdkPixbuf          *pixbuf_icon;
-
-    gboolean            reduce_pending;
+#endif
+    /*< private >*/
+    GdlDockObjectPrivate  *priv;
 };
 
 struct _GdlDockObjectClass {
     GtkContainerClass parent_class;
 
-    gboolean          is_compound;
+    GdlDockObjectClassPrivate *priv;    
 
     void     (* detach)          (GdlDockObject    *object,
                                   gboolean          recursive);
@@ -177,13 +182,17 @@ struct _GdlDockObjectClass {
 
 /* additional macros */
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GDL_DOCK_OBJECT_FLAGS:
  * @obj: A #GdlDockObject
  *
  * Get all flags of #GdlDockObject.
+ *
+ * Deprecated: 3.6: The flags are not accessible anymore.
  */
 #define GDL_DOCK_OBJECT_FLAGS(obj)  (GDL_DOCK_OBJECT (obj)->flags)
+#endif
 
 #ifndef GDL_DISABLE_DEPRECATED
 /**
@@ -195,8 +204,7 @@ struct _GdlDockObjectClass {
  *
  * Deprecated: 3.6: Use gdl_dock_object_is_automatic()
  */
-#define GDL_DOCK_OBJECT_AUTOMATIC(obj) \
-    ((GDL_DOCK_OBJECT_FLAGS (obj) & GDL_DOCK_AUTOMATIC) != 0)
+#define GDL_DOCK_OBJECT_AUTOMATIC(obj) gdl_dock_object_is_automatic (GDL_DOCK_OBJECT (obj))
 #endif
 
 #ifndef GDL_DISABLE_DEPRECATED
@@ -206,10 +214,9 @@ struct _GdlDockObjectClass {
  *
  * Evaluates to %TRUE if the object has a parent.
  *
- * Deprecated: 3.6: Use !gdl_dock_object_is_closed()
+ * Deprecated: 3.6: Use 
  */
-#define GDL_DOCK_OBJECT_ATTACHED(obj) \
-    ((GDL_DOCK_OBJECT_FLAGS (obj) & GDL_DOCK_ATTACHED) != 0)
+#define GDL_DOCK_OBJECT_ATTACHED(obj) (!gdl_dock_object_is_closed(GDL_DOCK_OBJECT (obj)))
 #endif
 
 #ifndef GDL_DISABLE_DEPRECATED
@@ -238,26 +245,34 @@ struct _GdlDockObjectClass {
     ((GDL_DOCK_OBJECT_FLAGS (obj) & GDL_DOCK_IN_DETACH) != 0)
 #endif
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GDL_DOCK_OBJECT_SET_FLAGS:
  * @obj: A #GdlDockObject
  * @flag: One or more #GdlDockObjectFlags
  *
  * Set one or more flags of a dock object.
+ * 
+ * Deprecated: 3.6: This flags are no longer accessible.
  */
 #define GDL_DOCK_OBJECT_SET_FLAGS(obj,flag) \
     G_STMT_START { (GDL_DOCK_OBJECT_FLAGS (obj) |= (flag)); } G_STMT_END
+#endif
 
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GDL_DOCK_OBJECT_UNSET_FLAGS:
  * @obj: A #GdlDockObject
  * @flag: One or more #GdlDockObjectFlags
  *
  * Clear one or more flags of a dock object.
+ * 
+ * Deprecated: 3.6: This flags are no longer accessible.
  */
 #define GDL_DOCK_OBJECT_UNSET_FLAGS(obj,flag) \
     G_STMT_START { (GDL_DOCK_OBJECT_FLAGS (obj) &= ~(flag)); } G_STMT_END
+#endif
 
 #ifndef GDL_DISABLE_DEPRECATED
 /**
@@ -268,7 +283,7 @@ struct _GdlDockObjectClass {
  *
  * Deprecated: 3.6: Use gdl_dock_object_is_frozen()
  */
-#define GDL_DOCK_OBJECT_FROZEN(obj) (GDL_DOCK_OBJECT (obj)->freeze_count > 0)
+#define GDL_DOCK_OBJECT_FROZEN(obj) gdl_dock_object_is_frozen(GDL_DOCK_OBJECT (obj))
 #endif
 
 
@@ -373,7 +388,7 @@ GType                 gdl_dock_object_set_type_for_nick (const gchar *nick,
            G_OBJECT_TYPE_NAME (object), object, \
            G_OBJECT (object)->ref_count, \
            (GTK_IS_OBJECT (object) && g_object_is_floating (object)) ? "(float)" : "", \
-           GDL_IS_DOCK_OBJECT (object) ? GDL_DOCK_OBJECT (object)->freeze_count : -1, \
+           GDL_IS_DOCK_OBJECT (object) ? gdl_dock_object_is_frozen (GDL_DOCK_OBJECT (object)) : -1, \
 	   ##args); } G_STMT_END
 
 
diff --git a/gdl/gdl-dock-paned.c b/gdl/gdl-dock-paned.c
index ed8637e..8cbc095 100644
--- a/gdl/gdl-dock-paned.c
+++ b/gdl/gdl-dock-paned.c
@@ -132,8 +132,7 @@ gdl_dock_paned_class_init (GdlDockPanedClass *klass)
     container_class->forall = gdl_dock_paned_forall;
     container_class->child_type = gdl_dock_paned_child_type;
 
-    object_class->is_compound = TRUE;
-
+    gdl_dock_object_class_set_is_compound (object_class, TRUE);
     object_class->dock_request = gdl_dock_paned_dock_request;
     object_class->dock = gdl_dock_paned_dock;
     object_class->child_placement = gdl_dock_paned_child_placement;
diff --git a/gdl/gdl-dock-placeholder.c b/gdl/gdl-dock-placeholder.c
index 5939ce2..ad4bc62 100644
--- a/gdl/gdl-dock-placeholder.c
+++ b/gdl/gdl-dock-placeholder.c
@@ -155,7 +155,7 @@ gdl_dock_placeholder_class_init (GdlDockPlaceholderClass *klass)
 
     container_class->add = gdl_dock_placeholder_add;
 
-    dock_object_class->is_compound = FALSE;
+    gdl_dock_object_class_set_is_compound (dock_object_class, FALSE);
     dock_object_class->detach = gdl_dock_placeholder_detach;
     dock_object_class->reduce = gdl_dock_placeholder_reduce;
     dock_object_class->dock = gdl_dock_placeholder_dock;
diff --git a/gdl/gdl-dock.c b/gdl/gdl-dock.c
index e3e70dc..e12c522 100644
--- a/gdl/gdl-dock.c
+++ b/gdl/gdl-dock.c
@@ -272,8 +272,7 @@ gdl_dock_class_init (GdlDockClass *klass)
     container_class->child_type = gdl_dock_child_type;
     gtk_container_class_handle_border_width (container_class);
 
-    object_class->is_compound = TRUE;
-
+    gdl_dock_object_class_set_is_compound (object_class, TRUE);
     object_class->detach = gdl_dock_detach;
     object_class->reduce = gdl_dock_reduce;
     object_class->dock_request = gdl_dock_dock_request;



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