Revert the private macro change for GtkToolButton

There was a reason that GtkToolButton was not using the
G_DEFINE_TYPE macros - we need the klass argument to get
the proper button type at init time.
This commit is contained in:
Matthias Clasen
2013-07-09 19:18:08 -04:00
parent af26a18032
commit 3247058a30

View File

@ -83,6 +83,9 @@ enum {
PROP_ACTION_TARGET PROP_ACTION_TARGET
}; };
static void gtk_tool_button_init (GtkToolButton *button,
GtkToolButtonClass *klass);
static void gtk_tool_button_class_init (GtkToolButtonClass *klass);
static void gtk_tool_button_set_property (GObject *object, static void gtk_tool_button_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
@ -128,20 +131,47 @@ struct _GtkToolButtonPrivate
guint contents_invalid : 1; guint contents_invalid : 1;
}; };
static GObjectClass *parent_class = NULL;
static GtkActivatableIface *parent_activatable_iface; static GtkActivatableIface *parent_activatable_iface;
static guint toolbutton_signals[LAST_SIGNAL] = { 0 }; static guint toolbutton_signals[LAST_SIGNAL] = { 0 };
/* for GTK_TYPE_ACTIVATABLE */ GType
G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_tool_button_get_type (void)
{
static GType g_define_type_id = 0;
G_DEFINE_TYPE_WITH_CODE (GtkToolButton, gtk_tool_button, GTK_TYPE_TOOL_ITEM, if (!g_define_type_id)
G_ADD_PRIVATE (GtkToolButton) {
G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIONABLE, const GInterfaceInfo actionable_info =
gtk_tool_button_actionable_iface_init) {
G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, (GInterfaceInitFunc) gtk_tool_button_actionable_iface_init,
gtk_tool_button_activatable_interface_init)) (GInterfaceFinalizeFunc) NULL,
NULL
};
const GInterfaceInfo activatable_info =
{
(GInterfaceInitFunc) gtk_tool_button_activatable_interface_init,
(GInterfaceFinalizeFunc) NULL,
NULL
};
G_GNUC_END_IGNORE_DEPRECATIONS g_define_type_id = g_type_register_static_simple (GTK_TYPE_TOOL_ITEM,
I_("GtkToolButton"),
sizeof (GtkToolButtonClass),
(GClassInitFunc) gtk_tool_button_class_init,
sizeof (GtkToolButton),
(GInstanceInitFunc) gtk_tool_button_init,
0);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
g_type_add_interface_static (g_define_type_id,
GTK_TYPE_ACTIONABLE, &actionable_info);
g_type_add_interface_static (g_define_type_id,
GTK_TYPE_ACTIVATABLE, &activatable_info);
G_GNUC_END_IGNORE_DEPRECATIONS;
}
return g_define_type_id;
}
static void static void
gtk_tool_button_class_init (GtkToolButtonClass *klass) gtk_tool_button_class_init (GtkToolButtonClass *klass)
@ -150,6 +180,8 @@ gtk_tool_button_class_init (GtkToolButtonClass *klass)
GtkWidgetClass *widget_class; GtkWidgetClass *widget_class;
GtkToolItemClass *tool_item_class; GtkToolItemClass *tool_item_class;
parent_class = g_type_class_peek_parent (klass);
object_class = (GObjectClass *)klass; object_class = (GObjectClass *)klass;
widget_class = (GtkWidgetClass *)klass; widget_class = (GtkWidgetClass *)klass;
tool_item_class = (GtkToolItemClass *)klass; tool_item_class = (GtkToolItemClass *)klass;
@ -294,21 +326,26 @@ gtk_tool_button_class_init (GtkToolButtonClass *klass)
NULL, NULL, NULL, NULL,
g_cclosure_marshal_VOID__VOID, g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
g_type_class_add_private (object_class, sizeof (GtkToolButtonPrivate));
} }
static void static void
gtk_tool_button_init (GtkToolButton *button) gtk_tool_button_init (GtkToolButton *button,
GtkToolButtonClass *klass)
{ {
GtkToolItem *toolitem = GTK_TOOL_ITEM (button); GtkToolItem *toolitem = GTK_TOOL_ITEM (button);
button->priv = gtk_tool_button_get_instance_private (button); button->priv = G_TYPE_INSTANCE_GET_PRIVATE (button,
GTK_TYPE_TOOL_BUTTON,
GtkToolButtonPrivate);
button->priv->contents_invalid = TRUE; button->priv->contents_invalid = TRUE;
gtk_tool_item_set_homogeneous (toolitem, TRUE); gtk_tool_item_set_homogeneous (toolitem, TRUE);
/* create button */ /* create button */
button->priv->button = g_object_new (GTK_TOOL_BUTTON_GET_CLASS (button)->button_type, NULL); button->priv->button = g_object_new (klass->button_type, NULL);
gtk_button_set_focus_on_click (GTK_BUTTON (button->priv->button), FALSE); gtk_button_set_focus_on_click (GTK_BUTTON (button->priv->button), FALSE);
g_signal_connect_object (button->priv->button, "clicked", g_signal_connect_object (button->priv->button, "clicked",
G_CALLBACK (button_clicked), button, 0); G_CALLBACK (button_clicked), button, 0);
@ -630,8 +667,8 @@ gtk_tool_button_property_notify (GObject *object,
strcmp ("is-important", pspec->name) == 0) strcmp ("is-important", pspec->name) == 0)
gtk_tool_button_construct_contents (GTK_TOOL_ITEM (object)); gtk_tool_button_construct_contents (GTK_TOOL_ITEM (object));
if (G_OBJECT_CLASS (gtk_tool_button_parent_class)->notify != NULL) if (parent_class->notify)
G_OBJECT_CLASS (gtk_tool_button_parent_class)->notify (object, pspec); parent_class->notify (object, pspec);
} }
static void static void
@ -732,7 +769,7 @@ gtk_tool_button_finalize (GObject *object)
if (button->priv->icon_widget) if (button->priv->icon_widget)
g_object_unref (button->priv->icon_widget); g_object_unref (button->priv->icon_widget);
G_OBJECT_CLASS (gtk_tool_button_parent_class)->finalize (object); parent_class->finalize (object);
} }
static GtkWidget * static GtkWidget *
@ -902,7 +939,7 @@ gtk_tool_button_update_icon_spacing (GtkToolButton *button)
static void static void
gtk_tool_button_style_updated (GtkWidget *widget) gtk_tool_button_style_updated (GtkWidget *widget)
{ {
GTK_WIDGET_CLASS (gtk_tool_button_parent_class)->style_updated (widget); GTK_WIDGET_CLASS (parent_class)->style_updated (widget);
gtk_tool_button_update_icon_spacing (GTK_TOOL_BUTTON (widget)); gtk_tool_button_update_icon_spacing (GTK_TOOL_BUTTON (widget));
} }