[gdl] Add access function for all members of GdlDockObject



commit 3d570629c1ecfb43c0a1a5b14f077d7551c5809a
Author: SÃbastien Granjoux <seb sfo free fr>
Date:   Fri Aug 3 19:04:08 2012 +0200

    Add access function for all members of GdlDockObject

 gdl/gdl-dock-bar.c         |    4 +-
 gdl/gdl-dock-item.c        |   26 ++----
 gdl/gdl-dock-layout.c      |    2 +-
 gdl/gdl-dock-master.c      |   21 +++--
 gdl/gdl-dock-notebook.c    |    6 +-
 gdl/gdl-dock-object.c      |  217 ++++++++++++++++++++++++++++++++++++++++++--
 gdl/gdl-dock-object.h      |   18 ++++
 gdl/gdl-dock-paned.c       |    3 +-
 gdl/gdl-dock-placeholder.c |    4 +-
 gdl/gdl-dock.c             |   42 +++++----
 10 files changed, 278 insertions(+), 65 deletions(-)
---
diff --git a/gdl/gdl-dock-bar.c b/gdl/gdl-dock-bar.c
index cda5758..6a6f61b 100644
--- a/gdl/gdl-dock-bar.c
+++ b/gdl/gdl-dock-bar.c
@@ -265,7 +265,7 @@ gdl_dock_bar_item_clicked (GtkWidget   *button,
     g_assert (dockbar != NULL);
     g_object_set_data (G_OBJECT (item), "GdlDockBar", NULL);
 
-    controller = gdl_dock_master_get_controller (GDL_DOCK_OBJECT_GET_MASTER (item));
+    controller = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (item));
 
     GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ICONIFIED);
     gdl_dock_item_show_item (item);
@@ -448,7 +448,7 @@ gdl_dock_bar_new (GdlDock *dock)
 
     /* get the master of the given dock */
     if (dock)
-        master = GDL_DOCK_OBJECT_GET_MASTER (dock);
+        master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
 
     return g_object_new (GDL_TYPE_DOCK_BAR,
                          "master", master, NULL);
diff --git a/gdl/gdl-dock-item.c b/gdl/gdl-dock-item.c
index b17253a..90ef1e1 100644
--- a/gdl/gdl-dock-item.c
+++ b/gdl/gdl-dock-item.c
@@ -693,9 +693,7 @@ gdl_dock_item_set_property  (GObject      *g_object,
             item->behavior = g_value_get_flags (value);
 
             if ((old_beh ^ item->behavior) & GDL_DOCK_ITEM_BEH_LOCKED) {
-                if (GDL_DOCK_OBJECT_GET_MASTER (item))
-                    g_signal_emit_by_name (GDL_DOCK_OBJECT_GET_MASTER (item),
-                                           "layout-changed");
+                gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (item));
                 g_object_notify (g_object, "locked");
                 gdl_dock_item_showhide_grip (item);
             }
@@ -715,9 +713,7 @@ gdl_dock_item_set_property  (GObject      *g_object,
                 gdl_dock_item_showhide_grip (item);
                 g_object_notify (g_object, "behavior");
 
-                if (GDL_DOCK_OBJECT_GET_MASTER (item))
-                    g_signal_emit_by_name (GDL_DOCK_OBJECT_GET_MASTER (item),
-                                           "layout-changed");
+                gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (item));
             }
             break;
         }
