diff options
author | Alexander Larsson <alexl@redhat.com> | 2004-10-11 11:49:00 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2004-10-11 11:49:00 +0000 |
commit | 22a0330d9213d59e755883be73d00590f2f93153 (patch) | |
tree | 28d627b05177e1893e2cafa7fb1db4f23752c365 | |
parent | d2d44c7f58239a851ea175e580429c056d3bca28 (diff) | |
download | nautilus-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-- | ChangeLog | 16 | ||||
-rw-r--r-- | libnautilus-private/nautilus-desktop-directory.c | 16 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 10 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-merged-directory.c | 28 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 4 | ||||
-rw-r--r-- | src/file-manager/fm-icon-view.c | 4 |
7 files changed, 86 insertions, 0 deletions
@@ -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"); |