summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael@ximian.com>2002-03-08 22:32:35 +0000
committerMichael Meeks <michael@src.gnome.org>2002-03-08 22:32:35 +0000
commitab3810795b164a0a8369702f5aa9752f7cb9b66f (patch)
tree86a5fb7e38c5a23e329a5243849694d4f289db26
parent35f5c495c2210367fa507baa282c32073ae12b6a (diff)
downloadnautilus-ab3810795b164a0a8369702f5aa9752f7cb9b66f.tar.gz
create a UI component for the status, that is separate from the shell UI
2002-03-08 Michael Meeks <michael@ximian.com> * src/nautilus-window.c (nautilus_window_constructed): create a UI component for the status, that is separate from the shell UI component. (nautilus_window_finalize): release the status_ui. (nautilus_window_clear_status): remove fixme #43597 (nautilus_window_set_status): upd.
-rw-r--r--ChangeLog9
-rw-r--r--src/nautilus-navigation-window.c29
-rw-r--r--src/nautilus-object-window.c29
-rw-r--r--src/nautilus-spatial-window.c29
-rw-r--r--src/nautilus-window-private.h1
-rw-r--r--src/nautilus-window.c29
6 files changed, 74 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog
index affbe7144..2cfe7db36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2002-03-08 Michael Meeks <michael@ximian.com>
+
+ * src/nautilus-window.c
+ (nautilus_window_constructed): create a UI component for
+ the status, that is separate from the shell UI component.
+ (nautilus_window_finalize): release the status_ui.
+ (nautilus_window_clear_status): remove fixme #43597
+ (nautilus_window_set_status): upd.
+
2002-03-08 Darin Adler <darin@bentspoon.com>
* components/adapter/main.c: (main): Use gdk_get_display, not
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index d04614497..f4422a482 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -334,16 +334,9 @@ nautilus_window_clear_status (gpointer callback_data)
window = NAUTILUS_WINDOW (callback_data);
- nautilus_window_ui_freeze (window);
-
- /* FIXME bugzilla.gnome.org 43597:
- * Should pass "" or NULL here. This didn't work, then did, now doesn't again.
- * When this is fixed in Bonobo we should change this line.
- */
- bonobo_ui_component_set_status (window->details->shell_ui, " ", NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, NULL, NULL);
window->status_bar_clear_id = 0;
- nautilus_window_ui_thaw (window);
return FALSE;
}
@@ -353,19 +346,15 @@ nautilus_window_set_status (NautilusWindow *window, const char *text)
if (window->status_bar_clear_id != 0) {
g_source_remove (window->status_bar_clear_id);
}
-
- nautilus_window_ui_freeze (window);
if (text != NULL && text[0] != '\0') {
- bonobo_ui_component_set_status (window->details->shell_ui, text, NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, text, NULL);
window->status_bar_clear_id = g_timeout_add
(STATUS_BAR_CLEAR_TIMEOUT, nautilus_window_clear_status, window);
} else {
nautilus_window_clear_status (window);
window->status_bar_clear_id = 0;
}
-
- nautilus_window_ui_thaw (window);
}
void
@@ -556,6 +545,15 @@ nautilus_window_constructed (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Create a separate component so when we remove the status
+ * we don't loose the status bar
+ */
+ window->details->status_ui = bonobo_ui_component_new ("Status Component");
+ bonobo_ui_component_set_container
+ (window->details->status_ui,
+ nautilus_window_get_ui_container (window),
+ NULL);
+
nautilus_window_ui_freeze (window);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -819,6 +817,11 @@ nautilus_window_finalize (GObject *object)
bonobo_object_unref (window->details->shell_ui);
}
+ if (window->details->status_ui != NULL) {
+ bonobo_ui_component_unset_container (window->details->status_ui, NULL);
+ bonobo_object_unref (window->details->status_ui);
+ }
+
nautilus_file_unref (window->details->viewed_file);
free_stored_viewers (window);
diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c
index d04614497..f4422a482 100644
--- a/src/nautilus-object-window.c
+++ b/src/nautilus-object-window.c
@@ -334,16 +334,9 @@ nautilus_window_clear_status (gpointer callback_data)
window = NAUTILUS_WINDOW (callback_data);
- nautilus_window_ui_freeze (window);
-
- /* FIXME bugzilla.gnome.org 43597:
- * Should pass "" or NULL here. This didn't work, then did, now doesn't again.
- * When this is fixed in Bonobo we should change this line.
- */
- bonobo_ui_component_set_status (window->details->shell_ui, " ", NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, NULL, NULL);
window->status_bar_clear_id = 0;
- nautilus_window_ui_thaw (window);
return FALSE;
}
@@ -353,19 +346,15 @@ nautilus_window_set_status (NautilusWindow *window, const char *text)
if (window->status_bar_clear_id != 0) {
g_source_remove (window->status_bar_clear_id);
}
-
- nautilus_window_ui_freeze (window);
if (text != NULL && text[0] != '\0') {
- bonobo_ui_component_set_status (window->details->shell_ui, text, NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, text, NULL);
window->status_bar_clear_id = g_timeout_add
(STATUS_BAR_CLEAR_TIMEOUT, nautilus_window_clear_status, window);
} else {
nautilus_window_clear_status (window);
window->status_bar_clear_id = 0;
}
-
- nautilus_window_ui_thaw (window);
}
void
@@ -556,6 +545,15 @@ nautilus_window_constructed (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Create a separate component so when we remove the status
+ * we don't loose the status bar
+ */
+ window->details->status_ui = bonobo_ui_component_new ("Status Component");
+ bonobo_ui_component_set_container
+ (window->details->status_ui,
+ nautilus_window_get_ui_container (window),
+ NULL);
+
nautilus_window_ui_freeze (window);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -819,6 +817,11 @@ nautilus_window_finalize (GObject *object)
bonobo_object_unref (window->details->shell_ui);
}
+ if (window->details->status_ui != NULL) {
+ bonobo_ui_component_unset_container (window->details->status_ui, NULL);
+ bonobo_object_unref (window->details->status_ui);
+ }
+
nautilus_file_unref (window->details->viewed_file);
free_stored_viewers (window);
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index d04614497..f4422a482 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -334,16 +334,9 @@ nautilus_window_clear_status (gpointer callback_data)
window = NAUTILUS_WINDOW (callback_data);
- nautilus_window_ui_freeze (window);
-
- /* FIXME bugzilla.gnome.org 43597:
- * Should pass "" or NULL here. This didn't work, then did, now doesn't again.
- * When this is fixed in Bonobo we should change this line.
- */
- bonobo_ui_component_set_status (window->details->shell_ui, " ", NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, NULL, NULL);
window->status_bar_clear_id = 0;
- nautilus_window_ui_thaw (window);
return FALSE;
}
@@ -353,19 +346,15 @@ nautilus_window_set_status (NautilusWindow *window, const char *text)
if (window->status_bar_clear_id != 0) {
g_source_remove (window->status_bar_clear_id);
}
-
- nautilus_window_ui_freeze (window);
if (text != NULL && text[0] != '\0') {
- bonobo_ui_component_set_status (window->details->shell_ui, text, NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, text, NULL);
window->status_bar_clear_id = g_timeout_add
(STATUS_BAR_CLEAR_TIMEOUT, nautilus_window_clear_status, window);
} else {
nautilus_window_clear_status (window);
window->status_bar_clear_id = 0;
}
-
- nautilus_window_ui_thaw (window);
}
void
@@ -556,6 +545,15 @@ nautilus_window_constructed (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Create a separate component so when we remove the status
+ * we don't loose the status bar
+ */
+ window->details->status_ui = bonobo_ui_component_new ("Status Component");
+ bonobo_ui_component_set_container
+ (window->details->status_ui,
+ nautilus_window_get_ui_container (window),
+ NULL);
+
nautilus_window_ui_freeze (window);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -819,6 +817,11 @@ nautilus_window_finalize (GObject *object)
bonobo_object_unref (window->details->shell_ui);
}
+ if (window->details->status_ui != NULL) {
+ bonobo_ui_component_unset_container (window->details->status_ui, NULL);
+ bonobo_object_unref (window->details->status_ui);
+ }
+
nautilus_file_unref (window->details->viewed_file);
free_stored_viewers (window);
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index 5fda2d52a..07dad23bb 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -48,6 +48,7 @@ struct NautilusWindowDetails
/* Bonobo. */
BonoboUIContainer *ui_container;
BonoboUIComponent *shell_ui;
+ BonoboUIComponent *status_ui;
gboolean updating_bonobo_state;
int ui_change_depth;
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index d04614497..f4422a482 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -334,16 +334,9 @@ nautilus_window_clear_status (gpointer callback_data)
window = NAUTILUS_WINDOW (callback_data);
- nautilus_window_ui_freeze (window);
-
- /* FIXME bugzilla.gnome.org 43597:
- * Should pass "" or NULL here. This didn't work, then did, now doesn't again.
- * When this is fixed in Bonobo we should change this line.
- */
- bonobo_ui_component_set_status (window->details->shell_ui, " ", NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, NULL, NULL);
window->status_bar_clear_id = 0;
- nautilus_window_ui_thaw (window);
return FALSE;
}
@@ -353,19 +346,15 @@ nautilus_window_set_status (NautilusWindow *window, const char *text)
if (window->status_bar_clear_id != 0) {
g_source_remove (window->status_bar_clear_id);
}
-
- nautilus_window_ui_freeze (window);
if (text != NULL && text[0] != '\0') {
- bonobo_ui_component_set_status (window->details->shell_ui, text, NULL);
+ bonobo_ui_component_set_status (window->details->status_ui, text, NULL);
window->status_bar_clear_id = g_timeout_add
(STATUS_BAR_CLEAR_TIMEOUT, nautilus_window_clear_status, window);
} else {
nautilus_window_clear_status (window);
window->status_bar_clear_id = 0;
}
-
- nautilus_window_ui_thaw (window);
}
void
@@ -556,6 +545,15 @@ nautilus_window_constructed (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Create a separate component so when we remove the status
+ * we don't loose the status bar
+ */
+ window->details->status_ui = bonobo_ui_component_new ("Status Component");
+ bonobo_ui_component_set_container
+ (window->details->status_ui,
+ nautilus_window_get_ui_container (window),
+ NULL);
+
nautilus_window_ui_freeze (window);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -819,6 +817,11 @@ nautilus_window_finalize (GObject *object)
bonobo_object_unref (window->details->shell_ui);
}
+ if (window->details->status_ui != NULL) {
+ bonobo_ui_component_unset_container (window->details->status_ui, NULL);
+ bonobo_object_unref (window->details->status_ui);
+ }
+
nautilus_file_unref (window->details->viewed_file);
free_stored_viewers (window);