summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2004-10-11 11:49:00 +0000
committerAlexander Larsson <alexl@src.gnome.org>2004-10-11 11:49:00 +0000
commit22a0330d9213d59e755883be73d00590f2f93153 (patch)
tree28d627b05177e1893e2cafa7fb1db4f23752c365
parentd2d44c7f58239a851ea175e580429c056d3bca28 (diff)
downloadnautilus-22a0330d9213d59e755883be73d00590f2f93153.tar.gz
Make nautilus_directory_get_file_list virtual
2004-10-11 Alexander Larsson <alexl@redhat.com> * libnautilus-private/nautilus-directory.[ch]: Make nautilus_directory_get_file_list virtual * libnautilus-private/nautilus-desktop-directory.c: * libnautilus-private/nautilus-merged-directory.c: Override virtual to return all files. Fixes bug #149096. Patch from Jimmy Do <crispyleaves@gmail.com> * src/file-manager/fm-directory-view.c (fm_directory_view_init_show_hidden_files): Don't set up hidden files prefs if ignoring them * src/file-manager/fm-icon-view.c (should_show_file_on_screen): Check if file should be visible.
-rw-r--r--ChangeLog16
-rw-r--r--libnautilus-private/nautilus-desktop-directory.c16
-rw-r--r--libnautilus-private/nautilus-directory.c10
-rw-r--r--libnautilus-private/nautilus-directory.h8
-rw-r--r--libnautilus-private/nautilus-merged-directory.c28
-rw-r--r--src/file-manager/fm-directory-view.c4
-rw-r--r--src/file-manager/fm-icon-view.c4
7 files changed, 86 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fca03229..be04d0b81 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2004-10-11 Alexander Larsson <alexl@redhat.com>
+
+ * libnautilus-private/nautilus-directory.[ch]:
+ Make nautilus_directory_get_file_list virtual
+ * libnautilus-private/nautilus-desktop-directory.c:
+ * libnautilus-private/nautilus-merged-directory.c:
+ Override virtual to return all files. Fixes bug #149096.
+ Patch from Jimmy Do <crispyleaves@gmail.com>
+
+ * src/file-manager/fm-directory-view.c
+ (fm_directory_view_init_show_hidden_files):
+ Don't set up hidden files prefs if ignoring them
+
+ * src/file-manager/fm-icon-view.c (should_show_file_on_screen):
+ Check if file should be visible.
+
2004-10-11 Anders Carlsson <andersca@gnome.org>
* libnautilus-private/nautilus-metadata.h:
diff --git a/libnautilus-private/nautilus-desktop-directory.c b/libnautilus-private/nautilus-desktop-directory.c
index 6f484fcd0..ddf5c84f7 100644
--- a/libnautilus-private/nautilus-desktop-directory.c
+++ b/libnautilus-private/nautilus-desktop-directory.c
@@ -393,6 +393,17 @@ desktop_is_not_empty (NautilusDirectory *directory)
return directory->details->file_list != NULL;
}
+static GList *
+desktop_get_file_list (NautilusDirectory *directory)
+{
+ GList *real_dir_file_list, *desktop_dir_file_list;
+ real_dir_file_list = nautilus_directory_get_file_list
+ (NAUTILUS_DESKTOP_DIRECTORY (directory)->details->real_directory);
+ desktop_dir_file_list = GNOME_CALL_PARENT_WITH_DEFAULT
+ (NAUTILUS_DIRECTORY_CLASS, get_file_list, (directory), NULL);
+ return g_list_concat (real_dir_file_list, desktop_dir_file_list);
+}
+
NautilusDirectory *
nautilus_desktop_directory_get_real_directory (NautilusDesktopDirectory *desktop)
{
@@ -492,5 +503,10 @@ nautilus_desktop_directory_class_init (NautilusDesktopDirectoryClass *class)
directory_class->force_reload = desktop_force_reload;
directory_class->are_all_files_seen = desktop_are_all_files_seen;
directory_class->is_not_empty = desktop_is_not_empty;
+ /* Override get_file_list so that we can return the list of files
+ * in NautilusDesktopDirectory->details->real_directory,
+ * in addition to the list of standard desktop icons on the desktop.
+ */
+ directory_class->get_file_list = desktop_get_file_list;
}
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c
index 9833f52dc..cca50d194 100644
--- a/libnautilus-private/nautilus-directory.c
+++ b/libnautilus-private/nautilus-directory.c
@@ -70,6 +70,7 @@ static void nautilus_directory_init (gpointer
static void nautilus_directory_class_init (NautilusDirectoryClass *klass);
static NautilusDirectory *nautilus_directory_new (const char *uri);
static char * real_get_name_for_self_as_new_file (NautilusDirectory *directory);
+static GList * real_get_file_list (NautilusDirectory *directory);
static void set_directory_uri (NautilusDirectory *directory,
const char *new_uri);
@@ -120,6 +121,7 @@ nautilus_directory_class_init (NautilusDirectoryClass *klass)
G_TYPE_NONE, 1, G_TYPE_INT);
klass->get_name_for_self_as_new_file = real_get_name_for_self_as_new_file;
+ klass->get_file_list = real_get_file_list;
g_type_class_add_private (klass, sizeof (NautilusDirectoryDetails));
}
@@ -1629,6 +1631,14 @@ is_tentative (gpointer data, gpointer callback_data)
GList *
nautilus_directory_get_file_list (NautilusDirectory *directory)
{
+ return EEL_CALL_METHOD_WITH_RETURN_VALUE
+ (NAUTILUS_DIRECTORY_CLASS, directory,
+ get_file_list, (directory));
+}
+
+static GList *
+real_get_file_list (NautilusDirectory *directory)
+{
GList *tentative_files, *non_tentative_files;
tentative_files = eel_g_list_partition
diff --git a/libnautilus-private/nautilus-directory.h b/libnautilus-private/nautilus-directory.h
index 611ece15d..c708daaaa 100644
--- a/libnautilus-private/nautilus-directory.h
+++ b/libnautilus-private/nautilus-directory.h
@@ -126,6 +126,14 @@ typedef struct
gboolean (* are_all_files_seen) (NautilusDirectory *directory);
gboolean (* is_not_empty) (NautilusDirectory *directory);
char * (* get_name_for_self_as_new_file) (NautilusDirectory *directory);
+
+ /* get_file_list is a function pointer that subclasses may override to
+ * customize collecting the list of files in a directory.
+ * For example, the NautilusDesktopDirectory overrides this so that it can
+ * merge together the list of files in the $HOME/Desktop directory with
+ * the list of standard icons (Computer, Home, Trash) on the desktop.
+ */
+ GList * (* get_file_list) (NautilusDirectory *directory);
} NautilusDirectoryClass;
/* Basic GObject requirements. */
diff --git a/libnautilus-private/nautilus-merged-directory.c b/libnautilus-private/nautilus-merged-directory.c
index 39118c8ae..ffb366a5a 100644
--- a/libnautilus-private/nautilus-merged-directory.c
+++ b/libnautilus-private/nautilus-merged-directory.c
@@ -397,6 +397,30 @@ merged_is_not_empty (NautilusDirectory *directory)
return FALSE;
}
+static GList *
+merged_get_file_list (NautilusDirectory *directory)
+{
+ GList *dirs_file_list, *merged_dir_file_list;
+ GList *dir_list;
+ GList *cur_node;
+
+ dirs_file_list = NULL;
+ dir_list = NAUTILUS_MERGED_DIRECTORY (directory)->details->directories;
+
+ for (cur_node = dir_list; cur_node != NULL; cur_node = cur_node->next) {
+ NautilusDirectory *cur_dir;
+
+ cur_dir = NAUTILUS_DIRECTORY (cur_node->data);
+ dirs_file_list = g_list_concat (dirs_file_list,
+ nautilus_directory_get_file_list (cur_dir));
+ }
+
+ merged_dir_file_list = GNOME_CALL_PARENT_WITH_DEFAULT
+ (NAUTILUS_DIRECTORY_CLASS, get_file_list, (directory), NULL);
+
+ return g_list_concat (dirs_file_list, merged_dir_file_list);
+}
+
static void
forward_files_added_cover (NautilusDirectory *real_directory,
GList *files,
@@ -621,6 +645,10 @@ nautilus_merged_directory_class_init (NautilusMergedDirectoryClass *class)
directory_class->force_reload = merged_force_reload;
directory_class->are_all_files_seen = merged_are_all_files_seen;
directory_class->is_not_empty = merged_is_not_empty;
+ /* Override get_file_list so that we can return a list that includes
+ * the files from each of the directories in NautilusMergedDirectory->details->directories.
+ */
+ directory_class->get_file_list = merged_get_file_list;
class->add_real_directory = merged_add_real_directory;
class->remove_real_directory = merged_remove_real_directory;
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index 79d9f95a1..bd8c21517 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -5550,6 +5550,10 @@ fm_directory_view_init_show_hidden_files (FMDirectoryView *view)
gboolean show_hidden_changed;
gboolean show_hidden_default_setting;
+ if (view->details->ignore_hidden_file_preferences) {
+ return;
+ }
+
show_hidden_changed = FALSE;
mode = nautilus_view_get_show_hidden_files_mode (view->details->nautilus_view);
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index 995d50fa0..4662f0582 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -507,6 +507,10 @@ should_show_file_on_screen (FMDirectoryView *view, NautilusFile *file)
icon_view = FM_ICON_VIEW (view);
+ if (!fm_directory_view_should_show_file (view, file)) {
+ return FALSE;
+ }
+
/* Get the screen for this icon from the metadata. */
screen_string = nautilus_file_get_metadata
(file, NAUTILUS_METADATA_KEY_SCREEN, "0");