[Xfce4-commits] <thunar:master> Better handling of files without info.
Nick Schermer
noreply at xfce.org
Sat Oct 13 16:12:30 CEST 2012
Updating branch refs/heads/master
to 919a5f205e7b699ec84bcfc858f15cfc7c744dfd (commit)
from 17dd6e7fd6bd5561b5a32d7bf0d12c7cadc641a8 (commit)
commit 919a5f205e7b699ec84bcfc858f15cfc7c744dfd
Author: Nick Schermer <nick at xfce.org>
Date: Sun Oct 7 21:25:35 2012 +0200
Better handling of files without info.
Add function to check if a file has info, with remotes and
devices this sometimes is not working. Also handle null infos
better.
thunar/thunar-file.c | 27 ++++++++++++++++++++++++++-
thunar/thunar-file.h | 2 ++
thunar/thunar-folder.c | 8 +++-----
thunar/thunar-shortcuts-view.c | 2 +-
4 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index cb93e57..d0c7286 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -1137,6 +1137,28 @@ thunar_file_get_parent (const ThunarFile *file,
/**
+ * thunar_file_check_loaded:
+ * @file : a #ThunarFile instance.
+ *
+ * Check if @file has its information loaded, if not, try this once else
+ * return %FALSE.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_file_check_loaded (ThunarFile *file)
+{
+ _thunar_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ if (G_UNLIKELY (file->info == NULL))
+ thunar_file_load (file, NULL, NULL);
+
+ return (file->info != NULL);
+}
+
+
+
+/**
* thunar_file_execute:
* @file : a #ThunarFile instance.
* @working_directory : the working directory used to resolve relative filenames
@@ -2823,7 +2845,10 @@ thunar_file_get_emblem_names (ThunarFile *file)
GList *emblems = NULL;
_thunar_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
- _thunar_return_val_if_fail (G_IS_FILE_INFO (file->info), NULL);
+
+ /* leave if there is no info */
+ if (file->info == NULL)
+ return NULL;
/* determine the custom emblems */
emblem_names = g_file_info_get_attribute_stringv (file->info, "metadata::emblems");
diff --git a/thunar/thunar-file.h b/thunar/thunar-file.h
index a17325e..ae17d56 100644
--- a/thunar/thunar-file.h
+++ b/thunar/thunar-file.h
@@ -130,6 +130,8 @@ GFileInfo *thunar_file_get_info (const ThunarFile *file
ThunarFile *thunar_file_get_parent (const ThunarFile *file,
GError **error);
+gboolean thunar_file_check_loaded (ThunarFile *file);
+
gboolean thunar_file_execute (ThunarFile *file,
GFile *working_directory,
gpointer parent,
diff --git a/thunar/thunar-folder.c b/thunar/thunar-folder.c
index d50076d..7faaa23 100644
--- a/thunar/thunar-folder.c
+++ b/thunar/thunar-folder.c
@@ -707,11 +707,9 @@ thunar_folder_get_for_file (ThunarFile *file)
_thunar_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
- /* make sure the folder is mounted, this happens when a
- * mount is entered for the first time */
- if (thunar_file_get_info (file) == NULL
- && !thunar_file_is_mounted (file))
- thunar_file_reload (file);
+ /* make sure the file is loaded */
+ if (!thunar_file_check_loaded (file))
+ return NULL;
_thunar_return_val_if_fail (thunar_file_is_directory (file), NULL);
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index 03badea..b8d19a3 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -1365,7 +1365,7 @@ thunar_shortcuts_view_poke_file_finish (ThunarBrowser *browser,
gtk_widget_get_screen (GTK_WIDGET (browser)), NULL);
g_object_unref (application);
}
- else
+ else if (thunar_file_check_loaded (target_file))
{
/* invoke the signal to change to that folder */
g_signal_emit (browser, view_signals[SHORTCUT_ACTIVATED], 0, target_file);
More information about the Xfce4-commits
mailing list