[gtk/misc-speedups: 8/11] widget: Avoid GObject data for action muxer
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/misc-speedups: 8/11] widget: Avoid GObject data for action muxer
- Date: Sat, 24 Jul 2021 23:03:27 +0000 (UTC)
commit 7044951dabe7c39bf0e6b650dd6b018ed1681885
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Jul 22 20:59:01 2021 -0400
widget: Avoid GObject data for action muxer
Most widget have an action muxer now, so just
store it in GtkWidgetPrivate.
gtk/gtkwidget.c | 37 +++++++++++++------------------------
gtk/gtkwidgetfocus.c | 12 ++++++------
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)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]