summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-11-21 16:15:11 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-11-21 16:15:11 +0000
commitc613c6bef78a623ac79207f23cbaefd50e991830 (patch)
tree81b7509ffb99313bbf5341aa4f8308ed4b005b51
parentadcf33fa4d223cb0be763144eb67155257d76109 (diff)
downloadgdk-pixbuf-c613c6bef78a623ac79207f23cbaefd50e991830.tar.gz
Convert GtkMenu to g_type_class_add_private.
2005-11-21 Matthias Clasen <mclasen@redhat.com> * gtk/gtkmenu.c: Convert GtkMenu to g_type_class_add_private.
-rw-r--r--ChangeLog2
-rw-r--r--ChangeLog.pre-2-102
-rw-r--r--gtk/gtkmenu.c76
3 files changed, 42 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index 011172155..7863b29be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2005-11-21 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkmenu.c: Convert GtkMenu to g_type_class_add_private.
+
* gtk/gtk.symbols:
* gtk/gtkcombobox.[hc]: Add a tearoff-title property,
with getter and setter. (#316482, Olexiy Avramchenko)
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 011172155..7863b29be 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,7 @@
2005-11-21 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkmenu.c: Convert GtkMenu to g_type_class_add_private.
+
* gtk/gtk.symbols:
* gtk/gtkcombobox.[hc]: Add a tearoff-title property,
with getter and setter. (#316482, Olexiy Avramchenko)
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 18a73fcd3..ae5d48ec2 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -93,6 +93,8 @@ struct _GtkMenuPrivate
gboolean have_layout;
gint n_rows;
gint n_columns;
+
+ gchar *title;
};
typedef struct
@@ -241,37 +243,10 @@ static const gchar attach_data_key[] = "gtk-menu-attach-data";
static guint menu_signals[LAST_SIGNAL] = { 0 };
-static void
-gtk_menu_free_private (gpointer data)
-{
- GtkMenuPrivate *priv = (GtkMenuPrivate *)data;
-
- g_free (priv->heights);
-
- g_free (priv);
-}
-
static GtkMenuPrivate *
gtk_menu_get_private (GtkMenu *menu)
{
- GtkMenuPrivate *private;
- static GQuark private_quark = 0;
-
- if (!private_quark)
- private_quark = g_quark_from_static_string ("gtk-menu-private");
-
- private = g_object_get_qdata (G_OBJECT (menu), private_quark);
-
- if (!private)
- {
- private = g_new0 (GtkMenuPrivate, 1);
- private->have_position = FALSE;
-
- g_object_set_qdata_full (G_OBJECT (menu), private_quark,
- private, gtk_menu_free_private);
- }
-
- return private;
+ return G_TYPE_INSTANCE_GET_PRIVATE (menu, GTK_TYPE_MENU, GtkMenuPrivate);
}
GType
@@ -712,7 +687,8 @@ gtk_menu_class_init (GtkMenuClass *class)
G_MAXINT,
DEFAULT_POPDOWN_DELAY,
GTK_PARAM_READWRITE));
-
+
+ g_type_class_add_private (gobject_class, sizeof (GtkMenuPrivate));
}
@@ -932,6 +908,7 @@ gtk_menu_destroy (GtkObject *object)
{
GtkMenu *menu;
GtkMenuAttachData *data;
+ GtkMenuPrivate *priv;
g_return_if_fail (GTK_IS_MENU (object));
@@ -966,9 +943,24 @@ gtk_menu_destroy (GtkObject *object)
if (menu->toplevel)
gtk_widget_destroy (menu->toplevel);
+
if (menu->tearoff_window)
gtk_widget_destroy (menu->tearoff_window);
+ priv = gtk_menu_get_private (menu);
+
+ if (priv->heights)
+ {
+ g_free (priv->heights);
+ priv->heights = NULL;
+ }
+
+ if (priv->title)
+ {
+ g_free (priv->title);
+ priv->title = NULL;
+ }
+
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
@@ -1927,16 +1919,20 @@ void
gtk_menu_set_title (GtkMenu *menu,
const gchar *title)
{
+ GtkMenuPrivate *priv;
+
g_return_if_fail (GTK_IS_MENU (menu));
- if (title)
- g_object_set_data_full (G_OBJECT (menu), I_("gtk-menu-title"),
- g_strdup (title), (GtkDestroyNotify) g_free);
- else
- g_object_set_data (G_OBJECT (menu), I_("gtk-menu-title"), NULL);
-
- gtk_menu_update_title (menu);
- g_object_notify (G_OBJECT (menu), "tearoff-title");
+ priv = gtk_menu_get_private (menu);
+
+ if (strcmp (title ? title : "", priv->title ? priv->title : "") != 0)
+ {
+ g_free (priv->title);
+ priv->title = g_strdup (title);
+
+ gtk_menu_update_title (menu);
+ g_object_notify (G_OBJECT (menu), "tearoff-title");
+ }
}
/**
@@ -1952,9 +1948,13 @@ gtk_menu_set_title (GtkMenu *menu,
G_CONST_RETURN gchar *
gtk_menu_get_title (GtkMenu *menu)
{
+ GtkMenuPrivate *priv;
+
g_return_val_if_fail (GTK_IS_MENU (menu), NULL);
- return g_object_get_data (G_OBJECT (menu), "gtk-menu-title");
+ priv = gtk_menu_get_private (menu);
+
+ return priv->title;
}
void