[gdl] Deprecated GDL_DOCK_AUTOMATIC



commit 871f9730e0ca92a06b317cdb61065e9c56f2a503
Author: SÃbastien Granjoux <seb sfo free fr>
Date:   Fri Aug 3 14:30:27 2012 +0200

    Deprecated GDL_DOCK_AUTOMATIC

 gdl/gdl-dock-item.c     |    6 +++---
 gdl/gdl-dock-layout.c   |    2 +-
 gdl/gdl-dock-master.c   |   14 +++++++-------
 gdl/gdl-dock-notebook.c |    7 ++++---
 gdl/gdl-dock-object.c   |   42 ++++++++++++++++++++++++++++++++++++++++--
 gdl/gdl-dock-object.h   |    7 +++++++
 gdl/gdl-dock-paned.c    |    7 ++++---
 gdl/gdl-dock.c          |   10 +++++-----
 8 files changed, 71 insertions(+), 24 deletions(-)
---
diff --git a/gdl/gdl-dock-item.c b/gdl/gdl-dock-item.c
index 9cd23da..c25abb4 100644
--- a/gdl/gdl-dock-item.c
+++ b/gdl/gdl-dock-item.c
@@ -1899,7 +1899,7 @@ gdl_dock_item_new (const gchar         *name,
                                         "long-name", long_name,
                                         "behavior", behavior,
                                         NULL));
-    GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (item));
     gtk_widget_show (GTK_WIDGET (item));
 
     return GTK_WIDGET (item);
@@ -1931,7 +1931,7 @@ gdl_dock_item_new_with_stock (const gchar         *name,
                                         "stock-id", stock_id,
                                         "behavior", behavior,
                                         NULL));
-    GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_AUTOMATIC);
+   gdl_dock_object_set_manual (GDL_DOCK_OBJECT (item));
 
     return GTK_WIDGET (item);
 }
@@ -1965,7 +1965,7 @@ gdl_dock_item_new_with_pixbuf_icon (const gchar         *name,
                                         "behavior", behavior,
                                         NULL));
 
-    GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (item));
     gdl_dock_item_set_tablabel (item, gtk_label_new (long_name));
 
     return GTK_WIDGET (item);
diff --git a/gdl/gdl-dock-layout.c b/gdl/gdl-dock-layout.c
index cc51944..9b91591 100644
--- a/gdl/gdl-dock-layout.c
+++ b/gdl/gdl-dock-layout.c
@@ -361,7 +361,7 @@ gdl_dock_layout_setup_object (GdlDockMaster *master,
            other objects are bound */
         object = g_object_newv (object_type, n_params, params);
         if (object_name) {
-            GDL_DOCK_OBJECT_UNSET_FLAGS (object, GDL_DOCK_AUTOMATIC);
+            gdl_dock_object_set_manual (GDL_DOCK_OBJECT (object));
             gdl_dock_master_add (master, object);
         }
     }
