[gtk+] Move action muxer to gdata
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Move action muxer to gdata
- Date: Sun, 13 Sep 2015 01:12:35 +0000 (UTC)
commit b16658283595a84395b28fcdf6c19a3d4900aabd
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Sep 12 20:08:56 2015 -0400
Move action muxer to gdata
Most widgets don't have their own, and we don't access them
very frequently.
gtk/gtkwidget.c | 45 +++++++++++++++++++++++++++++++++------------
gtk/gtkwidgetprivate.h | 3 ---
2 files changed, 33 insertions(+), 15 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index acb3822..f8dec1c 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -861,6 +861,8 @@ static GQuark quark_enabled_devices = 0;
static GQuark quark_size_groups = 0;
static GQuark quark_auto_children = 0;
static GQuark quark_widget_path = 0;
+static GQuark quark_action_muxer = 0;
+
GParamSpecPool *_gtk_widget_child_property_pool = NULL;
GObjectNotifyContext *_gtk_widget_child_property_notify_context = NULL;
@@ -1029,6 +1031,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
quark_size_groups = g_quark_from_static_string ("gtk-widget-size-groups");
quark_auto_children = g_quark_from_static_string ("gtk-widget-auto-children");
quark_widget_path = g_quark_from_static_string ("gtk-widget-path");
+ quark_action_muxer = g_quark_from_static_string ("gtk-widget-action-muxer");
style_property_spec_pool = g_param_spec_pool_new (FALSE);
_gtk_widget_child_property_pool = g_param_spec_pool_new (TRUE);
@@ -11986,7 +11989,7 @@ gtk_widget_dispose (GObject *object)
priv->in_destruction = FALSE;
}
- g_clear_object (&priv->muxer);
+ g_object_set_qdata (object, quark_action_muxer, NULL);
while (priv->attached_windows)
gtk_window_set_attached_to (priv->attached_windows->data, NULL);
@@ -16546,10 +16549,13 @@ _gtk_widget_get_parent_muxer (GtkWidget *widget,
void
_gtk_widget_update_parent_muxer (GtkWidget *widget)
{
- if (widget->priv->muxer == NULL)
+ GtkActionMuxer *muxer;
+
+ muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
+ if (muxer == NULL)
return;
- gtk_action_muxer_set_parent (widget->priv->muxer,
+ gtk_action_muxer_set_parent (muxer,
_gtk_widget_get_parent_muxer (widget, TRUE));
}
@@ -16557,15 +16563,22 @@ GtkActionMuxer *
_gtk_widget_get_action_muxer (GtkWidget *widget,
gboolean create)
{
- if (widget->priv->muxer)
- return widget->priv->muxer;
+ GtkActionMuxer *muxer;
+
+ muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
+ if (muxer)
+ return muxer;
if (create)
{
- widget->priv->muxer = gtk_action_muxer_new ();
+ muxer = gtk_action_muxer_new ();
+ g_object_set_qdata_full (G_OBJECT (widget),
+ quark_action_muxer,
+ muxer,
+ g_object_unref);
_gtk_widget_update_parent_muxer (widget);
- return widget->priv->muxer;
+ return muxer;
}
else
return _gtk_widget_get_parent_muxer (widget, FALSE);
@@ -17095,11 +17108,15 @@ gtk_widget_get_template_child (GtkWidget *widget,
const gchar **
gtk_widget_list_action_prefixes (GtkWidget *widget)
{
+ GtkActionMuxer *muxer;
+
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
- if (widget->priv->muxer)
- return gtk_action_muxer_list_prefixes (widget->priv->muxer);
- return g_new0 (const gchar *, 0 + 1);
+ muxer = _gtk_widget_get_action_muxer (widget, FALSE);
+ if (muxer)
+ return gtk_action_muxer_list_prefixes (muxer);
+
+ return g_new0 (const gchar *, 1);
}
/**
@@ -17121,11 +17138,15 @@ GActionGroup *
gtk_widget_get_action_group (GtkWidget *widget,
const gchar *prefix)
{
+ GtkActionMuxer *muxer;
+
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
g_return_val_if_fail (prefix, NULL);
- if (widget->priv->muxer)
- return gtk_action_muxer_lookup (widget->priv->muxer, prefix);
+ muxer = _gtk_widget_get_action_muxer (widget, FALSE);
+ if (muxer)
+ return gtk_action_muxer_lookup (muxer, prefix);
+
return NULL;
}
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index 42d741b..233df60 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -146,9 +146,6 @@ struct _GtkWidgetPrivate
/* The widget's requested sizes */
SizeRequestCache requests;
- /* actions attached to this or any parent widget */
- GtkActionMuxer *muxer;
-
/* The widget's window or its parent window if it does
* not have a window. (Which will be indicated by the
* no_window field being set).
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]