filechooserwidget: Create recent manager when setting operation mode
authorTimm Bäder <mail@baedert.org>
Fri, 30 Aug 2019 05:37:55 +0000 (07:37 +0200)
committerTimm Bäder <mail@baedert.org>
Mon, 9 Sep 2019 15:36:26 +0000 (17:36 +0200)
Creating a recent manager can be fairly expensive and we won't use it if
the widget is not visible or the recent mode has not been entered. Code
other places can already handle a NULL recent manager, so just create it
when entering the recent mode. And shove 25ms of startup time off the
widget-factory this way.

gtk/gtkfilechooserwidget.c

index f2bc4b2b12429ef5fee8f16dae79d56501aed7ea..b229972dad5ec2b02086b46762cd141d26a64d24 100644 (file)
@@ -3150,6 +3150,9 @@ operation_mode_set_recent (GtkFileChooserWidget *impl)
   GFile *file;
   GtkRevealerTransitionType old_revealer_transition_type;
 
+  if (!priv->recent_manager)
+    priv->recent_manager = gtk_recent_manager_get_default ();
+
   gtk_stack_set_visible_child_name (GTK_STACK (priv->browse_files_stack), "list");
   gtk_stack_set_visible_child_name (GTK_STACK (priv->browse_header_stack), "pathbar");
 
@@ -6812,6 +6815,10 @@ add_selection_to_recent_list (GtkFileChooserWidget *impl)
 
   files = gtk_file_chooser_widget_get_files (GTK_FILE_CHOOSER (impl));
 
+
+  if (!priv->recent_manager)
+    priv->recent_manager = gtk_recent_manager_get_default ();
+
   for (l = files; l; l = l->next)
     {
       GFile *file = l->data;
@@ -8640,7 +8647,6 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
   priv->operation_mode = OPERATION_MODE_BROWSE;
   priv->sort_column = MODEL_COL_NAME;
   priv->sort_order = GTK_SORT_ASCENDING;
-  priv->recent_manager = gtk_recent_manager_get_default ();
   priv->create_folders = TRUE;
   priv->auto_selecting_first_row = FALSE;
   priv->renamed_file = NULL;