@@ -1598,7 +1594,7 @@ gdl_dock_item_dock (GdlDockObject    *object,
         gdl_dock_object_freeze (new_parent);
 
         /* bind the new parent to our master, so the following adds work */
-        gdl_dock_object_bind (new_parent, G_OBJECT (GDL_DOCK_OBJECT_GET_MASTER (object)));
+        gdl_dock_object_bind (new_parent, gdl_dock_object_get_master (GDL_DOCK_OBJECT (object)));
 
         /* add the objects */
         if (add_ourselves_first) {
@@ -1810,11 +1806,8 @@ static void
 gdl_dock_item_hide_cb (GtkWidget   *widget,
                        GdlDockItem *item)
 {
-    GdlDockMaster *master;
-
     g_return_if_fail (item != NULL);
 
-    master = GDL_DOCK_OBJECT_GET_MASTER (item);
     gdl_dock_item_hide_item (item);
 }
 
@@ -1998,7 +1991,7 @@ gdl_dock_item_dock_to (GdlDockItem      *item,
             return;
         }
 
-        controller = gdl_dock_master_get_controller (GDL_DOCK_OBJECT_GET_MASTER (item));
+        controller = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (item));
 
         /* FIXME: save previous docking position for later
            re-docking... does this make sense now? */
@@ -2196,7 +2189,7 @@ gdl_dock_item_bind (GdlDockItem *item,
     g_return_if_fail (dock == NULL || GDL_IS_DOCK (dock));
 
     gdl_dock_object_bind (GDL_DOCK_OBJECT (item),
-                          G_OBJECT (GDL_DOCK_OBJECT_GET_MASTER (dock)));
+                          gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
 }
 
 /* convenient function (and to preserve source compat) */
@@ -2267,23 +2260,22 @@ gdl_dock_item_show_item (GdlDockItem *item)
         if (gdl_dock_object_is_bound (GDL_DOCK_OBJECT (item))) {
             GdlDockObject *toplevel;
         
-            toplevel = gdl_dock_master_get_controller
-                            (GDL_DOCK_OBJECT_GET_MASTER (item));
+            toplevel = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (item));
             if (toplevel == GDL_DOCK_OBJECT (item)) return;
         
             if (item->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING) {
                 g_warning("Object %s has no default position and flag GDL_DOCK_ITEM_BEH_NEVER_FLOATING is set.\n",
-                          GDL_DOCK_OBJECT(item)->name);
+                          gdl_dock_object_get_name (GDL_DOCK_OBJECT (item)));
                 return;
             } else if (toplevel) {
                 gdl_dock_object_dock (toplevel, GDL_DOCK_OBJECT (item),
                                       GDL_DOCK_FLOATING, NULL);
             } else
-                g_warning("There is no toplevel window. GdlDockItem %s cannot be shown.\n", GDL_DOCK_OBJECT(item)->name);
+                g_warning("There is no toplevel window. GdlDockItem %s cannot be shown.\n", gdl_dock_object_get_name (GDL_DOCK_OBJECT (item)));
                 return;
         } else
             g_warning("GdlDockItem %s is not bound. It cannot be shown.\n",
-                      GDL_DOCK_OBJECT(item)->name);
+                      gdl_dock_object_get_name (GDL_DOCK_OBJECT (item)));
             return;
     }
 
diff --git a/gdl/gdl-dock-layout.c b/gdl/gdl-dock-layout.c
index 9b91591..e015ba3 100644
--- a/gdl/gdl-dock-layout.c
+++ b/gdl/gdl-dock-layout.c
@@ -556,7 +556,7 @@ gdl_dock_layout_new (GdlDock *dock)
 
     /* get the master of the given dock */
     if (dock)
