summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarin Adler <darin@src.gnome.org>2000-08-02 22:25:23 +0000
committerDarin Adler <darin@src.gnome.org>2000-08-02 22:25:23 +0000
commitd7268124497ec908754aea35361027fce47c570b (patch)
tree68bf9d9eed3fc1bac90fb2335f55da9642bca37d
parent1d671db24c6695931e8eb5294380ecf0bfbed04f (diff)
downloadnautilus-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--ChangeLog10
-rw-r--r--libnautilus-extensions/nautilus-directory-async.c46
-rw-r--r--libnautilus-extensions/nautilus-file.c4
-rw-r--r--libnautilus-private/nautilus-directory-async.c46
-rw-r--r--libnautilus-private/nautilus-file.c4
5 files changed, 76 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 091ebc621..571dc2dcc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;