[gtk+/multiroot-filechooser: 25/30] Use the fast-path _gtk_file_chooser_uri_is_in_roots_list() instead of the slow _gtk_file_chooser_is_



commit da2e50ba63d13d34795ae8901f07a69549d6cd10
Author: Federico Mena Quintero <federico novell com>
Date:   Mon Sep 6 15:17:09 2010 -0500

    Use the fast-path _gtk_file_chooser_uri_is_in_roots_list() instead of the slow _gtk_file_chooser_is_file_in_roots()
    
    Signed-off-by: Federico Mena Quintero <federico novell com>

 gtk/gtkfilechooserdefault.c |   37 +++++++++++++++++++++++--------------
 1 files changed, 23 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 31a15b7..7e32dff 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -1838,6 +1838,19 @@ shortcuts_append_recent (GtkFileChooserDefault *impl)
   impl->changing_folder = old_changing_folders;
 }
 
+static gboolean
+is_file_in_roots (GtkFileChooserDefault *impl, GFile *file)
+{
+  char *uri;
+  gboolean result;
+
+  uri = g_file_get_uri (file);
+  result = _gtk_file_chooser_uri_is_in_roots_list (uri, impl->root_uris);
+  g_free (uri);
+
+  return result;
+}
+
 /* Appends an item for the user's home directory to the shortcuts model */
 static void
 shortcuts_append_home (GtkFileChooserDefault *impl)
@@ -1868,7 +1881,7 @@ shortcuts_append_home (GtkFileChooserDefault *impl)
 
   home = g_file_new_for_path (home_path);
 
-  if (_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), home))
+  if (is_file_in_roots (impl, home))
     {
       shortcuts_insert_file (impl, start_row, SHORTCUT_TYPE_FILE, NULL, home,
                              NULL, FALSE, SHORTCUTS_HOME);
@@ -1917,7 +1930,7 @@ shortcuts_append_desktop (GtkFileChooserDefault *impl)
 
   file = g_file_new_for_path (name);
 
-  if (_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), file))
+  if (is_file_in_roots (impl, file))
     {
       shortcuts_insert_file (impl, start_row, SHORTCUT_TYPE_FILE, NULL,
                              file, _("Desktop"), FALSE, SHORTCUTS_DESKTOP);
@@ -2007,7 +2020,7 @@ shortcuts_append_bookmarks (GtkFileChooserDefault *impl,
       if (local_only && !g_file_is_native (file))
         continue;
 
-      if (!_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), file))
+      if (!is_file_in_roots (impl, file))
         continue;
 
       if (shortcut_find_position (impl, file) != -1)
@@ -2143,8 +2156,7 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
         skip = TRUE;
       else if (impl->root_uris != NULL &&
                (base_file == NULL ||
-                !_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl),
-						     base_file)))
+                !is_file_in_roots (impl, base_file)))
         skip = TRUE;
 
       if (base_file != NULL)
@@ -2325,8 +2337,7 @@ shortcuts_add_custom_folders (GtkFileChooserDefault *impl)
     {
       GFile *file = (GFile *)l->data;
 
-      if (impl->root_uris != NULL &&
-          _gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), file))
+      if (is_file_in_roots (impl, file))
         {
           int pos = shortcuts_get_pos_for_shortcut_folder (impl,
                                                            impl->num_shortcuts);
@@ -5396,8 +5407,7 @@ set_root_uris (GtkFileChooserDefault *impl,
               g_object_unref (home_file);
             }
         }
-      else if (impl->root_uris != NULL &&
-               !_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), impl->current_folder))
+      else if (!is_file_in_roots (impl, impl->current_folder))
         {
           /*
            * If we are pointing to a folder outside of the root URI,
@@ -7304,8 +7314,7 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
       parent_file = g_file_get_parent (data->file);
 
       /* get parent path and try to change the folder to that */
-      if (parent_file &&
-          _gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), parent_file))
+      if (parent_file && is_file_in_roots (impl, parent_file))
         {
 	  g_object_unref (data->file);
 	  data->file = parent_file;
@@ -7455,7 +7464,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser    *chooser,
       return FALSE;
     }
 
-  if (!_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), file))
+  if (!is_file_in_roots (impl, file))
     {
       g_set_error_literal (error,
                            GTK_FILE_CHOOSER_ERROR,
@@ -8029,7 +8038,7 @@ add_shortcut_get_info_cb (GCancellable *cancellable,
   g_object_ref (data->file);
   data->impl->shortcuts = g_slist_append (data->impl->shortcuts, data->file);
 
-  if (_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (data->impl), data->file))
+  if (is_file_in_roots (data->impl, data->file))
     {
       shortcuts_insert_file (data->impl, pos, SHORTCUT_TYPE_FILE, NULL,
                              data->file, NULL, FALSE, SHORTCUTS_SHORTCUTS);
@@ -9073,7 +9082,7 @@ search_add_hit (GtkFileChooserDefault *impl,
     return;
 
   if (!g_file_is_native (file) ||
-      !_gtk_file_chooser_is_file_in_roots (GTK_FILE_CHOOSER (impl), file))
+      !is_file_in_roots (impl, file))
     {
       g_object_unref (file);
       return;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]