[gtk] widget: create parent muxers lazily
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] widget: create parent muxers lazily
- Date: Sun, 23 Jun 2019 18:01:09 +0000 (UTC)
commit 3ebe30bf3261eae5ec22c30533c63fb7a87d7a41
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Jun 23 17:22:02 2019 +0000
widget: create parent muxers lazily
We need to create a muxer eagerly for every
widget that has class actions, since those
are otherwise missed in the action lookup
on the muxer side. But otherwise, there is
no reason to create parent muxers aggressively,
as long as we update the parent muxers on
root/unroot.
This reduces the number of muxers we create
in widget-factory from 210 to around 50.
gtk/gtkwidget.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 045dcef9d7..1aff2005fd 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -2891,6 +2891,8 @@ gtk_widget_root (GtkWidget *widget)
if (priv->surface_transform_data)
add_parent_surface_transform_changed_listener (widget);
+ _gtk_widget_update_parent_muxer (widget);
+
GTK_WIDGET_GET_CLASS (widget)->root (widget);
if (!GTK_IS_ROOT (widget))
@@ -2911,6 +2913,8 @@ gtk_widget_unroot (GtkWidget *widget)
surface_transform_data->tracked_parent)
remove_parent_surface_transform_changed_listener (widget);
+ _gtk_widget_update_parent_muxer (widget);
+
GTK_WIDGET_GET_CLASS (widget)->unroot (widget);
if (priv->context)
@@ -11862,7 +11866,7 @@ gtk_widget_get_modifier_mask (GtkWidget *widget,
static GtkActionMuxer *
gtk_widget_get_parent_muxer (GtkWidget *widget,
- gboolean create)
+ gboolean create)
{
GtkWidget *parent;
@@ -11890,7 +11894,7 @@ _gtk_widget_update_parent_muxer (GtkWidget *widget)
return;
gtk_action_muxer_set_parent (muxer,
- gtk_widget_get_parent_muxer (widget, TRUE));
+ gtk_widget_get_parent_muxer (widget, FALSE));
}
GtkActionMuxer *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]