-        master = GDL_DOCK_OBJECT_GET_MASTER (dock);
+        master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
 
     return g_object_new (GDL_TYPE_DOCK_LAYOUT,
                          "master", master,
diff --git a/gdl/gdl-dock-master.c b/gdl/gdl-dock-master.c
index f616b5d..7b431b4 100644
--- a/gdl/gdl-dock-master.c
+++ b/gdl/gdl-dock-master.c
@@ -272,11 +272,11 @@ _gdl_dock_master_remove (GdlDockObject *object,
                                           0, 0, NULL, NULL, master);
 
     /* unref the object from the hash if it's there */
-    if (object->name) {
+    if (gdl_dock_object_get_name (object) != NULL) {
         GdlDockObject *found_object;
-        found_object = g_hash_table_lookup (master->dock_objects, object->name);
+        found_object = g_hash_table_lookup (master->dock_objects, gdl_dock_object_get_name (object));
         if (found_object == object) {
-            g_hash_table_remove (master->dock_objects, object->name);
+            g_hash_table_remove (master->dock_objects, gdl_dock_object_get_name (object));
             g_object_unref (object);
         }
     }
@@ -531,7 +531,7 @@ gdl_dock_master_drag_motion (GdlDockItem *item,
         gdk_window_get_user_data (window, (gpointer) &widget);
         if (GTK_IS_WIDGET (widget)) {
             while (widget && (!GDL_IS_DOCK (widget) ||
-	           GDL_DOCK_OBJECT_GET_MASTER (widget) != master))
+	          gdl_dock_object_get_master (GDL_DOCK_OBJECT (widget)) != G_OBJECT (master)))
                 widget = gtk_widget_get_parent (widget);
             if (widget) {
                 gint win_w, win_h;
@@ -804,20 +804,23 @@ gdl_dock_master_add (GdlDockMaster *master,
         GdlDockObject *found_object;
 
         /* create a name for the object if it doesn't have one */
-        if (!object->name)
+        if (gdl_dock_object_get_name (object) == NULL) {
             /* directly set the name, since it's a construction only
                property */
-            object->name = g_strdup_printf ("__dock_%u", master->priv->number++);
+            gchar *name = g_strdup_printf ("__dock_%u", master->priv->number++);
+            gdl_dock_object_set_name (object, name);
+            g_free (name);
+        }
 
         /* add the object to our hash list */
-        if ((found_object = g_hash_table_lookup (master->dock_objects, object->name))) {
+        if ((found_object = g_hash_table_lookup (master->dock_objects, gdl_dock_object_get_name (object)))) {
             g_warning (_("master %p: unable to add object %p[%s] to the hash.  "
                          "There already is an item with that name (%p)."),
-                       master, object, object->name, found_object);
+                       master, object, gdl_dock_object_get_name (object), found_object);
         }
         else {
             g_object_ref_sink (object);
-            g_hash_table_insert (master->dock_objects, g_strdup (object->name), object);
+            g_hash_table_insert (master->dock_objects, g_strdup (gdl_dock_object_get_name (object)), object);
         }
     }
 
diff --git a/gdl/gdl-dock-notebook.c b/gdl/gdl-dock-notebook.c
index f32c350..0232fdf 100644
--- a/gdl/gdl-dock-notebook.c
+++ b/gdl/gdl-dock-notebook.c
@@ -283,10 +283,8 @@ gdl_dock_notebook_switch_page_cb (GtkNotebook     *nb,
     notebook = GDL_DOCK_NOTEBOOK (data);
     current_page = gtk_notebook_get_current_page (nb);
 
-    if (GDL_DOCK_ITEM_USER_ACTION (notebook) &&
-        GDL_DOCK_OBJECT (notebook)->master)
-        g_signal_emit_by_name (GDL_DOCK_OBJECT (notebook)->master,
-                               "layout-changed");
+    if (GDL_DOCK_ITEM_USER_ACTION (notebook))
+        gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (notebook));
 
     /* Signal that the old dock has been deselected */
     current_item = GDL_DOCK_ITEM (gtk_notebook_get_nth_page (nb, current_page));
diff --git a/gdl/gdl-dock-object.c b/gdl/gdl-dock-object.c
index 61b17ce..975a64b 100644
--- a/gdl/gdl-dock-object.c
+++ b/gdl/gdl-dock-object.c
@@ -266,19 +266,16 @@ gdl_dock_object_set_property  (GObject      *g_object,
 
     switch (prop_id) {
     case PROP_NAME:
-        g_free (object->name);
-        object->name = g_value_dup_string (value);
+        gdl_dock_object_set_name (object, g_value_get_string (value));   
         break;
     case PROP_LONG_NAME:
-        g_free (object->long_name);
-        object->long_name = g_value_dup_string (value);
+        gdl_dock_object_set_long_name (object, g_value_get_string (value));   
         break;
     case PROP_STOCK_ID:
-        g_free (object->stock_id);
-        object->stock_id = g_value_dup_string (value);
+        gdl_dock_object_set_stock_id (object, g_value_get_string (value));   
         break;
     case PROP_PIXBUF_ICON:
-        object->pixbuf_icon = g_value_get_pointer (value);
+        gdl_dock_object_set_pixbuf (object,  g_value_get_pointer (value));   
         break;
     case PROP_MASTER:
         if (g_value_get_object (value))
@@ -402,8 +399,7 @@ gdl_dock_object_update_parent_visibility (GdlDockObject *object)
                 GDL_DOCK_OBJECT_UNSET_FLAGS (parent, GDL_DOCK_ATTACHED);
         gtk_widget_set_visible (GTK_WIDGET (parent), visible);
     }
-    if (object->master)
-        g_signal_emit_by_name (object->master, "layout-changed");
+    gdl_dock_object_layout_changed_notify (object);
 }
 
 static void
@@ -865,6 +861,59 @@ gdl_dock_object_is_bound (GdlDockObject *object)
 }
 
 /**
+ * gdl_dock_object_get_master:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves the master of the object.
+ *
+ * Return value: (transfer none): a #GdlDockMaster object
+ *
+ * Since: 3.6
+ */
+GObject *
+gdl_dock_object_get_master (GdlDockObject *object)
+{
+    g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
+
+    return object->master;
+}
+
+/**
+ * gdl_dock_object_get_controller:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves the controller of the object.
+ *
+ * Return value: (transfer none): a #GdlDockObject object
+ *
+ * Since: 3.6
+ */
+GdlDockObject *
+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));
+}
+
+/**
+ * gdl_dock_object_layout_changed_notify:
+ * @object: a #GdlDockObject
+ *
+ * Emits the #GdlDockMaster::layout-changed signal on the master of the object
+ * if existing.
+ *
+ * Since: 3.6
+ **/
+void
+gdl_dock_object_layout_changed_notify (GdlDockObject *object)
+{
+    if (object->master)
+        g_signal_emit_by_name (object->master, "layout-changed");
+}
+
+
+/**
  * gdl_dock_object_reorder:
  * @object: A #GdlDockObject
  * @child: The child widget to reorder
@@ -1009,6 +1058,156 @@ gdl_dock_object_set_manual (GdlDockObject *object)
     object->flags &= ~GDL_DOCK_AUTOMATIC;
 }
 
+/**
+ * gdl_dock_object_get_name:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves the name of the object. This name is used to identify the object.
+ *
+ * Return value: the name of the object.
+ *
+ * Since: 3.6
+ */
+const gchar *
+gdl_dock_object_get_name (GdlDockObject *object)
+{
+    g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
+
+    return object->name;
+}
+
+/**
+ * gdl_dock_object_set_name:
+ * @object: a #GdlDockObject
+ * @name: a name for the object
+ *
+ * Set the name of the object used to identify it.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_object_set_name (GdlDockObject *object,
+                          const gchar *name)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
+
+    g_free (object->name);
+    object->name = g_strdup (name);
+}
+
+/**
+ * gdl_dock_object_get_long_name:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves the long name of the object. This name is an human readable string
+ * which can be displayed in the user interface.
+ *
+ * Return value: the name of the object.
+ *
+ * Since: 3.6
+ */
+const gchar *
+gdl_dock_object_get_long_name (GdlDockObject *object)
+{
+    g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
+
+    return object->long_name;
+}
+
+/**
+ * gdl_dock_object_set_long_name:
+ * @object: a #GdlDockObject
+ * @name: a name for the object
+ *
+ * Set the long name of the object. This name is an human readable string
+ * which can be displayed in the user interface.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_object_set_long_name (GdlDockObject *object,
+                               const gchar *name)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
+
+    g_free (object->long_name);
+    object->long_name = g_strdup (name);
+}
+
+/**
+ * gdl_dock_object_get_stock_id:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves the a stock id used as the object icon.
+ *
+ * Return value: A stock id corresponding to the object icon.
+ *
+ * Since: 3.6
+ */
+const gchar *
+gdl_dock_object_get_stock_id (GdlDockObject *object)
+{
+    g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
+
+    return object->stock_id;
+}
+
+/**
+ * gdl_dock_object_set_stock_id:
+ * @object: a #GdlDockObject
+ * @stock_id: a stock id
+ *
+ * Set an icon for the dock object using a stock id.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_object_set_stock_id (GdlDockObject *object,
+                              const gchar *stock_id)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
+
+    g_free (object->stock_id);
+    object->stock_id = g_strdup (stock_id);
+}
+
+/**
+ * gdl_dock_object_get_pixbuf:
+ * @object: a #GdlDockObject
+ *
+ * Retrieves a pixbuf used as the dock object icon.
+ *
+ * Return value: (transfer none): icon for dock object
+ *
+ * Since: 3.6
+ */
+GdkPixbuf *
+gdl_dock_object_get_pixbuf (GdlDockObject *object)
+{
+    g_return_val_if_fail (GDL_IS_DOCK_OBJECT (object), NULL);
+
+    return object->pixbuf_icon;
+}
+
+/**
+ * gdl_dock_object_set_pixbuf:
+ * @object: a #GdlDockObject
+ * @icon: (allow-none): a icon or %NULL
+ *
+ * Set a icon for a dock object using a #GdkPixbuf.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_object_set_pixbuf (GdlDockObject *object,
+                            GdkPixbuf *icon)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
+    g_return_if_fail (icon == NULL || GDK_IS_PIXBUF (icon));
+
+    object->pixbuf_icon =icon;
+}
+
 
 
 /* Dock param type functions
diff --git a/gdl/gdl-dock-object.h b/gdl/gdl-dock-object.h
index 877d247..0153a5f 100644
--- a/gdl/gdl-dock-object.h
+++ b/gdl/gdl-dock-object.h
@@ -130,6 +130,7 @@ struct _GdlDockRequest {
 struct _GdlDockObject {
     GtkContainer        container;
 
+    /* private */
     GdlDockObjectFlags  flags;
     gint                freeze_count;
 
