summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael@ximian.com>2002-03-07 14:02:19 +0000
committerMichael Meeks <michael@src.gnome.org>2002-03-07 14:02:19 +0000
commit6b5798037c6df519b12adb45ff919ea796856034 (patch)
tree80fa3f1edf7c6e5a22f48895b8c3fc3551a2ef8e
parent933e88806a23090131e3e58f67df515faba8e3fd (diff)
downloadnautilus-6b5798037c6df519b12adb45ff919ea796856034.tar.gz
impl. to cope with having a paned with no child2, without doing lots of
2002-03-07 Michael Meeks <michael@ximian.com> * libnautilus-private/nautilus-horizontal-splitter.c (nautilus_horizontal_splitter_size_allocate): impl. to cope with having a paned with no child2, without doing lots of bogus size re-allocation. (nautilus_horizontal_splitter_class_init): upd. (nautilus_horizontal_splitter_pack2): impl, since gtkpaned relies on the re-size to generate an expose to re-render it's splitter grabber thing.a * src/nautilus-sidebar.c (nautilus_sidebar_set_width): impl. moving all sidebar preferences here, (nautilus_sidebar_init): move auto value setup here from class_init to save possible re-enterancy issue. Request the size we want for the sidebar, the pane will under-allocate if neccessary. Set the old_width to the correct size so we don't re-render the paned lots as it swiches about. * src/nautilus-window.c (nautilus_window_constructed): reflow to simplify, call sidebar_set_width. (nautilus_window_set_content_view_widget): use nautilus_..._pack2 instead of gtk_paned to fix rendering. 2002-03-06 Michael Meeks <michael@ximian.com> * components/notes/nautilus-notes.c (make_notes_view): upd. * components/news/nautilus-news.c (rss_read_done_callback): parse the RTF, but don't spew warnings everywhere. (make_news_view): upd. * components/throbber/main.c (cb_create_throbber): impl. (throbber_object_destroyed, throbber_make_object): axe cut & paste. * libnautilus/nautilus-view-standard-main.c (nautilus_view_create_from_get_type_function): widen from NautilusView to BonoboObject, this code has a much wider application. (make_object): ditto. * components/hardware/nautilus-hardware-view.c (nautilus_hardware_view_get_nautilus_view): upd. * components/throbber/nautilus-throbber.c (nautilus_throbber_new): kill. * libnautilus/nautilus-view-standard-main.c (nautilus_view_standard_main_multi): use gdk_get_display. * libnautilus-private/nautilus-bonobo-extensions.c (nautilus_bonobo_activation_register_for_display): impl. * src/nautilus-application.c (nautilus_application_startup): use it. * src/nautilus-window-toolbars.c (location_change_at_idle_callback), (throbber_callback): move from nautilus-window.c (nautilus_window_allow_stop): move this here, prune redundant sets, simplify property bag extraction. * src/nautilus-window.c (nautilus_window_constructed): move throbber location changed code out of here. (nautilus_window_unrealize): no explicit removal from remote property bag neccessary & upd. * libnautilus-private/nautilus-metafile-factory.c (corba_open): reduce complexity.
-rw-r--r--ChangeLog79
-rw-r--r--components/hardware/main.c2
-rw-r--r--components/hardware/nautilus-hardware-view.c4
-rw-r--r--components/hardware/nautilus-hardware-view.h2
-rw-r--r--components/news/nautilus-news.c14
-rw-r--r--components/notes/nautilus-notes.c6
-rw-r--r--components/throbber/main.c87
-rw-r--r--components/throbber/nautilus-throbber.c11
-rw-r--r--components/throbber/nautilus-throbber.h27
-rw-r--r--libnautilus-private/nautilus-bonobo-extensions.c17
-rw-r--r--libnautilus-private/nautilus-bonobo-extensions.h3
-rw-r--r--libnautilus-private/nautilus-horizontal-splitter.c78
-rw-r--r--libnautilus-private/nautilus-horizontal-splitter.h2
-rw-r--r--libnautilus-private/nautilus-metafile-factory.c6
-rw-r--r--libnautilus/nautilus-view-standard-main.c9
-rw-r--r--libnautilus/nautilus-view-standard-main.h48
-rw-r--r--src/nautilus-application.c3
-rw-r--r--src/nautilus-information-panel.c50
-rw-r--r--src/nautilus-information-panel.h1
-rw-r--r--src/nautilus-navigation-window.c148
-rw-r--r--src/nautilus-object-window.c148
-rw-r--r--src/nautilus-sidebar.c50
-rw-r--r--src/nautilus-sidebar.h1
-rw-r--r--src/nautilus-spatial-window.c148
-rw-r--r--src/nautilus-window-private.h5
-rw-r--r--src/nautilus-window-toolbars.c143
-rw-r--r--src/nautilus-window.c148
27 files changed, 540 insertions, 700 deletions
diff --git a/ChangeLog b/ChangeLog
index b34e986d2..71ddb28e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,82 @@
+2002-03-07 Michael Meeks <michael@ximian.com>
+
+ * libnautilus-private/nautilus-horizontal-splitter.c
+ (nautilus_horizontal_splitter_size_allocate): impl. to
+ cope with having a paned with no child2, without doing
+ lots of bogus size re-allocation.
+ (nautilus_horizontal_splitter_class_init): upd.
+ (nautilus_horizontal_splitter_pack2): impl, since
+ gtkpaned relies on the re-size to generate an expose
+ to re-render it's splitter grabber thing.a
+
+ * src/nautilus-sidebar.c
+ (nautilus_sidebar_set_width): impl. moving all sidebar
+ preferences here,
+ (nautilus_sidebar_init): move auto value setup
+ here from class_init to save possible re-enterancy
+ issue. Request the size we want for the sidebar,
+ the pane will under-allocate if neccessary.
+ Set the old_width to the correct size so we don't
+ re-render the paned lots as it swiches about.
+
+ * src/nautilus-window.c
+ (nautilus_window_constructed): reflow to simplify,
+ call sidebar_set_width.
+ (nautilus_window_set_content_view_widget): use
+ nautilus_..._pack2 instead of gtk_paned to fix rendering.
+
+2002-03-06 Michael Meeks <michael@ximian.com>
+
+ * components/notes/nautilus-notes.c
+ (make_notes_view): upd.
+
+ * components/news/nautilus-news.c
+ (rss_read_done_callback): parse the RTF, but don't spew
+ warnings everywhere.
+ (make_news_view): upd.
+
+ * components/throbber/main.c
+ (cb_create_throbber): impl.
+ (throbber_object_destroyed, throbber_make_object):
+ axe cut & paste.
+
+ * libnautilus/nautilus-view-standard-main.c
+ (nautilus_view_create_from_get_type_function):
+ widen from NautilusView to BonoboObject, this
+ code has a much wider application.
+ (make_object): ditto.
+
+ * components/hardware/nautilus-hardware-view.c
+ (nautilus_hardware_view_get_nautilus_view): upd.
+
+ * components/throbber/nautilus-throbber.c
+ (nautilus_throbber_new): kill.
+
+ * libnautilus/nautilus-view-standard-main.c
+ (nautilus_view_standard_main_multi): use gdk_get_display.
+
+ * libnautilus-private/nautilus-bonobo-extensions.c
+ (nautilus_bonobo_activation_register_for_display): impl.
+
+ * src/nautilus-application.c
+ (nautilus_application_startup): use it.
+
+ * src/nautilus-window-toolbars.c
+ (location_change_at_idle_callback),
+ (throbber_callback): move from nautilus-window.c
+ (nautilus_window_allow_stop): move this here,
+ prune redundant sets, simplify property bag
+ extraction.
+
+ * src/nautilus-window.c
+ (nautilus_window_constructed): move throbber
+ location changed code out of here.
+ (nautilus_window_unrealize): no explicit removal
+ from remote property bag neccessary & upd.
+
+ * libnautilus-private/nautilus-metafile-factory.c
+ (corba_open): reduce complexity.
+
2002-03-07 Anders Carlsson <andersca@gnu.org>
* configure.in: Require eel 1.1.7
diff --git a/components/hardware/main.c b/components/hardware/main.c
index 298a96acd..d0655404a 100644
--- a/components/hardware/main.c
+++ b/components/hardware/main.c
@@ -32,7 +32,7 @@
#include <libnautilus-private/nautilus-global-preferences.h>
#include <eel/eel-debug.h>
-static NautilusView *
+static BonoboObject *
cb_create_hardware_view (const char *ignore0, void *ignore1)
{
NautilusHardwareView *hardware_view =
diff --git a/components/hardware/nautilus-hardware-view.c b/components/hardware/nautilus-hardware-view.c
index 292844a2e..103a846ed 100644
--- a/components/hardware/nautilus-hardware-view.c
+++ b/components/hardware/nautilus-hardware-view.c
@@ -205,10 +205,10 @@ nautilus_hardware_view_destroy (GtkObject *object)
}
/* Component embedding support */
-NautilusView *
+BonoboObject *
nautilus_hardware_view_get_nautilus_view (NautilusHardwareView *hardware_view)
{
- return hardware_view->details->nautilus_view;
+ return BONOBO_OBJECT (hardware_view->details->nautilus_view);
}
static char *
diff --git a/components/hardware/nautilus-hardware-view.h b/components/hardware/nautilus-hardware-view.h
index e98b3ec67..c703ad378 100644
--- a/components/hardware/nautilus-hardware-view.h
+++ b/components/hardware/nautilus-hardware-view.h
@@ -53,7 +53,7 @@ struct _NautilusHardwareViewClass {
GtkType nautilus_hardware_view_get_type (void);
/* Component embedding support */
-NautilusView *nautilus_hardware_view_get_nautilus_view (NautilusHardwareView *view);
+BonoboObject *nautilus_hardware_view_get_nautilus_view (NautilusHardwareView *view);
/* URI handling */
void nautilus_hardware_view_load_uri (NautilusHardwareView *view,
diff --git a/components/news/nautilus-news.c b/components/news/nautilus-news.c
index bd64d4aac..6fcd6e554 100644
--- a/components/news/nautilus-news.c
+++ b/components/news/nautilus-news.c
@@ -1081,6 +1081,7 @@ rss_read_done_callback (GnomeVFSResult result,
GList *old_items;
int item_count, changed_count;
RSSChannelData *channel_data;
+ xmlSAXHandler silent_handler;
char *buffer;
@@ -1100,9 +1101,12 @@ rss_read_done_callback (GnomeVFSResult result,
/* Parse the rss file with libxml. The libxml parser requires a zero-terminated array. */
buffer = g_realloc (file_contents, file_size + 1);
buffer[file_size] = '\0';
- rss_document = xmlParseMemory (buffer, file_size);
- g_free (buffer);
+ initxmlDefaultSAXHandler (&silent_handler, FALSE);
+ silent_handler.error = NULL;
+ silent_handler.fatalError = NULL;
+ rss_document = xmlSAXParseMemory (&silent_handler, buffer, file_size, 0);
+ g_free (buffer);
/* make sure there wasn't in error parsing the document */
if (rss_document == NULL) {
@@ -2413,8 +2417,8 @@ set_up_main_widgets (News *news, GtkWidget *container)
}
-static NautilusView *
-make_news_view (const char *iid, gpointer callback_data)
+static BonoboObject *
+make_news_view (const char *iid, void *callback_data)
{
News *news;
@@ -2499,7 +2503,7 @@ make_news_view (const char *iid, gpointer callback_data)
set_views_for_mode (news);
/* return the nautilus view */
- return news->view;
+ return BONOBO_OBJECT (news->view);
}
int
diff --git a/components/notes/nautilus-notes.c b/components/notes/nautilus-notes.c
index 6da032b1e..c01400cc3 100644
--- a/components/notes/nautilus-notes.c
+++ b/components/notes/nautilus-notes.c
@@ -352,8 +352,8 @@ notes_get_indicator_image (const char *notes_text)
return NULL;
}
-static NautilusView *
-make_notes_view (const char *iid, gpointer callback_data)
+static BonoboObject *
+make_notes_view (const char *iid, void *callback_data)
{
GtkWidget *vbox;
Notes *notes;
@@ -417,7 +417,7 @@ make_notes_view (const char *iid, gpointer callback_data)
nautilus_undo_editable_set_undo_key (GTK_EDITABLE (notes->note_text_field), TRUE);
#endif
- return notes->view;
+ return BONOBO_OBJECT (notes->view);
}
int
diff --git a/components/throbber/main.c b/components/throbber/main.c
index 49efd4eb7..b95b27def 100644
--- a/components/throbber/main.c
+++ b/components/throbber/main.c
@@ -26,87 +26,36 @@
#include "nautilus-throbber.h"
#include <eel/eel-debug.h>
-#include <libgnomeui/gnome-client.h>
-#include <libgnomeui/gnome-ui-init.h>
-#include <libgnomevfs/gnome-vfs-init.h>
#include <libnautilus-private/nautilus-global-preferences.h>
-#include <string.h>
+#include <libnautilus/nautilus-view-standard-main.h>
-static int object_count = 0;
-
-static void
-throbber_object_destroyed (GtkObject *obj)
-{
- object_count--;
- if (object_count <= 0) {
- gtk_main_quit ();
- }
-}
+#define FACTORY_IID "OAFIID:nautilus_throbber_factory"
+#define VIEW_IID "OAFIID:nautilus_throbber"
static BonoboObject *
-throbber_make_object (BonoboGenericFactory *factory,
- const char *iid,
- void *closure)
+cb_create_throbber (const char *ignore0, void *ignore1)
{
- NautilusThrobber *throbber;
- BonoboObject *bonobo_control;
-
- if (strcmp (iid, "OAFIID:nautilus_throbber")) {
- return NULL;
- }
-
- throbber = NAUTILUS_THROBBER (g_object_new (NAUTILUS_TYPE_THROBBER, NULL));
-
- object_count++;
-
- bonobo_control = nautilus_throbber_get_control (throbber);
-
- g_signal_connect (bonobo_control, "destroy", G_CALLBACK (throbber_object_destroyed), NULL);
-
- return bonobo_control;
+ NautilusThrobber *throbber =
+ g_object_new (NAUTILUS_TYPE_THROBBER, NULL);
+ return nautilus_throbber_get_control (throbber);
}
int
main (int argc, char *argv[])
{
- BonoboGenericFactory *factory;
- char *registration_id;
-
if (g_getenv ("NAUTILUS_DEBUG") != NULL) {
eel_make_warnings_and_criticals_stop_in_debugger ();
}
- /* Initialize libraries. */
- gnome_program_init ("nautilus-throbber",
- VERSION,
- LIBGNOMEUI_MODULE,
- argc, argv,
- NULL);
-
- bonobo_ui_init ("nautilus-throbber", VERSION, &argc, argv);
-
- /* Disable session manager connection */
- g_object_set (G_OBJECT (gnome_program_get()),
- GNOME_CLIENT_PARAM_SM_CONNECT, FALSE, NULL);
-
- nautilus_global_preferences_init ();
-
- registration_id = bonobo_activation_make_registration_id ("OAFIID:nautilus_throbber_factory", g_getenv ("DISPLAY"));
- factory = bonobo_generic_factory_new ("OAFIID:nautilus_throbber_factory",
- throbber_make_object,
- NULL);
- g_free (registration_id);
-
- if (factory != NULL) {
- bonobo_activate ();
- do {
- gtk_main ();
- } while (object_count > 0);
-
- bonobo_object_unref (factory);
- }
-
- gnome_vfs_shutdown ();
-
- return EXIT_SUCCESS;
+ return nautilus_view_standard_main ("nautilus-throbber",
+ VERSION,
+ GETTEXT_PACKAGE,
+ GNOMELOCALEDIR,
+ argc,
+ argv,
+ FACTORY_IID,
+ VIEW_IID,
+ cb_create_throbber,
+ nautilus_global_preferences_init,
+ NULL);
}
diff --git a/components/throbber/nautilus-throbber.c b/components/throbber/nautilus-throbber.c
index b0f860ea5..f149dc5b9 100644
--- a/components/throbber/nautilus-throbber.c
+++ b/components/throbber/nautilus-throbber.c
@@ -28,6 +28,7 @@
#include <config.h>
#include "nautilus-throbber.h"
+#include <eel/eel-debug.h>
#include <eel/eel-glib-extensions.h>
#include <eel/eel-graphic-effects.h>
#include <eel/eel-gtk-extensions.h>
@@ -37,6 +38,7 @@
#include <gtk/gtksignal.h>
#include <libgnome/gnome-macros.h>
#include <libgnome/gnome-util.h>
+#include <libnautilus/nautilus-view-standard-main.h>
#include <libnautilus-private/nautilus-file-utilities.h>
#include <libnautilus-private/nautilus-global-preferences.h>
#include <libnautilus-private/nautilus-icon-factory.h>
@@ -240,20 +242,13 @@ nautilus_throbber_instance_init (NautilusThrobber *throbber)
nautilus_throbber_load_images (throbber);
gtk_widget_show (widget);
-
+
/* add a callback for when the theme changes */
eel_preferences_add_callback (NAUTILUS_PREFERENCES_THEME,
nautilus_throbber_theme_changed,
throbber);
}
-/* allocate a new throbber */
-GtkWidget *
-nautilus_throbber_new (void)
-{
- return gtk_widget_new (nautilus_throbber_get_type (), NULL);
-}
-
/* handler for handling theme changes */
static void
nautilus_throbber_theme_changed (gpointer user_data)
diff --git a/components/throbber/nautilus-throbber.h b/components/throbber/nautilus-throbber.h
index 3c8722a30..af7fec964 100644
--- a/components/throbber/nautilus-throbber.h
+++ b/components/throbber/nautilus-throbber.h
@@ -31,9 +31,7 @@
#include <gtk/gtkeventbox.h>
#include <bonobo.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
#define NAUTILUS_TYPE_THROBBER (nautilus_throbber_get_type ())
#define NAUTILUS_THROBBER(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_THROBBER, NautilusThrobber))
@@ -54,22 +52,19 @@ struct NautilusThrobberClass {
GtkEventBoxClass parent_class;
/* signals */
- void (* location_changed) (NautilusThrobber *throbber,
- const char *location);
+ void (* location_changed) (NautilusThrobber *throbber,
+ const char *location);
};
-GtkType nautilus_throbber_get_type (void);
-GtkWidget * nautilus_throbber_new (void);
+GtkType nautilus_throbber_get_type (void);
+GtkWidget *nautilus_throbber_new (void);
+BonoboObject *nautilus_throbber_get_control (NautilusThrobber *throbber);
+void nautilus_throbber_start (NautilusThrobber *throbber);
+void nautilus_throbber_stop (NautilusThrobber *throbber);
+void nautilus_throbber_set_small_mode (NautilusThrobber *throbber,
+ gboolean new_mode);
-BonoboObject* nautilus_throbber_get_control (NautilusThrobber *throbber);
-
-void nautilus_throbber_start (NautilusThrobber *throbber);
-void nautilus_throbber_stop (NautilusThrobber *throbber);
-void nautilus_throbber_set_small_mode (NautilusThrobber *throbber, gboolean new_mode);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* NAUTILUS_THROBBER_H */
diff --git a/libnautilus-private/nautilus-bonobo-extensions.c b/libnautilus-private/nautilus-bonobo-extensions.c
index 4b54d56cc..9a7a51dce 100644
--- a/libnautilus-private/nautilus-bonobo-extensions.c
+++ b/libnautilus-private/nautilus-bonobo-extensions.c
@@ -613,3 +613,20 @@ nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle)
activation_cancel (handle);
}
}
+
+Bonobo_RegistrationResult
+nautilus_bonobo_activation_register_for_display (const char *iid,
+ Bonobo_Unknown ref)
+{
+ char *real_iid;
+ Bonobo_RegistrationResult result;
+
+ real_iid = bonobo_activation_make_registration_id (
+ iid, gdk_get_display ());
+
+ result = bonobo_activation_active_server_register (real_iid, ref);
+
+ g_free (real_iid);
+
+ return result;
+}
diff --git a/libnautilus-private/nautilus-bonobo-extensions.h b/libnautilus-private/nautilus-bonobo-extensions.h
index 0c83cd456..226bf9e9e 100644
--- a/libnautilus-private/nautilus-bonobo-extensions.h
+++ b/libnautilus-private/nautilus-bonobo-extensions.h
@@ -104,4 +104,7 @@ NautilusBonoboActivationHandle *nautilus_bonobo_activate_from_id
gpointer callback_data);
void nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle);
+Bonobo_RegistrationResult nautilus_bonobo_activation_register_for_display (const char *iid,
+ Bonobo_Unknown ref);
+
#endif /* NAUTILUS_BONOBO_EXTENSIONS_H */
diff --git a/libnautilus-private/nautilus-horizontal-splitter.c b/libnautilus-private/nautilus-horizontal-splitter.c
index 682f57fa2..158f2edc3 100644
--- a/libnautilus-private/nautilus-horizontal-splitter.c
+++ b/libnautilus-private/nautilus-horizontal-splitter.c
@@ -225,6 +225,47 @@ nautilus_horizontal_splitter_button_release (GtkWidget *widget, GdkEventButton *
}
static void
+nautilus_horizontal_splitter_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ gint border_width;
+ GtkPaned *paned;
+ GtkAllocation child_allocation;
+ GtkRequisition child_requisition;
+
+ paned = GTK_PANED (widget);
+ border_width = GTK_CONTAINER (paned)->border_width;
+
+ widget->allocation = *allocation;
+
+ if (paned->child2 != NULL && GTK_WIDGET_VISIBLE (paned->child2)) {
+ EEL_CALL_PARENT (GTK_WIDGET_CLASS, size_allocate,
+ (widget, allocation));
+ } else if (paned->child1 && GTK_WIDGET_VISIBLE (paned->child1)) {
+
+ if (GTK_WIDGET_REALIZED (widget)) {
+ gdk_window_hide (paned->handle);
+ }
+
+ gtk_widget_get_child_requisition (paned->child1,
+ &child_requisition);
+
+ child_allocation.x = widget->allocation.x + border_width;
+ child_allocation.y = widget->allocation.y + border_width;
+ child_allocation.width = MIN (child_requisition.width,
+ allocation->width - 2 * border_width);
+ child_allocation.height = MIN (child_requisition.height,
+ allocation->height - 2 * border_width);
+
+ gtk_widget_size_allocate (paned->child1, &child_allocation);
+ } else
+ if (GTK_WIDGET_REALIZED (widget)) {
+ gdk_window_hide (paned->handle);
+ }
+
+}
+
+static void
nautilus_horizontal_splitter_class_init (NautilusHorizontalSplitterClass *class)
{
GtkWidgetClass *widget_class;
@@ -233,6 +274,43 @@ nautilus_horizontal_splitter_class_init (NautilusHorizontalSplitterClass *class)
G_OBJECT_CLASS (class)->finalize = nautilus_horizontal_splitter_finalize;
+ widget_class->size_allocate = nautilus_horizontal_splitter_size_allocate;
widget_class->button_press_event = nautilus_horizontal_splitter_button_press;
widget_class->button_release_event = nautilus_horizontal_splitter_button_release;
}
+
+void
+nautilus_horizontal_splitter_pack2 (NautilusHorizontalSplitter *splitter,
+ GtkWidget *child2)
+{
+ gboolean re_expose;
+ GtkPaned *paned;
+
+ g_return_if_fail (GTK_IS_WIDGET (child2));
+ g_return_if_fail (NAUTILUS_IS_HORIZONTAL_SPLITTER (splitter));
+
+ paned = GTK_PANED (splitter);
+
+ re_expose = (paned->child2 == NULL ||
+ !GTK_WIDGET_VISIBLE (paned->child2));
+
+ gtk_paned_pack2 (paned, child2, TRUE, TRUE);
+
+
+ if (re_expose) {
+ /* We have to expose the divider, since the pane relies
+ * on a resize when you add the 2nd item to get it's
+ * rendering right */
+
+ /* this calculates the handle positon correctly */
+ gtk_widget_size_allocate (GTK_WIDGET (splitter),
+ &GTK_WIDGET (splitter)->allocation);
+
+ /* and this renders it */
+ gtk_widget_queue_draw_area (GTK_WIDGET (splitter),
+ paned->handle_pos.x,
+ paned->handle_pos.y,
+ paned->handle_pos.width,
+ paned->handle_pos.height);
+ }
+}
diff --git a/libnautilus-private/nautilus-horizontal-splitter.h b/libnautilus-private/nautilus-horizontal-splitter.h
index 675b35acc..b55923519 100644
--- a/libnautilus-private/nautilus-horizontal-splitter.h
+++ b/libnautilus-private/nautilus-horizontal-splitter.h
@@ -56,6 +56,8 @@ void nautilus_horizontal_splitter_hide (NautilusHorizontalSplitter *splitter
void nautilus_horizontal_splitter_show (NautilusHorizontalSplitter *splitter);
void nautilus_horizontal_splitter_expand (NautilusHorizontalSplitter *splitter);
void nautilus_horizontal_splitter_toggle_position (NautilusHorizontalSplitter *splitter);
+void nautilus_horizontal_splitter_pack2 (NautilusHorizontalSplitter *splitter,
+ GtkWidget *child2);
G_END_DECLS
diff --git a/libnautilus-private/nautilus-metafile-factory.c b/libnautilus-private/nautilus-metafile-factory.c
index 9b918b3ea..eadd69336 100644
--- a/libnautilus-private/nautilus-metafile-factory.c
+++ b/libnautilus-private/nautilus-metafile-factory.c
@@ -51,12 +51,10 @@ corba_open (PortableServer_Servant servant,
CORBA_Environment *ev)
{
NautilusMetafile *metafile;
- Nautilus_Metafile objref;
metafile = nautilus_metafile_get (directory);
- objref = bonobo_object_dup_ref (BONOBO_OBJREF (metafile), NULL);
- bonobo_object_unref (metafile);
- return objref;
+
+ return CORBA_Object_duplicate (BONOBO_OBJREF (metafile), ev);
}
static void
diff --git a/libnautilus/nautilus-view-standard-main.c b/libnautilus/nautilus-view-standard-main.c
index 2cab21484..157e15eea 100644
--- a/libnautilus/nautilus-view-standard-main.c
+++ b/libnautilus/nautilus-view-standard-main.c
@@ -88,8 +88,8 @@ make_object (BonoboGenericFactory *factory,
const char *iid,
gpointer data)
{
+ BonoboObject *view;
CallbackData *callback_data;
- NautilusView *view;
callback_data = (CallbackData *) data;
@@ -215,7 +215,8 @@ nautilus_view_standard_main_multi (const char *executable_name,
callback_data.delayed_quit_timeout_id = 0;
/* Create the factory. */
- registration_id = bonobo_activation_make_registration_id (factory_iid, DisplayString (gdk_display));
+ registration_id = bonobo_activation_make_registration_id (
+ factory_iid, gdk_get_display ());
factory = bonobo_generic_factory_new (registration_id,
make_object,
&callback_data);
@@ -313,8 +314,8 @@ nautilus_view_standard_main (const char *executable_name,
typedef GtkType (* TypeFunc) (void);
-NautilusView *
+BonoboObject *
nautilus_view_create_from_get_type_function (const char *iid, void *user_data)
{
- return NAUTILUS_VIEW (g_object_new (((TypeFunc) (user_data)) (), NULL));
+ return BONOBO_OBJECT (g_object_new (((TypeFunc) (user_data)) (), NULL));
}
diff --git a/libnautilus/nautilus-view-standard-main.h b/libnautilus/nautilus-view-standard-main.h
index 2b0b9629f..48c9c1a10 100644
--- a/libnautilus/nautilus-view-standard-main.h
+++ b/libnautilus/nautilus-view-standard-main.h
@@ -37,36 +37,36 @@
G_BEGIN_DECLS
-typedef NautilusView * (*NautilusViewCreateFunction) (const char *iid, void *user_data);
+typedef BonoboObject * (*NautilusViewCreateFunction) (const char *iid, void *user_data);
-int nautilus_view_standard_main (const char *executable_name,
- const char *version,
- const char *gettext_package_name,
- const char *gettext_locale_directory,
- int argc,
- char **argv,
- const char *factory_iid,
- const char *view_iid,
- NautilusViewCreateFunction create_function,
- GVoidFunc post_initialize_callback,
- void *user_data);
+int nautilus_view_standard_main (const char *executable_name,
+ const char *version,
+ const char *gettext_package_name,
+ const char *gettext_locale_directory,
+ int argc,
+ char **argv,
+ const char *factory_iid,
+ const char *view_iid,
+ NautilusViewCreateFunction create_function,
+ GVoidFunc post_initialize_callback,
+ void *user_data);
-int nautilus_view_standard_main_multi (const char *executable_name,
- const char *version,
- const char *gettext_package_name,
- const char *gettext_locale_directory,
- int argc,
- char **argv,
- const char *factory_iid,
- GList *view_iids, /* GList<const char *> */
- NautilusViewCreateFunction create_function,
- GVoidFunc post_initialize_callback,
- void *user_data);
+int nautilus_view_standard_main_multi (const char *executable_name,
+ const char *version,
+ const char *gettext_package_name,
+ const char *gettext_locale_directory,
+ int argc,
+ char **argv,
+ const char *factory_iid,
+ GList *view_iids, /* GList<const char *> */
+ NautilusViewCreateFunction create_function,
+ GVoidFunc post_initialize_callback,
+ void *user_data);
/* standard handy create function (pass the _get_type function for the
* class as the user_data)
*/
-NautilusView * nautilus_view_create_from_get_type_function (const char *iid, void *user_data);
+BonoboObject *nautilus_view_create_from_get_type_function (const char *iid, void *user_data);
G_END_DECLS
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index d83d4d126..b79ed67ab 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -60,6 +60,7 @@
#include <libnautilus-private/nautilus-icon-factory.h>
#include <libnautilus-private/nautilus-metafile-factory.h>
#include <libnautilus-private/nautilus-sound.h>
+#include <libnautilus-private/nautilus-bonobo-extensions.h>
#include <libnautilus-private/nautilus-undo-manager.h>
#include <libnautilus-private/nautilus-volume-monitor.h>
#include <libnautilus-private/nautilus-authn-manager.h>
@@ -413,7 +414,7 @@ nautilus_application_startup (NautilusApplication *application,
/* Start up the factory. */
while (TRUE) {
/* Try to register the file manager view factory. */
- result = bonobo_activation_active_server_register
+ result = nautilus_bonobo_activation_register_for_display
(FACTORY_IID, BONOBO_OBJREF (application));
switch (result) {
diff --git a/src/nautilus-information-panel.c b/src/nautilus-information-panel.c
index f4e87f571..e0194ce85 100644
--- a/src/nautilus-information-panel.c
+++ b/src/nautilus-information-panel.c
@@ -49,6 +49,7 @@
#include <gtk/gtkcheckmenuitem.h>
#include <gtk/gtkdnd.h>
#include <gtk/gtkhbox.h>
+#include <gtk/gtkpaned.h>
#include <gtk/gtknotebook.h>
#include <gtk/gtksignal.h>
#include <libgnome/gnome-i18n.h>
@@ -131,6 +132,10 @@ static void background_metadata_changed_callback (NautilusSidebar *sideba
#define SIDEBAR_MINIMUM_WIDTH 1
#define SIDEBAR_MINIMUM_HEIGHT 400
+/* Some auto-updated values */
+static int sidebar_width_auto_value = SIDEBAR_MINIMUM_WIDTH;
+static gboolean confirm_trash_auto_value = TRUE;
+
enum {
LOCATION_CHANGED,
LAST_SIGNAL
@@ -166,9 +171,6 @@ typedef enum {
TABS_PART
} SidebarPart;
-static gboolean confirm_trash_auto_value;
-
-
EEL_CLASS_BOILERPLATE (NautilusSidebar, nautilus_sidebar, GTK_TYPE_EVENT_BOX)
/* initializing the class object by installing the operations we override */
@@ -205,9 +207,6 @@ nautilus_sidebar_class_init (GtkObjectClass *object_klass)
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
-
- eel_preferences_add_auto_boolean (NAUTILUS_PREFERENCES_CONFIRM_TRASH,
- &confirm_trash_auto_value);
}
/* utility routine to allocate the box the holds the command buttons */
@@ -232,16 +231,30 @@ make_button_box (NautilusSidebar *sidebar)
static void
nautilus_sidebar_init (GtkObject *object)
{
+ GtkWidget *widget;
+ static gboolean setup_autos = FALSE;
NautilusSidebar *sidebar;
- GtkWidget* widget;
sidebar = NAUTILUS_SIDEBAR (object);
widget = GTK_WIDGET (object);
sidebar->details = g_new0 (NautilusSidebarDetails, 1);
+
+ if (!setup_autos) {
+ setup_autos = TRUE;
+ eel_preferences_add_auto_integer (
+ NAUTILUS_PREFERENCES_SIDEBAR_WIDTH,
+ &sidebar_width_auto_value);
+
+ eel_preferences_add_auto_boolean (
+ NAUTILUS_PREFERENCES_CONFIRM_TRASH,
+ &confirm_trash_auto_value);
+ }
- /* set the minimum size of the sidebar */
- gtk_widget_set_size_request (widget, SIDEBAR_MINIMUM_WIDTH, SIDEBAR_MINIMUM_HEIGHT);
+ /* set the requested size of the sidebar */
+ gtk_widget_set_size_request (widget, sidebar_width_auto_value,
+ SIDEBAR_MINIMUM_HEIGHT);
+ sidebar->details->old_width = sidebar_width_auto_value;
/* load the default background from the current theme */
nautilus_sidebar_read_theme(sidebar);
@@ -278,8 +291,6 @@ nautilus_sidebar_init (GtkObject *object)
gtk_box_pack_end (GTK_BOX (sidebar->details->container),
GTK_WIDGET (sidebar->details->sidebar_tabs),
FALSE, FALSE, 0);
-
- sidebar->details->old_width = widget->allocation.width;
/* allocate and install the panel tabs */
sidebar->details->notebook = GTK_NOTEBOOK (gtk_notebook_new ());
@@ -1687,10 +1698,25 @@ nautilus_sidebar_size_allocate (GtkWidget *widget,
EEL_CALL_PARENT (GTK_WIDGET_CLASS, size_allocate, (widget, allocation));
/* remember the size if it changed */
-
if (widget->allocation.width != sidebar->details->old_width) {
sidebar->details->old_width = widget->allocation.width;
eel_preferences_set_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH,
widget->allocation.width);
}
}
+
+void
+nautilus_sidebar_setup_width (NautilusSidebar *sidebar)
+{
+ GtkPaned *paned;
+
+ g_return_if_fail (NAUTILUS_IS_SIDEBAR (sidebar));
+ g_return_if_fail (GTK_WIDGET (sidebar)->parent != NULL);
+
+ paned = GTK_PANED (GTK_WIDGET (sidebar)->parent);
+
+ /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
+ /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
+ gtk_paned_set_position (paned, sidebar_width_auto_value);
+ sidebar->details->old_width = sidebar_width_auto_value;
+}
diff --git a/src/nautilus-information-panel.h b/src/nautilus-information-panel.h
index 4d0a3ae90..9c7a5c0db 100644
--- a/src/nautilus-information-panel.h
+++ b/src/nautilus-information-panel.h
@@ -72,5 +72,6 @@ void nautilus_sidebar_set_uri (NautilusSidebar *sidebar,
const char *initial_title);
void nautilus_sidebar_set_title (NautilusSidebar *sidebar,
const char *new_title);
+void nautilus_sidebar_setup_width (NautilusSidebar *sidebar);
#endif /* NAUTILUS_SIDEBAR_H */
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index 45769f8c1..787c9f170 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -40,7 +40,6 @@
#include "nautilus-zoom-control.h"
#include <X11/Xatom.h>
#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-property-bag-client.h>
#include <bonobo/bonobo-ui-util.h>
#include <eel/eel-debug.h>
#include <eel/eel-gdk-extensions.h>
@@ -81,7 +80,6 @@
#include <libnautilus/nautilus-undo.h>
#include <math.h>
#include <sys/time.h>
-#include <unistd.h>
/* FIXME bugzilla.gnome.org 41243:
* We should use inheritance instead of these special cases
@@ -519,47 +517,6 @@ set_initial_window_geometry (NautilusWindow *window)
max_height_for_screen));
}
-static gboolean
-location_change_at_idle_callback (gpointer callback_data)
-{
- NautilusWindow *window;
- char *location;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- location = window->details->location_to_change_to_at_idle;
- window->details->location_to_change_to_at_idle = NULL;
- window->details->location_change_at_idle_id = 0;
-
- nautilus_window_go_to (window, location);
- g_free (location);
-
- return FALSE;
-}
-
-
-/* handle bonobo events from the throbber -- since they can come in at
- any time right in the middle of things, defer until idle */
-static void
-throbber_callback (BonoboListener *listener,
- const char *event_name,
- const CORBA_any *arg,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- g_free (window->details->location_to_change_to_at_idle);
- window->details->location_to_change_to_at_idle = g_strdup (BONOBO_ARG_GET_STRING (arg));
-
- if (window->details->location_change_at_idle_id == 0) {
- window->details->location_change_at_idle_id =
- gtk_idle_add (location_change_at_idle_callback, window);
- }
-}
-
/* Add a dummy menu with a "View as ..." item when we first create the
* view_as_option_menu -- without this the menu draws empty and shrunk,
* once we populate it it grows and forces the toolbar and all the other
@@ -585,10 +542,7 @@ nautilus_window_constructed (NautilusWindow *window)
{
GtkWidget *location_bar_box;
GtkWidget *view_as_menu_vbox;
- int sidebar_width;
BonoboControl *location_bar_wrapper;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
/* CORBA and Bonobo setup, which must be done before the location bar setup */
window->details->ui_container = bonobo_ui_container_new ();
@@ -668,29 +622,21 @@ nautilus_window_constructed (NautilusWindow *window)
set_initial_window_geometry (window);
window->content_hbox = nautilus_horizontal_splitter_new ();
-
- /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
- /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
- sidebar_width = eel_preferences_get_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH);
- gtk_paned_set_position (GTK_PANED (window->content_hbox), sidebar_width);
- }
- gtk_widget_show (window->content_hbox);
- bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
-
- /* FIXME bugzilla.gnome.org 41243:
- * We should use inheritance instead of these special cases
- * for the desktop window.
- */
- if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+
/* set up the sidebar */
window->sidebar = nautilus_sidebar_new ();
gtk_widget_show (GTK_WIDGET (window->sidebar));
g_signal_connect (window->sidebar, "location_changed",
- G_CALLBACK (go_to_callback), window);
+ G_CALLBACK (go_to_callback), window);
gtk_paned_pack1 (GTK_PANED (window->content_hbox),
GTK_WIDGET (window->sidebar),
FALSE, TRUE);
+
+ nautilus_sidebar_setup_width (window->sidebar);
}
+
+ gtk_widget_show (window->content_hbox);
+ bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -724,21 +670,6 @@ nautilus_window_constructed (NautilusWindow *window)
/* We'll do the second part later (bookmarks and go menus) */
window->details->ui_pending_initialize_menus_part_2 = TRUE;
-
- /* watch for throbber location changes, too */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- window->details->throbber_listener =
- bonobo_event_source_client_add_listener_full
- (property_bag,
- g_cclosure_new (G_CALLBACK (throbber_callback), window, NULL),
- "Bonobo/Property:change:location", NULL);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
/* Set initial sensitivity of some buttons & menu items
* now that they're all created.
@@ -826,33 +757,17 @@ static void
nautilus_window_unrealize (GtkWidget *widget)
{
NautilusWindow *window;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
window = NAUTILUS_WINDOW (widget);
- /* Get rid of the throbber explicitly before it self-destructs
- * (which it will do when the control frame goes away.
- */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
-
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_event_source_client_remove_listener
- (property_bag, window->details->throbber_listener, &ev);
- bonobo_object_release_unref (property_bag, &ev);
- }
-
- CORBA_Object_release (window->details->throbber_listener, &ev);
- window->details->throbber_listener = CORBA_OBJECT_NIL;
-
- CORBA_exception_free (&ev);
- }
+ if (window->details->throbber_property_bag != CORBA_OBJECT_NIL) {
+ bonobo_object_release_unref (window->details->throbber_property_bag, NULL);
+ window->details->throbber_property_bag = CORBA_OBJECT_NIL;
+ }
- bonobo_object_release_unref (window->details->throbber, NULL);
- window->details->throbber = CORBA_OBJECT_NIL;
+ if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
+ CORBA_Object_release (window->details->throbber_listener, NULL);
+ window->details->throbber_listener = CORBA_OBJECT_NIL;
}
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
@@ -1679,35 +1594,6 @@ nautilus_window_allow_reload (NautilusWindow *window, gboolean allow)
}
void
-nautilus_window_allow_stop (NautilusWindow *window, gboolean allow)
-{
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
-
- nautilus_window_ui_freeze (window);
-
- if (allow)
- access ("nautilus-throbber: start", 0);
- else
- access ("nautilus-throbber: stop", 0);
-
- nautilus_bonobo_set_sensitive (window->details->shell_ui,
- NAUTILUS_COMMAND_STOP, allow);
-
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_pbclient_set_boolean (property_bag, "throbbing", allow, &ev);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
-
- nautilus_window_ui_thaw (window);
-}
-
-void
nautilus_send_history_list_changed (void)
{
g_signal_emit_by_name (nautilus_signaller_get_current (),
@@ -1916,9 +1802,9 @@ nautilus_window_set_content_view_widget (NautilusWindow *window,
gtk_container_add (GTK_CONTAINER (window->content_hbox),
GTK_WIDGET (new_view));
} else {
- gtk_paned_pack2 (GTK_PANED (window->content_hbox),
- GTK_WIDGET (new_view),
- TRUE, TRUE);
+ nautilus_horizontal_splitter_pack2 (
+ NAUTILUS_HORIZONTAL_SPLITTER (window->content_hbox),
+ GTK_WIDGET (new_view));
}
}
diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c
index 45769f8c1..787c9f170 100644
--- a/src/nautilus-object-window.c
+++ b/src/nautilus-object-window.c
@@ -40,7 +40,6 @@
#include "nautilus-zoom-control.h"
#include <X11/Xatom.h>
#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-property-bag-client.h>
#include <bonobo/bonobo-ui-util.h>
#include <eel/eel-debug.h>
#include <eel/eel-gdk-extensions.h>
@@ -81,7 +80,6 @@
#include <libnautilus/nautilus-undo.h>
#include <math.h>
#include <sys/time.h>
-#include <unistd.h>
/* FIXME bugzilla.gnome.org 41243:
* We should use inheritance instead of these special cases
@@ -519,47 +517,6 @@ set_initial_window_geometry (NautilusWindow *window)
max_height_for_screen));
}
-static gboolean
-location_change_at_idle_callback (gpointer callback_data)
-{
- NautilusWindow *window;
- char *location;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- location = window->details->location_to_change_to_at_idle;
- window->details->location_to_change_to_at_idle = NULL;
- window->details->location_change_at_idle_id = 0;
-
- nautilus_window_go_to (window, location);
- g_free (location);
-
- return FALSE;
-}
-
-
-/* handle bonobo events from the throbber -- since they can come in at
- any time right in the middle of things, defer until idle */
-static void
-throbber_callback (BonoboListener *listener,
- const char *event_name,
- const CORBA_any *arg,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- g_free (window->details->location_to_change_to_at_idle);
- window->details->location_to_change_to_at_idle = g_strdup (BONOBO_ARG_GET_STRING (arg));
-
- if (window->details->location_change_at_idle_id == 0) {
- window->details->location_change_at_idle_id =
- gtk_idle_add (location_change_at_idle_callback, window);
- }
-}
-
/* Add a dummy menu with a "View as ..." item when we first create the
* view_as_option_menu -- without this the menu draws empty and shrunk,
* once we populate it it grows and forces the toolbar and all the other
@@ -585,10 +542,7 @@ nautilus_window_constructed (NautilusWindow *window)
{
GtkWidget *location_bar_box;
GtkWidget *view_as_menu_vbox;
- int sidebar_width;
BonoboControl *location_bar_wrapper;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
/* CORBA and Bonobo setup, which must be done before the location bar setup */
window->details->ui_container = bonobo_ui_container_new ();
@@ -668,29 +622,21 @@ nautilus_window_constructed (NautilusWindow *window)
set_initial_window_geometry (window);
window->content_hbox = nautilus_horizontal_splitter_new ();
-
- /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
- /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
- sidebar_width = eel_preferences_get_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH);
- gtk_paned_set_position (GTK_PANED (window->content_hbox), sidebar_width);
- }
- gtk_widget_show (window->content_hbox);
- bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
-
- /* FIXME bugzilla.gnome.org 41243:
- * We should use inheritance instead of these special cases
- * for the desktop window.
- */
- if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+
/* set up the sidebar */
window->sidebar = nautilus_sidebar_new ();
gtk_widget_show (GTK_WIDGET (window->sidebar));
g_signal_connect (window->sidebar, "location_changed",
- G_CALLBACK (go_to_callback), window);
+ G_CALLBACK (go_to_callback), window);
gtk_paned_pack1 (GTK_PANED (window->content_hbox),
GTK_WIDGET (window->sidebar),
FALSE, TRUE);
+
+ nautilus_sidebar_setup_width (window->sidebar);
}
+
+ gtk_widget_show (window->content_hbox);
+ bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -724,21 +670,6 @@ nautilus_window_constructed (NautilusWindow *window)
/* We'll do the second part later (bookmarks and go menus) */
window->details->ui_pending_initialize_menus_part_2 = TRUE;
-
- /* watch for throbber location changes, too */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- window->details->throbber_listener =
- bonobo_event_source_client_add_listener_full
- (property_bag,
- g_cclosure_new (G_CALLBACK (throbber_callback), window, NULL),
- "Bonobo/Property:change:location", NULL);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
/* Set initial sensitivity of some buttons & menu items
* now that they're all created.
@@ -826,33 +757,17 @@ static void
nautilus_window_unrealize (GtkWidget *widget)
{
NautilusWindow *window;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
window = NAUTILUS_WINDOW (widget);
- /* Get rid of the throbber explicitly before it self-destructs
- * (which it will do when the control frame goes away.
- */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
-
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_event_source_client_remove_listener
- (property_bag, window->details->throbber_listener, &ev);
- bonobo_object_release_unref (property_bag, &ev);
- }
-
- CORBA_Object_release (window->details->throbber_listener, &ev);
- window->details->throbber_listener = CORBA_OBJECT_NIL;
-
- CORBA_exception_free (&ev);
- }
+ if (window->details->throbber_property_bag != CORBA_OBJECT_NIL) {
+ bonobo_object_release_unref (window->details->throbber_property_bag, NULL);
+ window->details->throbber_property_bag = CORBA_OBJECT_NIL;
+ }
- bonobo_object_release_unref (window->details->throbber, NULL);
- window->details->throbber = CORBA_OBJECT_NIL;
+ if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
+ CORBA_Object_release (window->details->throbber_listener, NULL);
+ window->details->throbber_listener = CORBA_OBJECT_NIL;
}
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
@@ -1679,35 +1594,6 @@ nautilus_window_allow_reload (NautilusWindow *window, gboolean allow)
}
void
-nautilus_window_allow_stop (NautilusWindow *window, gboolean allow)
-{
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
-
- nautilus_window_ui_freeze (window);
-
- if (allow)
- access ("nautilus-throbber: start", 0);
- else
- access ("nautilus-throbber: stop", 0);
-
- nautilus_bonobo_set_sensitive (window->details->shell_ui,
- NAUTILUS_COMMAND_STOP, allow);
-
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_pbclient_set_boolean (property_bag, "throbbing", allow, &ev);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
-
- nautilus_window_ui_thaw (window);
-}
-
-void
nautilus_send_history_list_changed (void)
{
g_signal_emit_by_name (nautilus_signaller_get_current (),
@@ -1916,9 +1802,9 @@ nautilus_window_set_content_view_widget (NautilusWindow *window,
gtk_container_add (GTK_CONTAINER (window->content_hbox),
GTK_WIDGET (new_view));
} else {
- gtk_paned_pack2 (GTK_PANED (window->content_hbox),
- GTK_WIDGET (new_view),
- TRUE, TRUE);
+ nautilus_horizontal_splitter_pack2 (
+ NAUTILUS_HORIZONTAL_SPLITTER (window->content_hbox),
+ GTK_WIDGET (new_view));
}
}
diff --git a/src/nautilus-sidebar.c b/src/nautilus-sidebar.c
index f4e87f571..e0194ce85 100644
--- a/src/nautilus-sidebar.c
+++ b/src/nautilus-sidebar.c
@@ -49,6 +49,7 @@
#include <gtk/gtkcheckmenuitem.h>
#include <gtk/gtkdnd.h>
#include <gtk/gtkhbox.h>
+#include <gtk/gtkpaned.h>
#include <gtk/gtknotebook.h>
#include <gtk/gtksignal.h>
#include <libgnome/gnome-i18n.h>
@@ -131,6 +132,10 @@ static void background_metadata_changed_callback (NautilusSidebar *sideba
#define SIDEBAR_MINIMUM_WIDTH 1
#define SIDEBAR_MINIMUM_HEIGHT 400
+/* Some auto-updated values */
+static int sidebar_width_auto_value = SIDEBAR_MINIMUM_WIDTH;
+static gboolean confirm_trash_auto_value = TRUE;
+
enum {
LOCATION_CHANGED,
LAST_SIGNAL
@@ -166,9 +171,6 @@ typedef enum {
TABS_PART
} SidebarPart;
-static gboolean confirm_trash_auto_value;
-
-
EEL_CLASS_BOILERPLATE (NautilusSidebar, nautilus_sidebar, GTK_TYPE_EVENT_BOX)
/* initializing the class object by installing the operations we override */
@@ -205,9 +207,6 @@ nautilus_sidebar_class_init (GtkObjectClass *object_klass)
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
-
- eel_preferences_add_auto_boolean (NAUTILUS_PREFERENCES_CONFIRM_TRASH,
- &confirm_trash_auto_value);
}
/* utility routine to allocate the box the holds the command buttons */
@@ -232,16 +231,30 @@ make_button_box (NautilusSidebar *sidebar)
static void
nautilus_sidebar_init (GtkObject *object)
{
+ GtkWidget *widget;
+ static gboolean setup_autos = FALSE;
NautilusSidebar *sidebar;
- GtkWidget* widget;
sidebar = NAUTILUS_SIDEBAR (object);
widget = GTK_WIDGET (object);
sidebar->details = g_new0 (NautilusSidebarDetails, 1);
+
+ if (!setup_autos) {
+ setup_autos = TRUE;
+ eel_preferences_add_auto_integer (
+ NAUTILUS_PREFERENCES_SIDEBAR_WIDTH,
+ &sidebar_width_auto_value);
+
+ eel_preferences_add_auto_boolean (
+ NAUTILUS_PREFERENCES_CONFIRM_TRASH,
+ &confirm_trash_auto_value);
+ }
- /* set the minimum size of the sidebar */
- gtk_widget_set_size_request (widget, SIDEBAR_MINIMUM_WIDTH, SIDEBAR_MINIMUM_HEIGHT);
+ /* set the requested size of the sidebar */
+ gtk_widget_set_size_request (widget, sidebar_width_auto_value,
+ SIDEBAR_MINIMUM_HEIGHT);
+ sidebar->details->old_width = sidebar_width_auto_value;
/* load the default background from the current theme */
nautilus_sidebar_read_theme(sidebar);
@@ -278,8 +291,6 @@ nautilus_sidebar_init (GtkObject *object)
gtk_box_pack_end (GTK_BOX (sidebar->details->container),
GTK_WIDGET (sidebar->details->sidebar_tabs),
FALSE, FALSE, 0);
-
- sidebar->details->old_width = widget->allocation.width;
/* allocate and install the panel tabs */
sidebar->details->notebook = GTK_NOTEBOOK (gtk_notebook_new ());
@@ -1687,10 +1698,25 @@ nautilus_sidebar_size_allocate (GtkWidget *widget,
EEL_CALL_PARENT (GTK_WIDGET_CLASS, size_allocate, (widget, allocation));
/* remember the size if it changed */
-
if (widget->allocation.width != sidebar->details->old_width) {
sidebar->details->old_width = widget->allocation.width;
eel_preferences_set_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH,
widget->allocation.width);
}
}
+
+void
+nautilus_sidebar_setup_width (NautilusSidebar *sidebar)
+{
+ GtkPaned *paned;
+
+ g_return_if_fail (NAUTILUS_IS_SIDEBAR (sidebar));
+ g_return_if_fail (GTK_WIDGET (sidebar)->parent != NULL);
+
+ paned = GTK_PANED (GTK_WIDGET (sidebar)->parent);
+
+ /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
+ /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
+ gtk_paned_set_position (paned, sidebar_width_auto_value);
+ sidebar->details->old_width = sidebar_width_auto_value;
+}
diff --git a/src/nautilus-sidebar.h b/src/nautilus-sidebar.h
index 4d0a3ae90..9c7a5c0db 100644
--- a/src/nautilus-sidebar.h
+++ b/src/nautilus-sidebar.h
@@ -72,5 +72,6 @@ void nautilus_sidebar_set_uri (NautilusSidebar *sidebar,
const char *initial_title);
void nautilus_sidebar_set_title (NautilusSidebar *sidebar,
const char *new_title);
+void nautilus_sidebar_setup_width (NautilusSidebar *sidebar);
#endif /* NAUTILUS_SIDEBAR_H */
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index 45769f8c1..787c9f170 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -40,7 +40,6 @@
#include "nautilus-zoom-control.h"
#include <X11/Xatom.h>
#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-property-bag-client.h>
#include <bonobo/bonobo-ui-util.h>
#include <eel/eel-debug.h>
#include <eel/eel-gdk-extensions.h>
@@ -81,7 +80,6 @@
#include <libnautilus/nautilus-undo.h>
#include <math.h>
#include <sys/time.h>
-#include <unistd.h>
/* FIXME bugzilla.gnome.org 41243:
* We should use inheritance instead of these special cases
@@ -519,47 +517,6 @@ set_initial_window_geometry (NautilusWindow *window)
max_height_for_screen));
}
-static gboolean
-location_change_at_idle_callback (gpointer callback_data)
-{
- NautilusWindow *window;
- char *location;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- location = window->details->location_to_change_to_at_idle;
- window->details->location_to_change_to_at_idle = NULL;
- window->details->location_change_at_idle_id = 0;
-
- nautilus_window_go_to (window, location);
- g_free (location);
-
- return FALSE;
-}
-
-
-/* handle bonobo events from the throbber -- since they can come in at
- any time right in the middle of things, defer until idle */
-static void
-throbber_callback (BonoboListener *listener,
- const char *event_name,
- const CORBA_any *arg,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- g_free (window->details->location_to_change_to_at_idle);
- window->details->location_to_change_to_at_idle = g_strdup (BONOBO_ARG_GET_STRING (arg));
-
- if (window->details->location_change_at_idle_id == 0) {
- window->details->location_change_at_idle_id =
- gtk_idle_add (location_change_at_idle_callback, window);
- }
-}
-
/* Add a dummy menu with a "View as ..." item when we first create the
* view_as_option_menu -- without this the menu draws empty and shrunk,
* once we populate it it grows and forces the toolbar and all the other
@@ -585,10 +542,7 @@ nautilus_window_constructed (NautilusWindow *window)
{
GtkWidget *location_bar_box;
GtkWidget *view_as_menu_vbox;
- int sidebar_width;
BonoboControl *location_bar_wrapper;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
/* CORBA and Bonobo setup, which must be done before the location bar setup */
window->details->ui_container = bonobo_ui_container_new ();
@@ -668,29 +622,21 @@ nautilus_window_constructed (NautilusWindow *window)
set_initial_window_geometry (window);
window->content_hbox = nautilus_horizontal_splitter_new ();
-
- /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
- /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
- sidebar_width = eel_preferences_get_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH);
- gtk_paned_set_position (GTK_PANED (window->content_hbox), sidebar_width);
- }
- gtk_widget_show (window->content_hbox);
- bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
-
- /* FIXME bugzilla.gnome.org 41243:
- * We should use inheritance instead of these special cases
- * for the desktop window.
- */
- if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+
/* set up the sidebar */
window->sidebar = nautilus_sidebar_new ();
gtk_widget_show (GTK_WIDGET (window->sidebar));
g_signal_connect (window->sidebar, "location_changed",
- G_CALLBACK (go_to_callback), window);
+ G_CALLBACK (go_to_callback), window);
gtk_paned_pack1 (GTK_PANED (window->content_hbox),
GTK_WIDGET (window->sidebar),
FALSE, TRUE);
+
+ nautilus_sidebar_setup_width (window->sidebar);
}
+
+ gtk_widget_show (window->content_hbox);
+ bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -724,21 +670,6 @@ nautilus_window_constructed (NautilusWindow *window)
/* We'll do the second part later (bookmarks and go menus) */
window->details->ui_pending_initialize_menus_part_2 = TRUE;
-
- /* watch for throbber location changes, too */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- window->details->throbber_listener =
- bonobo_event_source_client_add_listener_full
- (property_bag,
- g_cclosure_new (G_CALLBACK (throbber_callback), window, NULL),
- "Bonobo/Property:change:location", NULL);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
/* Set initial sensitivity of some buttons & menu items
* now that they're all created.
@@ -826,33 +757,17 @@ static void
nautilus_window_unrealize (GtkWidget *widget)
{
NautilusWindow *window;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
window = NAUTILUS_WINDOW (widget);
- /* Get rid of the throbber explicitly before it self-destructs
- * (which it will do when the control frame goes away.
- */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
-
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_event_source_client_remove_listener
- (property_bag, window->details->throbber_listener, &ev);
- bonobo_object_release_unref (property_bag, &ev);
- }
-
- CORBA_Object_release (window->details->throbber_listener, &ev);
- window->details->throbber_listener = CORBA_OBJECT_NIL;
-
- CORBA_exception_free (&ev);
- }
+ if (window->details->throbber_property_bag != CORBA_OBJECT_NIL) {
+ bonobo_object_release_unref (window->details->throbber_property_bag, NULL);
+ window->details->throbber_property_bag = CORBA_OBJECT_NIL;
+ }
- bonobo_object_release_unref (window->details->throbber, NULL);
- window->details->throbber = CORBA_OBJECT_NIL;
+ if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
+ CORBA_Object_release (window->details->throbber_listener, NULL);
+ window->details->throbber_listener = CORBA_OBJECT_NIL;
}
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
@@ -1679,35 +1594,6 @@ nautilus_window_allow_reload (NautilusWindow *window, gboolean allow)
}
void
-nautilus_window_allow_stop (NautilusWindow *window, gboolean allow)
-{
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
-
- nautilus_window_ui_freeze (window);
-
- if (allow)
- access ("nautilus-throbber: start", 0);
- else
- access ("nautilus-throbber: stop", 0);
-
- nautilus_bonobo_set_sensitive (window->details->shell_ui,
- NAUTILUS_COMMAND_STOP, allow);
-
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_pbclient_set_boolean (property_bag, "throbbing", allow, &ev);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
-
- nautilus_window_ui_thaw (window);
-}
-
-void
nautilus_send_history_list_changed (void)
{
g_signal_emit_by_name (nautilus_signaller_get_current (),
@@ -1916,9 +1802,9 @@ nautilus_window_set_content_view_widget (NautilusWindow *window,
gtk_container_add (GTK_CONTAINER (window->content_hbox),
GTK_WIDGET (new_view));
} else {
- gtk_paned_pack2 (GTK_PANED (window->content_hbox),
- GTK_WIDGET (new_view),
- TRUE, TRUE);
+ nautilus_horizontal_splitter_pack2 (
+ NAUTILUS_HORIZONTAL_SPLITTER (window->content_hbox),
+ GTK_WIDGET (new_view));
}
}
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index 43a62f26f..5fda2d52a 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -82,8 +82,9 @@ struct NautilusWindowDetails
NautilusViewIdentifier *extra_viewer;
/* Throbber. */
- Bonobo_Control throbber;
- Bonobo_Listener throbber_listener;
+ gboolean throbber_active;
+ Bonobo_PropertyBag throbber_property_bag;
+ Bonobo_Listener throbber_listener;
/* Deferred location change. */
char *location_to_change_to_at_idle;
diff --git a/src/nautilus-window-toolbars.c b/src/nautilus-window-toolbars.c
index d5a115133..acd363231 100644
--- a/src/nautilus-window-toolbars.c
+++ b/src/nautilus-window-toolbars.c
@@ -28,12 +28,14 @@
#include <config.h>
+#include <unistd.h>
#include "nautilus-application.h"
#include "nautilus-window-manage-views.h"
#include "nautilus-window-private.h"
#include "nautilus-window.h"
#include <bonobo/bonobo-control.h>
#include <bonobo/bonobo-property-bag.h>
+#include <bonobo/bonobo-property-bag-client.h>
#include <bonobo/bonobo-exception.h>
#include <bonobo/bonobo-moniker-util.h>
#include <bonobo/bonobo-ui-util.h>
@@ -403,6 +405,128 @@ create_back_or_forward_toolbar_item (NautilusWindow *window,
return item;
}
+static gboolean
+location_change_at_idle_callback (gpointer callback_data)
+{
+ NautilusWindow *window;
+ char *location;
+
+ window = NAUTILUS_WINDOW (callback_data);
+
+ location = window->details->location_to_change_to_at_idle;
+ window->details->location_to_change_to_at_idle = NULL;
+ window->details->location_change_at_idle_id = 0;
+
+ nautilus_window_go_to (window, location);
+ g_free (location);
+
+ return FALSE;
+}
+
+
+/* handle bonobo events from the throbber -- since they can come in at
+ any time right in the middle of things, defer until idle */
+static void
+throbber_callback (BonoboListener *listener,
+ const char *event_name,
+ const CORBA_any *arg,
+ CORBA_Environment *ev,
+ gpointer callback_data)
+{
+ NautilusWindow *window;
+
+ window = NAUTILUS_WINDOW (callback_data);
+
+ g_free (window->details->location_to_change_to_at_idle);
+ window->details->location_to_change_to_at_idle = g_strdup (
+ BONOBO_ARG_GET_STRING (arg));
+
+ if (window->details->location_change_at_idle_id == 0) {
+ window->details->location_change_at_idle_id =
+ gtk_idle_add (location_change_at_idle_callback, window);
+ }
+}
+
+static void
+throbber_created_callback (Bonobo_Unknown throbber,
+ CORBA_Environment *ev,
+ gpointer user_data)
+{
+ char *exception_as_text;
+ NautilusWindow *window;
+
+ if (BONOBO_EX (ev)) {
+ exception_as_text = bonobo_exception_get_text (ev);
+ g_warning ("Throbber activation exception '%s'", exception_as_text);
+ g_free (exception_as_text);
+ return;
+ }
+
+ g_return_if_fail (NAUTILUS_IS_WINDOW (user_data));
+
+ window = NAUTILUS_WINDOW (user_data);
+
+ bonobo_ui_component_object_set (window->details->shell_ui,
+ "/Toolbar/ThrobberWrapper",
+ throbber, ev);
+ CORBA_exception_free (ev);
+
+ window->details->throbber_property_bag =
+ Bonobo_Control_getProperties (throbber, ev);
+
+ if (BONOBO_EX (ev)) {
+ window->details->throbber_property_bag = CORBA_OBJECT_NIL;
+ CORBA_exception_free (ev);
+ } else {
+ bonobo_pbclient_set_boolean (window->details->throbber_property_bag,
+ "throbbing",
+ window->details->throbber_active,
+ ev);
+ }
+
+ window->details->throbber_listener =
+ bonobo_event_source_client_add_listener_full
+ (window->details->throbber_property_bag,
+ g_cclosure_new (G_CALLBACK (throbber_callback), window, NULL),
+ "Bonobo/Property:change:location", ev);
+
+ bonobo_object_release_unref (throbber, ev);
+
+ g_object_unref (window);
+}
+
+void
+nautilus_window_allow_stop (NautilusWindow *window, gboolean allow)
+{
+ CORBA_Environment ev;
+
+ if (( window->details->throbber_active && allow) ||
+ (!window->details->throbber_active && !allow)) {
+ return;
+ }
+
+ if (allow)
+ access ("nautilus-throbber: start", 0);
+ else
+ access ("nautilus-throbber: stop", 0);
+
+ window->details->throbber_active = allow;
+
+ nautilus_window_ui_freeze (window);
+
+ nautilus_bonobo_set_sensitive (window->details->shell_ui,
+ NAUTILUS_COMMAND_STOP, allow);
+
+ if (window->details->throbber_property_bag != CORBA_OBJECT_NIL) {
+ CORBA_exception_init (&ev);
+ bonobo_pbclient_set_boolean (window->details->throbber_property_bag,
+ "throbbing", allow, &ev);
+ CORBA_exception_free (&ev);
+ }
+
+ nautilus_window_ui_thaw (window);
+}
+
void
nautilus_window_initialize_toolbars (NautilusWindow *window)
{
@@ -415,25 +539,20 @@ nautilus_window_initialize_toolbars (NautilusWindow *window)
* We should use inheritance instead of these special cases
* for the desktop window.
*/
- /* It's important not to create a throbber that will never get
- * an X window, because the code to make the throbber go away
- * when Nautilus crashes or is killed relies on the X
- * window. One way to do this would be to create the throbber
- * at realize time, but another way is to special-case the
- * desktop window.
- */
if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
CORBA_exception_init (&ev);
- window->details->throbber = bonobo_get_object ("OAFIID:nautilus_throbber", "IDL:Bonobo/Control:1.0", &ev);
+ g_object_ref (window);
+ bonobo_get_object_async ("OAFIID:nautilus_throbber",
+ "IDL:Bonobo/Control:1.0",
+ &ev,
+ throbber_created_callback,
+ window);
+
if (BONOBO_EX (&ev)) {
exception_as_text = bonobo_exception_get_text (&ev);
g_warning ("Throbber activation exception '%s'", exception_as_text);
g_free (exception_as_text);
- window->details->throbber = CORBA_OBJECT_NIL;
- } else if (window->details->throbber != CORBA_OBJECT_NIL) {
- bonobo_ui_component_object_set (window->details->shell_ui, "/Toolbar/ThrobberWrapper",
- window->details->throbber, NULL);
}
CORBA_exception_free (&ev);
}
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 45769f8c1..787c9f170 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -40,7 +40,6 @@
#include "nautilus-zoom-control.h"
#include <X11/Xatom.h>
#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-property-bag-client.h>
#include <bonobo/bonobo-ui-util.h>
#include <eel/eel-debug.h>
#include <eel/eel-gdk-extensions.h>
@@ -81,7 +80,6 @@
#include <libnautilus/nautilus-undo.h>
#include <math.h>
#include <sys/time.h>
-#include <unistd.h>
/* FIXME bugzilla.gnome.org 41243:
* We should use inheritance instead of these special cases
@@ -519,47 +517,6 @@ set_initial_window_geometry (NautilusWindow *window)
max_height_for_screen));
}
-static gboolean
-location_change_at_idle_callback (gpointer callback_data)
-{
- NautilusWindow *window;
- char *location;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- location = window->details->location_to_change_to_at_idle;
- window->details->location_to_change_to_at_idle = NULL;
- window->details->location_change_at_idle_id = 0;
-
- nautilus_window_go_to (window, location);
- g_free (location);
-
- return FALSE;
-}
-
-
-/* handle bonobo events from the throbber -- since they can come in at
- any time right in the middle of things, defer until idle */
-static void
-throbber_callback (BonoboListener *listener,
- const char *event_name,
- const CORBA_any *arg,
- CORBA_Environment *ev,
- gpointer callback_data)
-{
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- g_free (window->details->location_to_change_to_at_idle);
- window->details->location_to_change_to_at_idle = g_strdup (BONOBO_ARG_GET_STRING (arg));
-
- if (window->details->location_change_at_idle_id == 0) {
- window->details->location_change_at_idle_id =
- gtk_idle_add (location_change_at_idle_callback, window);
- }
-}
-
/* Add a dummy menu with a "View as ..." item when we first create the
* view_as_option_menu -- without this the menu draws empty and shrunk,
* once we populate it it grows and forces the toolbar and all the other
@@ -585,10 +542,7 @@ nautilus_window_constructed (NautilusWindow *window)
{
GtkWidget *location_bar_box;
GtkWidget *view_as_menu_vbox;
- int sidebar_width;
BonoboControl *location_bar_wrapper;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
/* CORBA and Bonobo setup, which must be done before the location bar setup */
window->details->ui_container = bonobo_ui_container_new ();
@@ -668,29 +622,21 @@ nautilus_window_constructed (NautilusWindow *window)
set_initial_window_geometry (window);
window->content_hbox = nautilus_horizontal_splitter_new ();
-
- /* FIXME bugzilla.gnome.org 41245: Saved in pixels instead of in %? */
- /* FIXME bugzilla.gnome.org 41245: No reality check on the value? */
- sidebar_width = eel_preferences_get_integer (NAUTILUS_PREFERENCES_SIDEBAR_WIDTH);
- gtk_paned_set_position (GTK_PANED (window->content_hbox), sidebar_width);
- }
- gtk_widget_show (window->content_hbox);
- bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
-
- /* FIXME bugzilla.gnome.org 41243:
- * We should use inheritance instead of these special cases
- * for the desktop window.
- */
- if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+
/* set up the sidebar */
window->sidebar = nautilus_sidebar_new ();
gtk_widget_show (GTK_WIDGET (window->sidebar));
g_signal_connect (window->sidebar, "location_changed",
- G_CALLBACK (go_to_callback), window);
+ G_CALLBACK (go_to_callback), window);
gtk_paned_pack1 (GTK_PANED (window->content_hbox),
GTK_WIDGET (window->sidebar),
FALSE, TRUE);
+
+ nautilus_sidebar_setup_width (window->sidebar);
}
+
+ gtk_widget_show (window->content_hbox);
+ bonobo_window_set_contents (BONOBO_WINDOW (window), window->content_hbox);
bonobo_ui_component_freeze (window->details->shell_ui, NULL);
@@ -724,21 +670,6 @@ nautilus_window_constructed (NautilusWindow *window)
/* We'll do the second part later (bookmarks and go menus) */
window->details->ui_pending_initialize_menus_part_2 = TRUE;
-
- /* watch for throbber location changes, too */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- window->details->throbber_listener =
- bonobo_event_source_client_add_listener_full
- (property_bag,
- g_cclosure_new (G_CALLBACK (throbber_callback), window, NULL),
- "Bonobo/Property:change:location", NULL);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
/* Set initial sensitivity of some buttons & menu items
* now that they're all created.
@@ -826,33 +757,17 @@ static void
nautilus_window_unrealize (GtkWidget *widget)
{
NautilusWindow *window;
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
window = NAUTILUS_WINDOW (widget);
- /* Get rid of the throbber explicitly before it self-destructs
- * (which it will do when the control frame goes away.
- */
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
-
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_event_source_client_remove_listener
- (property_bag, window->details->throbber_listener, &ev);
- bonobo_object_release_unref (property_bag, &ev);
- }
-
- CORBA_Object_release (window->details->throbber_listener, &ev);
- window->details->throbber_listener = CORBA_OBJECT_NIL;
-
- CORBA_exception_free (&ev);
- }
+ if (window->details->throbber_property_bag != CORBA_OBJECT_NIL) {
+ bonobo_object_release_unref (window->details->throbber_property_bag, NULL);
+ window->details->throbber_property_bag = CORBA_OBJECT_NIL;
+ }
- bonobo_object_release_unref (window->details->throbber, NULL);
- window->details->throbber = CORBA_OBJECT_NIL;
+ if (window->details->throbber_listener != CORBA_OBJECT_NIL) {
+ CORBA_Object_release (window->details->throbber_listener, NULL);
+ window->details->throbber_listener = CORBA_OBJECT_NIL;
}
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
@@ -1679,35 +1594,6 @@ nautilus_window_allow_reload (NautilusWindow *window, gboolean allow)
}
void
-nautilus_window_allow_stop (NautilusWindow *window, gboolean allow)
-{
- CORBA_Environment ev;
- Bonobo_PropertyBag property_bag;
-
- nautilus_window_ui_freeze (window);
-
- if (allow)
- access ("nautilus-throbber: start", 0);
- else
- access ("nautilus-throbber: stop", 0);
-
- nautilus_bonobo_set_sensitive (window->details->shell_ui,
- NAUTILUS_COMMAND_STOP, allow);
-
- if (window->details->throbber != CORBA_OBJECT_NIL) {
- CORBA_exception_init (&ev);
- property_bag = Bonobo_Control_getProperties (window->details->throbber, &ev);
- if (!BONOBO_EX (&ev) && property_bag != CORBA_OBJECT_NIL) {
- bonobo_pbclient_set_boolean (property_bag, "throbbing", allow, &ev);
- bonobo_object_release_unref (property_bag, NULL);
- }
- CORBA_exception_free (&ev);
- }
-
- nautilus_window_ui_thaw (window);
-}
-
-void
nautilus_send_history_list_changed (void)
{
g_signal_emit_by_name (nautilus_signaller_get_current (),
@@ -1916,9 +1802,9 @@ nautilus_window_set_content_view_widget (NautilusWindow *window,
gtk_container_add (GTK_CONTAINER (window->content_hbox),
GTK_WIDGET (new_view));
} else {
- gtk_paned_pack2 (GTK_PANED (window->content_hbox),
- GTK_WIDGET (new_view),
- TRUE, TRUE);
+ nautilus_horizontal_splitter_pack2 (
+ NAUTILUS_HORIZONTAL_SPLITTER (window->content_hbox),
+ GTK_WIDGET (new_view));
}
}