[gtk] widget: create parent muxers lazily



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]