File nautilus-directory-cache-is-in-trash.diff of Package nautilus
2006-09-27 Christian Neumair <chris@gnome-de.org>
* libnautilus-private/nautilus-directory.c:
* libnautilus-private/nautilus-directory.h:
* libnautilus-private/nautilus-directory-private.h:
Add is_in_trash_state to NautilusDirectoryDetails.
Also add nautilus_directory_is_in_trash which works
like nautilus_directory_is_local.
* libnautilus-private/nautilus-file.c:
Proxy nautilus_file_is_in_trash to
nautilus_directory_is_in_trash, similar to
nautilus_file_is_local.
Index: libnautilus-private/nautilus-file.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file.c,v
retrieving revision 1.390
retrieving revision 1.391
diff -u -p -r1.390 -r1.391
--- nautilus/libnautilus-private/nautilus-file.c 25 Jul 2006 14:18:03 -0000 1.390
+++ nautilus/libnautilus-private/nautilus-file.c 27 Sep 2006 16:02:39 -0000 1.391
@@ -5228,9 +5228,9 @@ nautilus_file_is_directory (NautilusFile
gboolean
nautilus_file_is_in_trash (NautilusFile *file)
{
- g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
+ g_assert (NAUTILUS_IS_FILE (file));
- return eel_uri_is_in_trash (file->details->directory->details->uri);
+ return nautilus_directory_is_in_trash (file->details->directory);
}
GnomeVFSResult
Index: libnautilus-private/nautilus-directory-private.h
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-directory-private.h,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -p -r1.97 -r1.98
--- nautilus/libnautilus-private/nautilus-directory-private.h 23 Aug 2006 09:07:11 -0000 1.97
+++ nautilus/libnautilus-private/nautilus-directory-private.h 27 Sep 2006 16:02:32 -0000 1.98
@@ -104,6 +104,8 @@ struct NautilusDirectoryDetails
GnomeVFSAsyncHandle *get_info_in_progress;
gboolean get_info_has_slow_mime_type;
+ int is_in_trash_state;
+
NautilusFile *slow_mime_type_file;
GnomeVFSAsyncHandle *slow_mime_type_in_progress;
Index: libnautilus-private/nautilus-directory.h
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-directory.h,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -p -r1.68 -r1.69
--- nautilus/libnautilus-private/nautilus-directory.h 12 Dec 2005 16:59:10 -0000 1.68
+++ nautilus/libnautilus-private/nautilus-directory.h 27 Sep 2006 16:02:38 -0000 1.69
@@ -216,6 +216,8 @@ gboolean nautilus_directory_ar
/* Return true if the directory is local. */
gboolean nautilus_directory_is_local (NautilusDirectory *directory);
+gboolean nautilus_directory_is_in_trash (NautilusDirectory *directory);
+
/* Return false if directory contains anything besides a Nautilus metafile.
* Only valid if directory is monitored. Used by the Trash monitor.
*/
Index: libnautilus-private/nautilus-directory.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-directory.c,v
retrieving revision 1.259
retrieving revision 1.260
diff -u -p -r1.259 -r1.260
--- nautilus/libnautilus-private/nautilus-directory.c 23 Aug 2006 09:07:12 -0000 1.259
+++ nautilus/libnautilus-private/nautilus-directory.c 27 Sep 2006 16:02:32 -0000 1.260
@@ -553,6 +553,25 @@ nautilus_directory_is_local (NautilusDir
}
gboolean
+nautilus_directory_is_in_trash (NautilusDirectory *directory)
+{
+ g_assert (NAUTILUS_IS_DIRECTORY (directory));
+
+ if (directory->details->uri == NULL) {
+ return FALSE;
+ }
+ if (directory->details->is_in_trash_state == 0) {
+ if (eel_uri_is_in_trash (directory->details->uri)) {
+ directory->details->is_in_trash_state = 1;
+ } else {
+ directory->details->is_in_trash_state = -1;
+ }
+ }
+
+ return directory->details->is_in_trash_state > 0;
+}
+
+gboolean
nautilus_directory_are_all_files_seen (NautilusDirectory *directory)
{
g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), FALSE);