diff options
author | Benjamin Otte <otte@redhat.com> | 2011-06-18 09:11:11 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-07-05 16:07:57 -0400 |
commit | 9ebcd66d4322081580c479ad2580800235f04baa (patch) | |
tree | 8a120d83484cd6d25d068b880f97b5e87f301e50 /gtk/gtkwidget.c | |
parent | dfe5459437ae76dd97618f1fbf29da7b7037d5f9 (diff) | |
download | gtk+-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.c | 22 |
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 |