diff --git a/gdl/gdl-dock-master.c b/gdl/gdl-dock-master.c
index 724d017..4b3b7d8 100644
--- a/gdl/gdl-dock-master.c
+++ b/gdl/gdl-dock-master.c
@@ -250,7 +250,7 @@ _gdl_dock_master_remove (GdlDockObject *object,
                probably a non-floating and manual */
             last = g_list_last (master->toplevel_docks);
             while (last) {
-                if (!GDL_DOCK_OBJECT_AUTOMATIC (last->data)) {
+                if (!gdl_dock_object_is_automatic (last->data)) {
                     new_controller = GDL_DOCK_OBJECT (last->data);
                     break;
                 }
@@ -737,7 +737,7 @@ item_dock_cb (GdlDockObject    *object,
      * assumed that object will not change its visibility... for the
      * requestor, however, could mean that it's being shown */
     if (!GDL_DOCK_OBJECT_IN_REFLOW (requestor) &&
-        !GDL_DOCK_OBJECT_AUTOMATIC (requestor)) {
+        !gdl_dock_object_is_automatic (requestor)) {
         if (!master->priv->idle_layout_changed_id)
             master->priv->idle_layout_changed_id =
                 g_idle_add (idle_emit_layout_changed, master);
@@ -755,7 +755,7 @@ item_detach_cb (GdlDockObject *object,
     g_return_if_fail (master && GDL_IS_DOCK_MASTER (master));
 
     if (!GDL_DOCK_OBJECT_IN_REFLOW (object) &&
-        !GDL_DOCK_OBJECT_AUTOMATIC (object)) {
+        !gdl_dock_object_is_automatic (object)) {
         if (!master->priv->idle_layout_changed_id)
             master->priv->idle_layout_changed_id =
                 g_idle_add (idle_emit_layout_changed, master);
@@ -800,7 +800,7 @@ gdl_dock_master_add (GdlDockMaster *master,
 {
     g_return_if_fail (master != NULL && object != NULL);
 
-    if (!GDL_DOCK_OBJECT_AUTOMATIC (object)) {
+    if (!gdl_dock_object_is_automatic (object)) {
         GdlDockObject *found_object;
 
         /* create a name for the object if it doesn't have one */
@@ -873,7 +873,7 @@ gdl_dock_master_add (GdlDockMaster *master,
 
         /* post a layout_changed emission if the item is not automatic
          * (since it should be added to the items model) */
-        if (!GDL_DOCK_OBJECT_AUTOMATIC (object)) {
+        if (!gdl_dock_object_is_automatic (object)) {
             if (!master->priv->idle_layout_changed_id)
                 master->priv->idle_layout_changed_id =
                     g_idle_add (idle_emit_layout_changed, master);
@@ -913,7 +913,7 @@ gdl_dock_master_remove (GdlDockMaster *master,
 
     /* post a layout_changed emission if the item is not automatic
      * (since it should be removed from the items model) */
-    if (!GDL_DOCK_OBJECT_AUTOMATIC (object)) {
+    if (!gdl_dock_object_is_automatic (object)) {
         if (!master->priv->idle_layout_changed_id)
             master->priv->idle_layout_changed_id =
                 g_idle_add (idle_emit_layout_changed, master);
@@ -1031,7 +1031,7 @@ gdl_dock_master_set_controller (GdlDockMaster *master,
     g_return_if_fail (master != NULL);
 
     if (new_controller) {
-        if (GDL_DOCK_OBJECT_AUTOMATIC (new_controller))
+        if (gdl_dock_object_is_automatic (new_controller))
             g_warning (_("The new dock controller %p is automatic.  Only manual "
                          "dock objects should be named controller."), new_controller);
 
diff --git a/gdl/gdl-dock-notebook.c b/gdl/gdl-dock-notebook.c
index 51867ef..f32c350 100644
--- a/gdl/gdl-dock-notebook.c
+++ b/gdl/gdl-dock-notebook.c
@@ -516,8 +516,9 @@ gdl_dock_notebook_reorder (GdlDockObject    *object,
 /**
  * gdl_dock_notebook_new:
  *
- * Creates a new GDL notebook. This widget is normally created and destroyed
- * automatically when needed by the master.
+ * Creates a new manual #GdlDockNotebook widget. This function is seldom useful as
+ * such widget is normally created and destroyed automatically when needed by
+ * the master.
  *
  * Returns: The newly created #GdlDockNotebook.
  */
@@ -527,7 +528,7 @@ gdl_dock_notebook_new (void)
     GdlDockNotebook *notebook;
 
     notebook = GDL_DOCK_NOTEBOOK (g_object_new (GDL_TYPE_DOCK_NOTEBOOK, NULL));
-    GDL_DOCK_OBJECT_UNSET_FLAGS (notebook, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (notebook));
 
     return GTK_WIDGET (notebook);
 }
diff --git a/gdl/gdl-dock-object.c b/gdl/gdl-dock-object.c
index 4883c6d..38e32ee 100644
--- a/gdl/gdl-dock-object.c
+++ b/gdl/gdl-dock-object.c
@@ -389,7 +389,7 @@ gdl_dock_object_update_parent_visibility (GdlDockObject *object)
     g_return_if_fail (object != NULL);
 
     parent = gdl_dock_object_get_parent_object (object);
-    if (parent && GDL_DOCK_OBJECT_AUTOMATIC (parent))
+    if (parent && gdl_dock_object_is_automatic (parent))
     {
         gboolean visible = FALSE;
 
@@ -412,7 +412,7 @@ gdl_dock_object_foreach_automatic (GdlDockObject *object,
 {
     void (* function) (GtkWidget *) = user_data;
 
-    if (GDL_DOCK_OBJECT_AUTOMATIC (object))
+    if (gdl_dock_object_is_automatic (object))
         (* function) (GTK_WIDGET (object));
 }
 
@@ -958,6 +958,44 @@ gdl_dock_object_is_closed (GdlDockObject *object)
     return (object->flags & GDL_DOCK_ATTACHED) == 0; 
 }
 
+/**
+ * gdl_dock_object_is_automatic:
+ * @object: a #GdlDockObject
+ *
+ * Determine if an object is managed by the dock master, such object is
+ * destroyed automatically when it is not needed anymore.
+ *
+ * Return value: %TRUE if the object is managed automatically by the dock master.
+ *
+ * Since: 3.6
+ */
+gboolean
+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;
+}
+
+/**
+ * gdl_dock_object_set_manual:
+ * @object: a #GdlDockObject
+ *
+ * A #GdlDockObject is managed by default by the dock master, use this function
+ * to make it a manual object if you want to manage the destruction of the
+ * object.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_object_set_manual (GdlDockObject *object)
+{
+    g_return_if_fail (GDL_IS_DOCK_OBJECT (object));
+
+    object->flags &= ~GDL_DOCK_AUTOMATIC;
+}
+
+
 
 /* Dock param type functions
  *---------------------------------------------------------------------------*/
diff --git a/gdl/gdl-dock-object.h b/gdl/gdl-dock-object.h
index 6e67a4c..6067285 100644
--- a/gdl/gdl-dock-object.h
+++ b/gdl/gdl-dock-object.h
@@ -184,15 +184,19 @@ struct _GdlDockObjectClass {
  */
 #define GDL_DOCK_OBJECT_FLAGS(obj)  (GDL_DOCK_OBJECT (obj)->flags)
 
+#ifndef GDL_DISABLE_DEPRECATED
 /**
  * GDL_DOCK_OBJECT_AUTOMATIC:
  * @obj: A #GdlDockObject
  *
  * Evaluates to %TRUE if the object's lifecycle is entirely managed by the dock
  * master.
+ *
+ * Deprecated: 3.6: Use gdl_dock_object_is_automatic()
  */
 #define GDL_DOCK_OBJECT_AUTOMATIC(obj) \
     ((GDL_DOCK_OBJECT_FLAGS (obj) & GDL_DOCK_AUTOMATIC) != 0)
+#endif
 
 #ifndef GDL_DISABLE_DEPRECATED
 /**
@@ -299,6 +303,9 @@ gboolean       gdl_dock_object_child_placement   (GdlDockObject    *object,
 
 gboolean       gdl_dock_object_is_closed         (GdlDockObject    *object);
 
+gboolean       gdl_dock_object_is_automatic      (GdlDockObject    *object);
+void           gdl_dock_object_set_manual        (GdlDockObject    *object);
+
 /* 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 fb56bf4..bbdf16a 100644
--- a/gdl/gdl-dock-paned.c
+++ b/gdl/gdl-dock-paned.c
@@ -686,8 +686,9 @@ gdl_dock_paned_child_placement (GdlDockObject    *object,
  * gdl_dock_paned_new:
  * @orientation: the pane's orientation.
  *
- * Creates a new #GdlDockPaned widget. This widget is normally created and destroyed
- * automatically when needed by the master.
+ * Creates a new manual #GdlDockPaned widget. This function is seldom useful as
+ * such widget is normally created and destroyed automatically when needed by
+ * the master.
  *
  * Returns: a new #GdlDockPaned.
  */
@@ -698,7 +699,7 @@ gdl_dock_paned_new (GtkOrientation orientation)
 
     paned = GDL_DOCK_PANED (g_object_new (GDL_TYPE_DOCK_PANED,
                                           "orientation", orientation, NULL));
-    GDL_DOCK_OBJECT_UNSET_FLAGS (paned, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (paned));
 
     return GTK_WIDGET (paned);
 }
diff --git a/gdl/gdl-dock.c b/gdl/gdl-dock.c
index 2859497..2dbd625 100644
--- a/gdl/gdl-dock.c
+++ b/gdl/gdl-dock.c
@@ -352,7 +352,7 @@ gdl_dock_constructor (GType                  type,
         /* create a master for the dock if none was provided in the construction */
         master = GDL_DOCK_OBJECT_GET_MASTER (GDL_DOCK_OBJECT (dock));
         if (!master) {
-            GDL_DOCK_OBJECT_UNSET_FLAGS (dock, GDL_DOCK_AUTOMATIC);
+            gdl_dock_object_set_manual (GDL_DOCK_OBJECT (dock));
             master = g_object_new (GDL_TYPE_DOCK_MASTER, NULL);
             /* the controller owns the master ref */
             gdl_dock_object_bind (GDL_DOCK_OBJECT (dock), G_OBJECT (master));
@@ -705,7 +705,7 @@ gdl_dock_foreach_automatic (GdlDockObject *object,
 {
     void (* function) (GtkWidget *) = user_data;
 
-    if (GDL_DOCK_OBJECT_AUTOMATIC (object))
+    if (gdl_dock_object_is_automatic (object))
         (* function) (GTK_WIDGET (object));
 }
 
@@ -831,7 +831,7 @@ gdl_dock_reduce (GdlDockObject *object)
     if (dock->root)
         return;
 
-    if (GDL_DOCK_OBJECT_AUTOMATIC (dock)) {
+    if (gdl_dock_object_is_automatic (GDL_DOCK_OBJECT (dock))) {
         gtk_widget_destroy (GTK_WIDGET (dock));
 
     } else if (gdl_dock_object_is_closed (GDL_DOCK_OBJECT (dock))) {
@@ -1097,7 +1097,7 @@ gdl_dock_new (void)
     GObject *dock;
 
     dock = g_object_new (GDL_TYPE_DOCK, NULL);
-    GDL_DOCK_OBJECT_UNSET_FLAGS (dock, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (dock));
 
     return GTK_WIDGET (dock);
 }
@@ -1123,7 +1123,7 @@ gdl_dock_new_from (GdlDock  *original,
                              "master", GDL_DOCK_OBJECT_GET_MASTER (original),
                              "floating", floating,
                              NULL);
-    GDL_DOCK_OBJECT_UNSET_FLAGS (new_dock, GDL_DOCK_AUTOMATIC);
+    gdl_dock_object_set_manual (GDL_DOCK_OBJECT (new_dock));
 
     return GTK_WIDGET (new_dock);
 }



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