@@ -301,6 +302,9 @@ void           gdl_dock_object_bind              (GdlDockObject    *object,
                                                   GObject          *master);
 void           gdl_dock_object_unbind            (GdlDockObject    *object);
 gboolean       gdl_dock_object_is_bound          (GdlDockObject    *object);
+GObject       *gdl_dock_object_get_master        (GdlDockObject    *object);
+GdlDockObject *gdl_dock_object_get_controller    (GdlDockObject    *object);
+void           gdl_dock_object_layout_changed_notify (GdlDockObject *object);
 
 gboolean       gdl_dock_object_reorder           (GdlDockObject    *object,
                                                   GdlDockObject    *child,
@@ -319,6 +323,20 @@ gboolean       gdl_dock_object_is_closed         (GdlDockObject    *object);
 gboolean       gdl_dock_object_is_automatic      (GdlDockObject    *object);
 void           gdl_dock_object_set_manual        (GdlDockObject    *object);
 
+const gchar   *gdl_dock_object_get_name          (GdlDockObject    *object);
+void           gdl_dock_object_set_name          (GdlDockObject    *object,
+                                                  const gchar      *name);
+const gchar   *gdl_dock_object_get_long_name     (GdlDockObject    *object);
+void           gdl_dock_object_set_long_name     (GdlDockObject    *object,
+                                                  const gchar      *name);
+const gchar   *gdl_dock_object_get_stock_id      (GdlDockObject    *object);
+void           gdl_dock_object_set_stock_id      (GdlDockObject    *object,
+                                                  const gchar      *stock_id);
+GdkPixbuf     *gdl_dock_object_get_pixbuf        (GdlDockObject    *object);
+void           gdl_dock_object_set_pixbuf        (GdlDockObject    *object,
+                                                  GdkPixbuf        *icon);
+
+
 /* other types */
 
 /* this type derives from G_TYPE_STRING and is meant to be the basic
diff --git a/gdl/gdl-dock-paned.c b/gdl/gdl-dock-paned.c
index bbdf16a..52cdd28 100644
--- a/gdl/gdl-dock-paned.c
+++ b/gdl/gdl-dock-paned.c
@@ -185,8 +185,7 @@ gdl_dock_paned_button_cb (GtkWidget      *widget,
             GDL_DOCK_OBJECT_UNSET_FLAGS (user_data, GDL_DOCK_USER_ACTION);
             if (paned->position_changed) {
                 /* emit pending layout changed signal to track separator position */
-                if (GDL_DOCK_OBJECT (paned)->master)
-                    g_signal_emit_by_name (GDL_DOCK_OBJECT (paned)->master, "layout-changed");
+                gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (paned));
                 paned->position_changed = FALSE;
             }
         }
