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.
This commit is contained in:
@@ -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 *
|
||||
|
||||
Reference in New Issue
Block a user