Make style properties in dynamic types work better
This commit is contained in:
parent
aa12ca9522
commit
15eef255e3
@ -1,3 +1,9 @@
|
|||||||
|
2006-05-24 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c: Remove style properties when a widget
|
||||||
|
class gets finalized, to make style properties work in
|
||||||
|
dynamic types. (#342513, Christian Persch)
|
||||||
|
|
||||||
2006-05-24 Henrique Romano <henrique@async.com.br>
|
2006-05-24 Henrique Romano <henrique@async.com.br>
|
||||||
|
|
||||||
* gtk/gtkcellview.c: (gtk_cell_view_class_init),
|
* gtk/gtkcellview.c: (gtk_cell_view_class_init),
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2006-05-24 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c: Remove style properties when a widget
|
||||||
|
class gets finalized, to make style properties work in
|
||||||
|
dynamic types. (#342513, Christian Persch)
|
||||||
|
|
||||||
2006-05-24 Henrique Romano <henrique@async.com.br>
|
2006-05-24 Henrique Romano <henrique@async.com.br>
|
||||||
|
|
||||||
* gtk/gtkcellview.c: (gtk_cell_view_class_init),
|
* gtk/gtkcellview.c: (gtk_cell_view_class_init),
|
||||||
|
@ -159,6 +159,9 @@ struct _GtkStateData
|
|||||||
|
|
||||||
|
|
||||||
/* --- prototypes --- */
|
/* --- prototypes --- */
|
||||||
|
static void gtk_widget_class_init (GtkWidgetClass *klass);
|
||||||
|
static void gtk_widget_base_class_finalize (GtkWidgetClass *klass);
|
||||||
|
static void gtk_widget_init (GtkWidget *widget);
|
||||||
static void gtk_widget_set_property (GObject *object,
|
static void gtk_widget_set_property (GObject *object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
const GValue *value,
|
const GValue *value,
|
||||||
@ -233,6 +236,7 @@ static void gtk_widget_get_draw_rectangle (GtkWidget *widget,
|
|||||||
|
|
||||||
|
|
||||||
/* --- variables --- */
|
/* --- variables --- */
|
||||||
|
static gpointer gtk_widget_parent_class = NULL;
|
||||||
static guint widget_signals[LAST_SIGNAL] = { 0 };
|
static guint widget_signals[LAST_SIGNAL] = { 0 };
|
||||||
static GtkStyle *gtk_default_style = NULL;
|
static GtkStyle *gtk_default_style = NULL;
|
||||||
static GSList *colormap_stack = NULL;
|
static GSList *colormap_stack = NULL;
|
||||||
@ -258,9 +262,44 @@ GParamSpecPool *_gtk_widget_child_property_pool = NULL;
|
|||||||
GObjectNotifyContext *_gtk_widget_child_property_notify_context = NULL;
|
GObjectNotifyContext *_gtk_widget_child_property_notify_context = NULL;
|
||||||
|
|
||||||
/* --- functions --- */
|
/* --- functions --- */
|
||||||
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GtkWidget, gtk_widget, GTK_TYPE_OBJECT,
|
GType
|
||||||
G_IMPLEMENT_INTERFACE (ATK_TYPE_IMPLEMENTOR,
|
gtk_widget_get_type (void)
|
||||||
gtk_widget_accessible_interface_init))
|
{
|
||||||
|
static GType widget_type = 0;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (widget_type == 0))
|
||||||
|
{
|
||||||
|
const GTypeInfo widget_info =
|
||||||
|
{
|
||||||
|
sizeof (GtkWidgetClass),
|
||||||
|
NULL, /* base_init */
|
||||||
|
(GBaseFinalizeFunc) gtk_widget_base_class_finalize,
|
||||||
|
(GClassInitFunc) gtk_widget_class_init,
|
||||||
|
NULL, /* class_finalize */
|
||||||
|
NULL, /* class_init */
|
||||||
|
sizeof (GtkWidget),
|
||||||
|
0, /* n_preallocs */
|
||||||
|
(GInstanceInitFunc) gtk_widget_init,
|
||||||
|
NULL, /* value_table */
|
||||||
|
};
|
||||||
|
|
||||||
|
const GInterfaceInfo accessibility_info =
|
||||||
|
{
|
||||||
|
(GInterfaceInitFunc) gtk_widget_accessible_interface_init,
|
||||||
|
(GInterfaceFinalizeFunc) NULL,
|
||||||
|
NULL /* interface data */
|
||||||
|
};
|
||||||
|
|
||||||
|
widget_type = g_type_register_static (GTK_TYPE_OBJECT, "GtkWidget",
|
||||||
|
&widget_info, G_TYPE_FLAG_ABSTRACT);
|
||||||
|
|
||||||
|
g_type_add_interface_static (widget_type, ATK_TYPE_IMPLEMENTOR,
|
||||||
|
&accessibility_info) ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return widget_type;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
child_property_notify_dispatcher (GObject *object,
|
child_property_notify_dispatcher (GObject *object,
|
||||||
@ -277,7 +316,9 @@ gtk_widget_class_init (GtkWidgetClass *klass)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
|
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
|
||||||
GtkBindingSet *binding_set;
|
GtkBindingSet *binding_set;
|
||||||
|
|
||||||
|
gtk_widget_parent_class = g_type_class_peek_parent (klass);
|
||||||
|
|
||||||
quark_property_parser = g_quark_from_static_string ("gtk-rc-property-parser");
|
quark_property_parser = g_quark_from_static_string ("gtk-rc-property-parser");
|
||||||
quark_aux_info = g_quark_from_static_string ("gtk-aux-info");
|
quark_aux_info = g_quark_from_static_string ("gtk-aux-info");
|
||||||
quark_accel_path = g_quark_from_static_string ("gtk-accel-path");
|
quark_accel_path = g_quark_from_static_string ("gtk-accel-path");
|
||||||
@ -1601,6 +1642,22 @@ gtk_widget_class_init (GtkWidgetClass *klass)
|
|||||||
GTK_PARAM_READABLE));
|
GTK_PARAM_READABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_widget_base_class_finalize (GtkWidgetClass *klass)
|
||||||
|
{
|
||||||
|
GList *list, *node;
|
||||||
|
|
||||||
|
list = g_param_spec_pool_list_owned (style_property_spec_pool, G_OBJECT_CLASS_TYPE (klass));
|
||||||
|
for (node = list; node; node = node->next)
|
||||||
|
{
|
||||||
|
GParamSpec *pspec = node->data;
|
||||||
|
|
||||||
|
g_param_spec_pool_remove (style_property_spec_pool, pspec);
|
||||||
|
g_param_spec_unref (pspec);
|
||||||
|
}
|
||||||
|
g_list_free (list);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_widget_set_property (GObject *object,
|
gtk_widget_set_property (GObject *object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
|
Loading…
Reference in New Issue
Block a user