diff options
author | Darin Adler <darin@src.gnome.org> | 2000-08-02 22:25:23 +0000 |
---|---|---|
committer | Darin Adler <darin@src.gnome.org> | 2000-08-02 22:25:23 +0000 |
commit | d7268124497ec908754aea35361027fce47c570b (patch) | |
tree | 68bf9d9eed3fc1bac90fb2335f55da9642bca37d | |
parent | 1d671db24c6695931e8eb5294380ecf0bfbed04f (diff) | |
download | nautilus-d7268124497ec908754aea35361027fce47c570b.tar.gz |
Fixed a bug where we did not send out "changed" signals for files that
* libnautilus-extensions/nautilus-file.c: (nautilus_file_changed):
Fixed a bug where we did not send out "changed" signals for files
that have no parents (like "/").
* libnautilus-extensions/nautilus-directory-async.c: (is_needy),
(select_needy_file): Improved logic so it works more precisely
for non-parented files.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-directory-async.c | 46 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-file.c | 4 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-async.c | 46 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 4 |
5 files changed, 76 insertions, 34 deletions
@@ -1,3 +1,13 @@ +2000-08-02 Darin Adler <darin@eazel.com> + + * libnautilus-extensions/nautilus-file.c: (nautilus_file_changed): + Fixed a bug where we did not send out "changed" signals for files + that have no parents (like "/"). + + * libnautilus-extensions/nautilus-directory-async.c: (is_needy), + (select_needy_file): Improved logic so it works more precisely + for non-parented files. + 2000-08-02 Gene Z. Ragan <gzr@eazel.com> Fixed bug 1866, Turn volume mounting code into an object. diff --git a/libnautilus-extensions/nautilus-directory-async.c b/libnautilus-extensions/nautilus-directory-async.c index ff794bf7a..e4abc2640 100644 --- a/libnautilus-extensions/nautilus-directory-async.c +++ b/libnautilus-extensions/nautilus-directory-async.c @@ -1519,6 +1519,7 @@ is_needy (NautilusFile *file, FileCheck check_missing, RequestCheck check_wanted) { + NautilusDirectory *directory; GList *p; ReadyCallback *callback; Monitor *monitor; @@ -1529,18 +1530,31 @@ is_needy (NautilusFile *file, return FALSE; } - for (p = file->details->directory->details->call_when_ready_list; p != NULL; p = p->next) { + directory = file->details->directory; + for (p = directory->details->call_when_ready_list; + p != NULL; p = p->next) { callback = p->data; - if ((* check_wanted) (&callback->request) - && (callback->file == NULL || callback->file == file)) { - return TRUE; + if ((* check_wanted) (&callback->request)) { + if (callback->file == file) { + return TRUE; + } + if (callback->file == NULL + && file != directory->details->as_file) { + return TRUE; + } } } - for (p = file->details->directory->details->monitor_list; p != NULL; p = p->next) { + for (p = directory->details->monitor_list; + p != NULL; p = p->next) { monitor = p->data; - if ((* check_wanted) (&monitor->request) - && (monitor->file == NULL || monitor->file == file)) { - return TRUE; + if ((* check_wanted) (&monitor->request)) { + if (monitor->file == file) { + return TRUE; + } + if (monitor->file == NULL + && file != directory->details->as_file) { + return TRUE; + } } } return FALSE; @@ -1581,8 +1595,8 @@ select_needy_file (NautilusDirectory *directory, if ((* check_missing) (file)) { for (p2 = directory->details->call_when_ready_list; p2 != NULL; p2 = p2->next) { callback = p2->data; - if ((* check_wanted) (&callback->request) - && (callback->file == NULL || callback->file == file)) { + if ((callback->file == NULL || callback->file == file) + && (* check_wanted) (&callback->request)) { break; } } @@ -1591,8 +1605,8 @@ select_needy_file (NautilusDirectory *directory, } for (p2 = directory->details->monitor_list; p2 != NULL; p2 = p2->next) { monitor = p2->data; - if ((* check_wanted) (&monitor->request) - && (monitor->file == NULL || monitor->file == file)) { + if ((monitor->file == NULL || monitor->file == file) + && (* check_wanted) (&monitor->request)) { break; } } @@ -1608,8 +1622,8 @@ select_needy_file (NautilusDirectory *directory, if ((* check_missing) (file)) { for (p2 = directory->details->call_when_ready_list; p2 != NULL; p2 = p2->next) { callback = p2->data; - if ((* check_wanted) (&callback->request) - && callback->file == file) { + if (callback->file == file + && (* check_wanted) (&callback->request)) { break; } } @@ -1618,8 +1632,8 @@ select_needy_file (NautilusDirectory *directory, } for (p2 = directory->details->monitor_list; p2 != NULL; p2 = p2->next) { monitor = p2->data; - if ((* check_wanted) (&monitor->request) - && monitor->file == file) { + if (monitor->file == file + && (* check_wanted) (&monitor->request)) { break; } } diff --git a/libnautilus-extensions/nautilus-file.c b/libnautilus-extensions/nautilus-file.c index 96eb95180..7255b9bec 100644 --- a/libnautilus-extensions/nautilus-file.c +++ b/libnautilus-extensions/nautilus-file.c @@ -3450,7 +3450,9 @@ nautilus_file_changed (NautilusFile *file) g_return_if_fail (NAUTILUS_IS_FILE (file)); - if (!nautilus_file_is_self_owned (file)) { + if (nautilus_file_is_self_owned (file)) { + nautilus_file_emit_changed (file); + } else { fake_list.data = file; fake_list.next = NULL; fake_list.prev = NULL; diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c index ff794bf7a..e4abc2640 100644 --- a/libnautilus-private/nautilus-directory-async.c +++ b/libnautilus-private/nautilus-directory-async.c @@ -1519,6 +1519,7 @@ is_needy (NautilusFile *file, FileCheck check_missing, RequestCheck check_wanted) { + NautilusDirectory *directory; GList *p; ReadyCallback *callback; Monitor *monitor; @@ -1529,18 +1530,31 @@ is_needy (NautilusFile *file, return FALSE; } - for (p = file->details->directory->details->call_when_ready_list; p != NULL; p = p->next) { + directory = file->details->directory; + for (p = directory->details->call_when_ready_list; + p != NULL; p = p->next) { callback = p->data; - if ((* check_wanted) (&callback->request) - && (callback->file == NULL || callback->file == file)) { - return TRUE; + if ((* check_wanted) (&callback->request)) { + if (callback->file == file) { + return TRUE; + } + if (callback->file == NULL + && file != directory->details->as_file) { + return TRUE; + } } } - for (p = file->details->directory->details->monitor_list; p != NULL; p = p->next) { + for (p = directory->details->monitor_list; + p != NULL; p = p->next) { monitor = p->data; - if ((* check_wanted) (&monitor->request) - && (monitor->file == NULL || monitor->file == file)) { - return TRUE; + if ((* check_wanted) (&monitor->request)) { + if (monitor->file == file) { + return TRUE; + } + if (monitor->file == NULL + && file != directory->details->as_file) { + return TRUE; + } } } return FALSE; @@ -1581,8 +1595,8 @@ select_needy_file (NautilusDirectory *directory, if ((* check_missing) (file)) { for (p2 = directory->details->call_when_ready_list; p2 != NULL; p2 = p2->next) { callback = p2->data; - if ((* check_wanted) (&callback->request) - && (callback->file == NULL || callback->file == file)) { + if ((callback->file == NULL || callback->file == file) + && (* check_wanted) (&callback->request)) { break; } } @@ -1591,8 +1605,8 @@ select_needy_file (NautilusDirectory *directory, } for (p2 = directory->details->monitor_list; p2 != NULL; p2 = p2->next) { monitor = p2->data; - if ((* check_wanted) (&monitor->request) - && (monitor->file == NULL || monitor->file == file)) { + if ((monitor->file == NULL || monitor->file == file) + && (* check_wanted) (&monitor->request)) { break; } } @@ -1608,8 +1622,8 @@ select_needy_file (NautilusDirectory *directory, if ((* check_missing) (file)) { for (p2 = directory->details->call_when_ready_list; p2 != NULL; p2 = p2->next) { callback = p2->data; - if ((* check_wanted) (&callback->request) - && callback->file == file) { + if (callback->file == file + && (* check_wanted) (&callback->request)) { break; } } @@ -1618,8 +1632,8 @@ select_needy_file (NautilusDirectory *directory, } for (p2 = directory->details->monitor_list; p2 != NULL; p2 = p2->next) { monitor = p2->data; - if ((* check_wanted) (&monitor->request) - && monitor->file == file) { + if (monitor->file == file + && (* check_wanted) (&monitor->request)) { break; } } diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 96eb95180..7255b9bec 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -3450,7 +3450,9 @@ nautilus_file_changed (NautilusFile *file) g_return_if_fail (NAUTILUS_IS_FILE (file)); - if (!nautilus_file_is_self_owned (file)) { + if (nautilus_file_is_self_owned (file)) { + nautilus_file_emit_changed (file); + } else { fake_list.data = file; fake_list.next = NULL; fake_list.prev = NULL; |