diff options
author | Federico Mena Quintero <federico@gnome.org> | 2011-08-26 11:38:11 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2011-08-30 11:21:09 -0500 |
commit | 6e31bc1128874da1b2ccc7c1d481c8949c48969c (patch) | |
tree | 98add2aeff22b1d468b36db84a998870290ea4ef | |
parent | 37f9feebd24f5fcf46b6fc92ce5304af6cac1763 (diff) | |
download | gtk+-6e31bc1128874da1b2ccc7c1d481c8949c48969c.tar.gz |
Load and populate the recent-items in a single pass
There's no real asynchronicity going on, anyway, so let's do both within
a single iteration of the idle handler.
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
-rw-r--r-- | gtk/gtkfilechooserdefault.c | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 031b28bfcd..87122cfbf2 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -9269,7 +9269,6 @@ typedef struct { GtkFileChooserDefault *impl; GList *items; - guint needs_sorting : 1; } RecentLoadData; static void @@ -9364,30 +9363,18 @@ recent_idle_load (gpointer data) if (!impl->recent_manager) return FALSE; - /* first iteration: load all the items */ + load_data->items = gtk_recent_manager_get_items (impl->recent_manager); if (!load_data->items) - { - load_data->items = gtk_recent_manager_get_items (impl->recent_manager); - if (!load_data->items) - return FALSE; - - load_data->needs_sorting = TRUE; + return FALSE; - return TRUE; - } - - /* second iteration: MRU sorting and clamping, and populating the model */ - if (load_data->needs_sorting) - { - if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN) - populate_model_with_recent_items (impl, load_data->items); - else - populate_model_with_folders (impl, load_data->items); + if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN) + populate_model_with_recent_items (impl, load_data->items); + else + populate_model_with_folders (impl, load_data->items); - g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL); - g_list_free (load_data->items); - load_data->items = NULL; - } + g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL); + g_list_free (load_data->items); + load_data->items = NULL; return FALSE; } @@ -9407,7 +9394,6 @@ recent_start_loading (GtkFileChooserDefault *impl) load_data = g_new (RecentLoadData, 1); load_data->impl = impl; load_data->items = NULL; - load_data->needs_sorting = TRUE; /* begin lazy loading the recent files into the model */ impl->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30, |