diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-07-22 20:59:01 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-07-24 18:48:10 -0400 |
commit | 7044951dabe7c39bf0e6b650dd6b018ed1681885 (patch) | |
tree | b286d4834768b8e8eb4922579b9ef99d6abbffbc /gtk | |
parent | 98986a25f9eb88e6bc2ee9fcf72bac9e8f17d9f9 (diff) | |
download | gtk+-7044951dabe7c39bf0e6b650dd6b018ed1681885.tar.gz |
widget: Avoid GObject data for action muxer
Most widget have an action muxer now, so just
store it in GtkWidgetPrivate.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkwidget.c | 37 | ||||
-rw-r--r-- | gtk/gtkwidgetfocus.c | 12 | ||||
-rw-r--r-- | gtk/gtkwidgetprivate.h | 14 |
3 files changed, 29 insertions, 34 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 724ee32eae..6544a4d024 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -623,7 +623,6 @@ static GQuark quark_pango_context = 0; static GQuark quark_mnemonic_labels = 0; static GQuark quark_size_groups = 0; static GQuark quark_auto_children = 0; -static GQuark quark_action_muxer = 0; static GQuark quark_font_options = 0; static GQuark quark_font_map = 0; static GQuark quark_builder_set_id = 0; @@ -1147,7 +1146,6 @@ gtk_widget_class_init (GtkWidgetClass *klass) quark_mnemonic_labels = g_quark_from_static_string ("gtk-mnemonic-labels"); 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_action_muxer = g_quark_from_static_string ("gtk-widget-action-muxer"); quark_font_options = g_quark_from_static_string ("gtk-widget-font-options"); quark_font_map = g_quark_from_static_string ("gtk-widget-font-map"); @@ -7367,12 +7365,10 @@ gtk_widget_dispose (GObject *object) GtkWidget *widget = GTK_WIDGET (object); GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); GSList *sizegroups; - GtkActionMuxer *muxer; GtkATContext *at_context; - muxer = g_object_get_qdata (G_OBJECT (widget), quark_action_muxer); - if (muxer != NULL) - g_object_run_dispose (G_OBJECT (muxer)); + if (priv->muxer != NULL) + g_object_run_dispose (G_OBJECT (priv->muxer)); if (priv->children_observer) gtk_list_list_model_clear (priv->children_observer); @@ -7423,7 +7419,7 @@ gtk_widget_dispose (GObject *object) if (at_context != NULL) gtk_at_context_unrealize (at_context); - g_object_set_qdata (object, quark_action_muxer, NULL); + g_clear_object (&priv->muxer); G_OBJECT_CLASS (gtk_widget_parent_class)->dispose (object); } @@ -10781,7 +10777,7 @@ gtk_widget_get_parent_muxer (GtkWidget *widget, GtkWidget *parent; if (GTK_IS_WINDOW (widget)) - return gtk_application_get_parent_muxer_for_window (GTK_WINDOW (widget)); + return gtk_application_get_parent_muxer_for_window ((GtkWindow *)widget); parent = _gtk_widget_get_parent (widget); @@ -10794,14 +10790,13 @@ gtk_widget_get_parent_muxer (GtkWidget *widget, void _gtk_widget_update_parent_muxer (GtkWidget *widget) { - GtkActionMuxer *muxer; + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); GtkWidget *child; - muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer); - if (muxer == NULL) + if (priv->muxer == NULL) return; - gtk_action_muxer_set_parent (muxer, + gtk_action_muxer_set_parent (priv->muxer, gtk_widget_get_parent_muxer (widget, FALSE)); for (child = gtk_widget_get_first_child (widget); child != NULL; @@ -10813,24 +10808,18 @@ GtkActionMuxer * _gtk_widget_get_action_muxer (GtkWidget *widget, gboolean create) { - GtkActionMuxer *muxer; GtkWidgetClass *widget_class = GTK_WIDGET_GET_CLASS (widget); - GtkWidgetClassPrivate *priv = widget_class->priv; + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); - muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer); - if (muxer) - return muxer; + if (priv->muxer) + return priv->muxer; - if (create || priv->actions) + if (create || widget_class->priv->actions) { - muxer = gtk_action_muxer_new (widget); - g_object_set_qdata_full (G_OBJECT (widget), - quark_action_muxer, - muxer, - g_object_unref); + priv->muxer = gtk_action_muxer_new (widget); _gtk_widget_update_parent_muxer (widget); - return muxer; + return priv->muxer; } else return gtk_widget_get_parent_muxer (widget, FALSE); diff --git a/gtk/gtkwidgetfocus.c b/gtk/gtkwidgetfocus.c index b4f793dfeb..df1c562ac6 100644 --- a/gtk/gtkwidgetfocus.c +++ b/gtk/gtkwidgetfocus.c @@ -81,8 +81,8 @@ tab_sort_func (gconstpointer a, GtkTextDirection text_direction = GPOINTER_TO_INT (user_data); float y1, y2; - if (!gtk_widget_compute_bounds (child1, gtk_widget_get_parent (child1), &child_bounds1) || - !gtk_widget_compute_bounds (child2, gtk_widget_get_parent (child2), &child_bounds2)) + if (!gtk_widget_compute_bounds (child1, _gtk_widget_get_parent (child1), &child_bounds1) || + !gtk_widget_compute_bounds (child2, _gtk_widget_get_parent (child2), &child_bounds2)) return 0; y1 = child_bounds1.origin.y + (child_bounds1.size.height / 2.0f); @@ -136,7 +136,7 @@ find_old_focus (GtkWidget *widget, parent = _gtk_widget_get_parent (child_ptr); - if (parent && (gtk_widget_get_focus_child (parent) != child_ptr)) + if (parent && (_gtk_widget_get_focus_child (parent) != child_ptr)) { child = NULL; break; @@ -210,7 +210,7 @@ focus_sort_left_right (GtkWidget *widget, GPtrArray *focus_order) { CompareInfo compare_info; - GtkWidget *old_focus = gtk_widget_get_focus_child (widget); + GtkWidget *old_focus = _gtk_widget_get_focus_child (widget); graphene_rect_t old_bounds; compare_info.widget = widget; @@ -312,7 +312,7 @@ focus_sort_up_down (GtkWidget *widget, GPtrArray *focus_order) { CompareInfo compare_info; - GtkWidget *old_focus = gtk_widget_get_focus_child (widget); + GtkWidget *old_focus = _gtk_widget_get_focus_child (widget); graphene_rect_t old_bounds; compare_info.widget = widget; @@ -455,7 +455,7 @@ gtk_widget_focus_move (GtkWidget *widget, GtkDirectionType direction) { GPtrArray *focus_order; - GtkWidget *focus_child = gtk_widget_get_focus_child (widget); + GtkWidget *focus_child = _gtk_widget_get_focus_child (widget); int i; gboolean ret = FALSE; diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index bc6eb0bf7f..5110b0263c 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -115,13 +115,12 @@ struct _GtkWidgetPrivate guint8 verifying_invariants_count; #endif - guint8 n_active; - int width_request; int height_request; /* Animations and other things to update on clock ticks */ guint clock_tick_id; + guint8 n_active; GList *tick_callbacks; void (* resize_func) (GtkWidget *); @@ -185,6 +184,7 @@ struct _GtkWidgetPrivate /* only created on-demand */ GtkListListModel *children_observer; GtkListListModel *controller_observer; + GtkActionMuxer *muxer; GtkWidget *focus_child; @@ -196,8 +196,8 @@ struct _GtkWidgetPrivate char *tooltip_text; /* Accessibility */ - GtkAccessibleRole accessible_role; GtkATContext *at_context; + GtkAccessibleRole accessible_role; }; typedef struct @@ -211,11 +211,11 @@ struct _GtkWidgetClassPrivate { GtkWidgetTemplate *template; GListStore *shortcuts; - GQuark css_name; GType layout_manager_type; GtkWidgetAction *actions; GtkAccessibleRole accessible_role; guint activate_signal; + GQuark css_name; }; void gtk_widget_root (GtkWidget *widget); @@ -378,6 +378,12 @@ _gtk_widget_get_parent (GtkWidget *widget) return widget->priv->parent; } +static inline GtkWidget * +_gtk_widget_get_focus_child (GtkWidget *widget) +{ + return widget->priv->focus_child; +} + static inline gboolean _gtk_widget_get_visible (GtkWidget *widget) { |