]> Pileus Git - ~andy/gtk/commitdiff
Deprecate gtk_notebook_[gs]et_group_id in favour of new functions
authorMatthias Clasen <mclasen@redhat.com>
Sat, 19 May 2007 05:22:00 +0000 (05:22 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 19 May 2007 05:22:00 +0000 (05:22 +0000)
2007-05-19  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtk.symbols:
        * gtk/gtknotebook.[hc]: Deprecate gtk_notebook_[gs]et_group_id
        in favour of new functions gtk_notebook_[gs]et_group, which
        takes a pointer as group identifier and makes it easier to
        avoid group id collisions.  (#386930, Christian Hammond)

        * tests/testnotebookdnd.c: Use new grouping api.

svn path=/trunk/; revision=17873

ChangeLog
docs/reference/ChangeLog
docs/reference/gtk/gtk-sections.txt
gtk/gtk.symbols
gtk/gtknotebook.c
gtk/gtknotebook.h
tests/testnotebookdnd.c

index f1259f7d41735174b69b9165fc7573a80c35dce2..5ac886812c4beef689e105b7f51fbb94bc7995f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-05-19  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtk.symbols:
+       * gtk/gtknotebook.[hc]: Deprecate gtk_notebook_[gs]et_group_id
+       in favour of new functions gtk_notebook_[gs]et_group, which
+       takes a pointer as group identifier and makes it easier to
+       avoid group id collisions.  (#386930, Christian Hammond)
+               
+       * tests/testnotebookdnd.c: Use new grouping api.
+
 2007-05-18  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkactiongroup.c: Warn and refuse to add actions with
index 9413dbe2ea2299250a9df94d2d91aef5362190a3..f1d033f80d11cea5c7ff51c4c6aef9cc5028e316 100644 (file)
@@ -1,3 +1,7 @@
+2007-05-19  Matthias Clasen <mclasen@redhat.com>
+
+       * gtk/gtk-sections.txt: Add gtk_notebook_[gs]et_group
+
 2007-05-18  Matthias Clasen <mclasen@redhat.com>
 
        * gtk/gtk-sections.txt: Add gtk_entry_[gs]et_cursor_hadjustment.
index 30e367a4fecf76970423116b136f3927d8ecd731..1337eace1e7f9e11b7eb480cc0c66edecb94b1b7 100644 (file)
@@ -2415,6 +2415,8 @@ gtk_notebook_get_tab_detachable
 gtk_notebook_set_current_page
 gtk_notebook_set_group_id
 gtk_notebook_get_group_id
+gtk_notebook_set_group
+gtk_notebook_get_group
 GtkNotebookWindowCreationFunc
 gtk_notebook_set_window_creation_hook
 <SUBSECTION Standard>
index ba34e5ab0a766f9147803953d1cb7e4c44bb6f1d..86b985763bc6b04a1d6cc42a1dbe7e8d60a7674c 100644 (file)
@@ -2385,8 +2385,12 @@ gtk_notebook_set_tab_label_packing
 gtk_notebook_set_tab_label_text
 gtk_notebook_set_tab_pos
 gtk_notebook_set_window_creation_hook
+#ifndef GTK_DISABLE_DEPRECATED
 gtk_notebook_get_group_id
 gtk_notebook_set_group_id
+#endif
+gtk_notebook_get_group
+gtk_notebook_set_group
 gtk_notebook_get_tab_reorderable
 gtk_notebook_set_tab_reorderable
 gtk_notebook_get_tab_detachable
index 1f63bff41d75b765126da7abfdbd66e4fc43f462..c79633cdabdb5c19435e25e021067923bc7a6c95 100644 (file)
@@ -102,6 +102,7 @@ enum {
   PROP_PAGE,
   PROP_ENABLE_POPUP,
   PROP_GROUP_ID,
+  PROP_GROUP,
   PROP_HOMOGENEOUS
 };
 
@@ -156,7 +157,7 @@ typedef struct _GtkNotebookPrivate GtkNotebookPrivate;
 
 struct _GtkNotebookPrivate
 {
-  gint  group_id;
+  gpointer group;
   gint  mouse_x;
   gint  mouse_y;
   gint  pressed_button;
@@ -611,6 +612,12 @@ gtk_notebook_class_init (GtkNotebookClass *class)
                                                     G_MAXINT,
                                                     -1,
                                                     GTK_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class,
+                                  PROP_GROUP,
+                                  g_param_spec_pointer ("group",
+                                                        P_("Group"),
+                                                        P_("Group for tabs drag and drop"),
+                                                        GTK_PARAM_READWRITE));
 
   gtk_container_class_install_child_property (container_class,
                                              CHILD_PROP_TAB_LABEL,
@@ -1000,7 +1007,7 @@ gtk_notebook_init (GtkNotebook *notebook)
   notebook->has_after_previous  = 0;
   notebook->has_after_next      = 1;
 
-  priv->group_id = -1;
+  priv->group = NULL;
   priv->pressed_button = -1;
   priv->dnd_timer = 0;
   priv->switch_tab_timer = 0;
@@ -1410,6 +1417,9 @@ gtk_notebook_set_property (GObject         *object,
     case PROP_GROUP_ID:
       gtk_notebook_set_group_id (notebook, g_value_get_int (value));
       break;
+    case PROP_GROUP:
+      gtk_notebook_set_group (notebook, g_value_get_pointer (value));
+      break;
     default:
       break;
     }
@@ -1457,7 +1467,10 @@ gtk_notebook_get_property (GObject         *object,
       g_value_set_uint (value, notebook->tab_vborder);
       break;
     case PROP_GROUP_ID:
-      g_value_set_int (value, priv->group_id);
+      g_value_set_int (value, gtk_notebook_get_group_id (notebook));
+      break;
+    case PROP_GROUP:
+      g_value_set_pointer (value, priv->group);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -3145,9 +3158,10 @@ gtk_notebook_drag_failed (GtkWidget      *widget,
       gdk_display_get_pointer (display, NULL, &x, &y, NULL);
 
       dest_notebook = (* window_creation_hook) (notebook,
-                                               priv->detached_tab->child,
-                                               x, y,
-                                               window_creation_hook_data);
+                                               priv->detached_tab->child,
+                                               x, y, 
+                                                window_creation_hook_data);
+
       if (dest_notebook)
        do_detach_tab (notebook, dest_notebook, priv->detached_tab->child, 0, 0);
 
@@ -3217,17 +3231,16 @@ gtk_notebook_drag_motion (GtkWidget      *widget,
 
   if (target == tab_target)
     {
-      gint widget_group, source_widget_group;
+      gpointer widget_group, source_widget_group;
       GtkWidget *source_widget;
 
       source_widget = gtk_drag_get_source_widget (context);
       g_assert (source_widget);
 
-      widget_group = gtk_notebook_get_group_id (notebook);
-      source_widget_group = gtk_notebook_get_group_id (GTK_NOTEBOOK (source_widget));
+      widget_group = gtk_notebook_get_group (notebook);
+      source_widget_group = gtk_notebook_get_group (GTK_NOTEBOOK (source_widget));
 
-      if (widget_group != -1 &&
-         source_widget_group != -1 &&
+      if (widget_group && source_widget_group &&
          widget_group == source_widget_group &&
          !(widget == GTK_NOTEBOOK (source_widget)->cur_page->child || 
            gtk_widget_is_ancestor (widget, GTK_NOTEBOOK (source_widget)->cur_page->child)))
@@ -7256,21 +7269,49 @@ gtk_notebook_set_window_creation_hook (GtkNotebookWindowCreationFunc  func,
  * not be able to exchange tabs with any other notebook.
  * 
  * Since: 2.10
- **/
+ * Deprecated:2.12: use gtk_notebook_set_group() instead.
+ */
 void
 gtk_notebook_set_group_id (GtkNotebook *notebook,
                           gint         group_id)
 {
   GtkNotebookPrivate *priv;
+  gpointer group;
+
+  g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
+
+  /* add 1 to get rid of the -1/NULL difference */
+  group = GINT_TO_POINTER (group_id + 1);
+  gtk_notebook_set_group (notebook, group);
+}
+
+/**
+ * gtk_notebook_set_group:
+ * @notebook: a #GtkNotebook
+ * @group_id: a pointer to identify the notebook group, or %NULL to unset it
+ *
+ * Sets a group identificator pointer for @notebook, notebooks sharing
+ * the same group identificator pointer will be able to exchange tabs
+ * via drag and drop. A notebook with a %NULL group identificator will
+ * not be able to exchange tabs with any other notebook.
+ * 
+ * Since: 2.12
+ */
+void
+gtk_notebook_set_group (GtkNotebook *notebook,
+                       gpointer     group)
+{
+  GtkNotebookPrivate *priv;
 
   g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
 
   priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
 
-  if (priv->group_id != group_id)
+  if (priv->group != group)
     {
-      priv->group_id = group_id;
+      priv->group = group;
       g_object_notify (G_OBJECT (notebook), "group-id");
+      g_object_notify (G_OBJECT (notebook), "group");
     }
 }
 
@@ -7283,7 +7324,8 @@ gtk_notebook_set_group_id (GtkNotebook *notebook,
  * Return Value: the group identificator, or -1 if none is set.
  *
  * Since: 2.10
- **/
+ * Deprecated:2.12: use gtk_notebook_get_group() instead.
+ */
 gint
 gtk_notebook_get_group_id (GtkNotebook *notebook)
 {
@@ -7292,7 +7334,30 @@ gtk_notebook_get_group_id (GtkNotebook *notebook)
   g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1);
 
   priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
-  return priv->group_id;
+
+  /* substract 1 to get rid of the -1/NULL difference */
+  return GPOINTER_TO_INT (priv->group - 1);
+}
+
+/**
+ * gtk_notebook_get_group:
+ * @notebook: a #GtkNotebook
+ * 
+ * Gets the current group identificator pointer for @notebook.
+ * 
+ * Return Value: the group identificator, or %NULL if none is set.
+ *
+ * Since: 2.12
+ **/
+gpointer
+gtk_notebook_get_group (GtkNotebook *notebook)
+{
+  GtkNotebookPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), NULL);
+
+  priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
+  return priv->group;
 }
 
 /**
index 55db1708c2ba3b23d52bf614b2be14467a80b2b1..c5e648f1b2d7c3cdcc2d7bd8bf1c325cb581257b 100644 (file)
@@ -165,12 +165,21 @@ void gtk_notebook_remove_page       (GtkNotebook *notebook,
 void gtk_notebook_set_window_creation_hook (GtkNotebookWindowCreationFunc  func,
                                            gpointer                       data,
                                             GDestroyNotify                 destroy);
+#ifndef GTK_DISABLE_DEPRECATED
 void gtk_notebook_set_group_id             (GtkNotebook *notebook,
                                            gint         group_id);
 gint gtk_notebook_get_group_id             (GtkNotebook *notebook);
 
+#endif /* GTK_DISABLE_DEPRECATED */
+
+void gtk_notebook_set_group                (GtkNotebook *notebook,
+                                           gpointer     group);
+gpointer gtk_notebook_get_group            (GtkNotebook *notebook);
+
+
+
 /***********************************************************
- *            query, set current NoteebookPage             *
+ *            query, set current NotebookPage              *
  ***********************************************************/
 
 gint       gtk_notebook_get_current_page (GtkNotebook *notebook);
index 233d9003ef99ed4d16bf2abb49b91bb879fd1f36..d8364455dff9db43d9cb4fb398a3b169cf6fd26b 100644 (file)
@@ -28,10 +28,8 @@ enum {
   PACK_ALTERNATE
 };
 
-enum {
-  GROUP_A,
-  GROUP_B
-};
+static gpointer GROUP_A = "GROUP_A";
+static gpointer GROUP_B = "GROUP_B";
 
 gchar *tabs1 [] = {
   "aaaaaaaaaa",
@@ -144,7 +142,7 @@ on_button_drag_data_received (GtkWidget        *widget,
 
 static GtkWidget*
 create_notebook (gchar           **labels,
-                gint              group_id,
+                gpointer          group,
                 gint              packing,
                 GtkPositionType   pos)
 {
@@ -156,7 +154,7 @@ create_notebook (gchar           **labels,
   gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), pos);
   gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
   gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
-  gtk_notebook_set_group_id (GTK_NOTEBOOK (notebook), group_id);
+  gtk_notebook_set_group (GTK_NOTEBOOK (notebook), group);
 
   while (*labels)
     {
@@ -186,7 +184,7 @@ create_notebook (gchar           **labels,
 
 static GtkWidget*
 create_notebook_with_notebooks (gchar           **labels,
-                               gint              group_id,
+                               gpointer          group,
                                gint              packing,
                                GtkPositionType   pos)
 {
@@ -198,11 +196,11 @@ create_notebook_with_notebooks (gchar           **labels,
   gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), pos);
   gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
   gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
-  gtk_notebook_set_group_id (GTK_NOTEBOOK (notebook), group_id);
+  gtk_notebook_set_group (GTK_NOTEBOOK (notebook), group);
 
   while (*labels)
     {
-      page = create_notebook (labels, group_id, packing, pos);
+      page = create_notebook (labels, group, packing, pos);
 
       title = gtk_label_new (*labels);