diff --git a/gdl/gdl-dock-placeholder.c b/gdl/gdl-dock-placeholder.c
index 15124ab..b7910b5 100644
--- a/gdl/gdl-dock-placeholder.c
+++ b/gdl/gdl-dock-placeholder.c
@@ -516,7 +516,7 @@ gdl_dock_placeholder_dock (GdlDockObject    *object,
         }
         
         /* dock the item as a floating of the controller */
-        toplevel = gdl_dock_master_get_controller (GDL_DOCK_OBJECT_GET_MASTER (ph));
+        toplevel = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (ph));
         gdl_dock_object_dock (toplevel, requestor,
                               GDL_DOCK_FLOATING, NULL);
     }
@@ -684,7 +684,7 @@ detach_cb (GdlDockObject *object,
 #endif
         /* the toplevel was detached: we attach ourselves to the
            controller with an initial placement of floating */
-        new_host = gdl_dock_master_get_controller (GDL_DOCK_OBJECT_GET_MASTER (ph));
+        new_host = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (ph));
         
         /*
         ph->priv->placement_stack = g_slist_prepend (
diff --git a/gdl/gdl-dock.c b/gdl/gdl-dock.c
index 2dbd625..e3d213a 100644
--- a/gdl/gdl-dock.c
+++ b/gdl/gdl-dock.c
@@ -350,7 +350,7 @@ gdl_dock_constructor (GType                  type,
         GdlDockMaster *master;
 
         /* create a master for the dock if none was provided in the construction */
