summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2011-08-26 11:38:11 -0500
committerFederico Mena Quintero <federico@gnome.org>2011-08-30 11:21:09 -0500
commit6e31bc1128874da1b2ccc7c1d481c8949c48969c (patch)
tree98add2aeff22b1d468b36db84a998870290ea4ef
parent37f9feebd24f5fcf46b6fc92ce5304af6cac1763 (diff)
downloadgtk+-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.c32
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,