widget: Only create a controller if we have shortcuts
authorMatthias Clasen <mclasen@redhat.com>
Sun, 15 Mar 2020 22:24:52 +0000 (18:24 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 26 Mar 2020 03:14:27 +0000 (23:14 -0400)
No point in creating objects that just hold empty lists.

gtk/gtkwidget.c

index b5bdd958548c61013dbec9bd00a9498f7b61c3d1..86a9b31e2ced9928bf33c7a8568751ef2d3795a0 100644 (file)
@@ -2459,9 +2459,12 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
   if (layout_manager_type != G_TYPE_INVALID)
     gtk_widget_set_layout_manager (widget, g_object_new (layout_manager_type, NULL));
 
-  controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (GTK_WIDGET_CLASS (g_class)->priv->shortcuts));
-  gtk_event_controller_set_name (controller, "gtk-widget-class-shortcuts");
-  gtk_widget_add_controller (widget, controller);
+  if (g_list_model_get_n_items (G_LIST_MODEL (GTK_WIDGET_CLASS (g_class)->priv->shortcuts)) > 0)
+    {
+      controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (GTK_WIDGET_CLASS (g_class)->priv->shortcuts));
+      gtk_event_controller_set_name (controller, "gtk-widget-class-shortcuts");
+      gtk_widget_add_controller (widget, controller);
+    }
 }
 
 /**