-        master = GDL_DOCK_OBJECT_GET_MASTER (GDL_DOCK_OBJECT (dock));
+        master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
         if (!master) {
             gdl_dock_object_set_manual (GDL_DOCK_OBJECT (dock));
             master = g_object_new (GDL_TYPE_DOCK_MASTER, NULL);
@@ -416,8 +416,8 @@ gdl_dock_set_property  (GObject      *object,
             dock->priv->floating = g_value_get_boolean (value);
             break;
         case PROP_DEFAULT_TITLE:
-            if (GDL_DOCK_OBJECT (object)->master)
-                g_object_set (GDL_DOCK_OBJECT (object)->master,
+            if (gdl_dock_object_get_master (GDL_DOCK_OBJECT (object)) != NULL)
+                g_object_set (gdl_dock_object_get_master (GDL_DOCK_OBJECT (object)),
                               "default-title", g_value_get_string (value),
                               NULL);
             break;
@@ -468,9 +468,9 @@ gdl_dock_get_property  (GObject      *object,
             g_value_set_boolean (value, dock->priv->floating);
             break;
         case PROP_DEFAULT_TITLE:
-            if (GDL_DOCK_OBJECT (object)->master) {
+            if (gdl_dock_object_get_master (GDL_DOCK_OBJECT (object)) != NULL) {
                 gchar *default_title;
-                g_object_get (GDL_DOCK_OBJECT (object)->master,
+                g_object_get (gdl_dock_object_get_master (GDL_DOCK_OBJECT (object)),
                               "default-title", &default_title,
                               NULL);
 
@@ -529,11 +529,11 @@ gdl_dock_set_title (GdlDock *dock)
     if (!dock->priv->window)
         return;
 
-    if (!dock->priv->auto_title && object->long_name) {
-        title = object->long_name;
+    if (!dock->priv->auto_title && gdl_dock_object_get_long_name (object)) {
+        title = g_strdup (gdl_dock_object_get_long_name (object));
     }
-    else if (object->master) {
-        g_object_get (object->master, "default-title", &title, NULL);
+    else if (gdl_dock_object_get_master (object) != NULL) {
+        g_object_get (G_OBJECT (gdl_dock_object_get_master (object)), "default-title", &title, NULL);
     }
 
     if (!title && dock->root) {
@@ -544,7 +544,7 @@ gdl_dock_set_title (GdlDock *dock)
         /* set a default title in the long_name */
         dock->priv->auto_title = TRUE;
         title = g_strdup_printf (
-            _("Dock #%d"), GDL_DOCK_MASTER (object->master)->dock_number++);
+            _("Dock #%d"), GDL_DOCK_MASTER (gdl_dock_object_get_master (object))->dock_number++);
     }
 
     gtk_window_set_title (GTK_WINDOW (dock->priv->window), title);
@@ -713,6 +713,7 @@ static void
 gdl_dock_show (GtkWidget *widget)
 {
     GdlDock *dock;
+    GdlDockMaster *master;
 
     g_return_if_fail (widget != NULL);
     g_return_if_fail (GDL_IS_DOCK (widget));
@@ -723,8 +724,9 @@ gdl_dock_show (GtkWidget *widget)
     if (dock->priv->floating && dock->priv->window)
         gtk_widget_show (dock->priv->window);
 
-    if (GDL_DOCK_IS_CONTROLLER (dock)) {
-        gdl_dock_master_foreach_toplevel (GDL_DOCK_OBJECT_GET_MASTER (dock),
+    master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
+    if (GDL_DOCK (gdl_dock_master_get_controller (master)) == dock) {
+        gdl_dock_master_foreach_toplevel (master,
                                           FALSE, (GFunc) gdl_dock_foreach_automatic,
                                           gtk_widget_show);
     }
@@ -734,6 +736,7 @@ static void
 gdl_dock_hide (GtkWidget *widget)
 {
     GdlDock *dock;
+    GdlDockMaster *master;
 
     g_return_if_fail (widget != NULL);
     g_return_if_fail (GDL_IS_DOCK (widget));
@@ -744,8 +747,9 @@ gdl_dock_hide (GtkWidget *widget)
     if (dock->priv->floating && dock->priv->window)
         gtk_widget_hide (dock->priv->window);
 
-    if (GDL_DOCK_IS_CONTROLLER (dock)) {
-        gdl_dock_master_foreach_toplevel (GDL_DOCK_OBJECT_GET_MASTER (dock),
+    master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
+    if (GDL_DOCK (gdl_dock_master_get_controller (master)) == dock) {
+        gdl_dock_master_foreach_toplevel (master,
                                           FALSE, (GFunc) gdl_dock_foreach_automatic,
                                           gtk_widget_hide);
     }
@@ -1120,7 +1124,7 @@ gdl_dock_new_from (GdlDock  *original,
     g_return_val_if_fail (original != NULL, NULL);
 
     new_dock = g_object_new (GDL_TYPE_DOCK,
-                             "master", GDL_DOCK_OBJECT_GET_MASTER (original),
+                             "master", gdl_dock_object_get_master (GDL_DOCK_OBJECT (original)),
                              "floating", floating,
                              NULL);
     gdl_dock_object_set_manual (GDL_DOCK_OBJECT (new_dock));
@@ -1303,7 +1307,7 @@ gdl_dock_add_item (GdlDock          *dock,
     g_return_if_fail (item != NULL);
 
     /* Check if a placeholder widget already exist in the same dock */
-    placeholder = gdl_dock_master_get_object (GDL_DOCK_OBJECT_GET_MASTER (dock), GDL_DOCK_OBJECT (item)->name);
+    placeholder = gdl_dock_master_get_object (GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock))), gdl_dock_object_get_name (GDL_DOCK_OBJECT (item)));
     if ((placeholder != GDL_DOCK_OBJECT (item)) && (placeholder != NULL)) {
         if (gdl_dock_object_get_toplevel (placeholder) == dock) {
             parent = gdl_dock_object_get_parent_object (placeholder);
@@ -1375,7 +1379,7 @@ gdl_dock_add_floating_item (GdlDock        *dock,
     g_return_if_fail (item != NULL);
 
     new_dock = GDL_DOCK (g_object_new (GDL_TYPE_DOCK,
-                                       "master", GDL_DOCK_OBJECT_GET_MASTER (dock),
+                                       "master", gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)),
                                        "floating", TRUE,
                                        "width", width,
                                        "height", height,
@@ -1415,7 +1419,7 @@ gdl_dock_get_item_by_name (GdlDock     *dock,
     g_return_val_if_fail (dock != NULL && name != NULL, NULL);
 
     /* proxy the call to our master */
-    found = gdl_dock_master_get_object (GDL_DOCK_OBJECT_GET_MASTER (dock), name);
+    found = gdl_dock_master_get_object (GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock))), name);
 
     return (found && GDL_IS_DOCK_ITEM (found)) ? GDL_DOCK_ITEM (found) : NULL;
 }
@@ -1437,7 +1441,7 @@ gdl_dock_get_named_items (GdlDock *dock)
 
     g_return_val_if_fail (dock != NULL, NULL);
 
-    gdl_dock_master_foreach (GDL_DOCK_OBJECT_GET_MASTER (dock),
+    gdl_dock_master_foreach (GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock))),
                              (GFunc) _gdl_dock_foreach_build_list, &list);
 
     return list;



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