summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-06-18 09:11:11 +0200
committerMatthias Clasen <mclasen@redhat.com>2011-07-05 16:07:57 -0400
commit9ebcd66d4322081580c479ad2580800235f04baa (patch)
tree8a120d83484cd6d25d068b880f97b5e87f301e50 /gtk/gtkwidget.c
parentdfe5459437ae76dd97618f1fbf29da7b7037d5f9 (diff)
downloadgtk+-9ebcd66d4322081580c479ad2580800235f04baa.tar.gz
widget: Add a GtkWidgetClassPrivate
As long as glib doesn't provide class privates, we'll have to ship our own...
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 05bc04ce3a..e81f7f4c87 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -406,6 +406,11 @@ struct _GtkWidgetPrivate
#endif /* G_ENABLE_DEBUG */
};
+struct _GtkWidgetClassPrivate
+{
+ int dummy;
+};
+
enum {
DESTROY,
SHOW,
@@ -532,6 +537,7 @@ struct _GtkStateData
};
/* --- prototypes --- */
+static void gtk_widget_base_class_init (gpointer g_class);
static void gtk_widget_class_init (GtkWidgetClass *klass);
static void gtk_widget_base_class_finalize (GtkWidgetClass *klass);
static void gtk_widget_init (GtkWidget *widget);
@@ -738,7 +744,7 @@ gtk_widget_get_type (void)
const GTypeInfo widget_info =
{
sizeof (GtkWidgetClass),
- NULL, /* base_init */
+ gtk_widget_base_class_init,
(GBaseFinalizeFunc) gtk_widget_base_class_finalize,
(GClassInitFunc) gtk_widget_class_init,
NULL, /* class_finalize */
@@ -776,6 +782,18 @@ gtk_widget_get_type (void)
}
static void
+gtk_widget_base_class_init (gpointer g_class)
+{
+ GtkWidgetClass *klass = g_class;
+
+ if (GTK_IS_WIDGET_CLASS (g_type_class_peek_parent (klass)))
+ klass->priv = g_slice_dup (GtkWidgetClassPrivate,
+ GTK_WIDGET_CLASS (g_type_class_peek_parent (klass))->priv);
+ else
+ klass->priv = g_slice_new0 (GtkWidgetClassPrivate);
+}
+
+static void
child_property_notify_dispatcher (GObject *object,
guint n_pspecs,
GParamSpec **pspecs)
@@ -3177,6 +3195,8 @@ gtk_widget_base_class_finalize (GtkWidgetClass *klass)
g_param_spec_unref (pspec);
}
g_list_free (list);
+
+ g_slice_free (GtkWidgetClassPrivate, klass->priv);
}
static void