summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog35
-rw-r--r--libnautilus/nautilus-view-component.idl3
-rw-r--r--libnautilus/nautilus-view.c13
-rw-r--r--libnautilus/nautilus-view.h1
-rw-r--r--src/file-manager/fm-desktop-icon-view.c8
-rw-r--r--src/file-manager/fm-directory-view.c6
-rw-r--r--src/file-manager/fm-directory-view.h2
-rw-r--r--src/nautilus-application.c65
-rw-r--r--src/nautilus-application.h14
-rw-r--r--src/nautilus-desktop-window.c2
-rw-r--r--src/nautilus-navigation-window.c8
-rw-r--r--src/nautilus-object-window.c8
-rw-r--r--src/nautilus-shell.c15
-rw-r--r--src/nautilus-spatial-window.c8
-rw-r--r--src/nautilus-view-frame-corba.c12
-rw-r--r--src/nautilus-view-frame-private.h1
-rw-r--r--src/nautilus-view-frame.c16
-rw-r--r--src/nautilus-view-frame.h1
-rw-r--r--src/nautilus-window-manage-views.c2
-rw-r--r--src/nautilus-window.c8
20 files changed, 119 insertions, 109 deletions
diff --git a/ChangeLog b/ChangeLog
index 25b272564..09a009c48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,38 @@
+2000-07-13 Michael Engber <engber@eazel.com>
+
+ * libnautilus/nautilus-view-component.idl:
+ * libnautilus/nautilus-view.c:
+ * libnautilus/nautilus-view.h:
+ * src/file-manager/fm-desktop-icon-view.c:
+ (fm_desktop_icon_view_close_desktop_menu_item_callback),
+ (fm_desktop_icon_view_create_background_context_menu_items):
+ * src/file-manager/fm-directory-view.c:
+ (fm_directory_view_close_desktop):
+ * src/file-manager/fm-directory-view.h:
+ * src/nautilus-application.c: (nautilus_application_windows),
+ (nautilus_application_startup),
+ (nautilus_application_destroy_desktop_window),
+ (nautilus_application_create_desktop_window),
+ (nautilus_application_open_desktop),
+ (nautilus_application_close_desktop),
+ (nautilus_application_destroy_window),
+ (nautilus_application_create_window):
+ * src/nautilus-application.h:
+ * src/nautilus-desktop-window.c: (nautilus_desktop_window_new):
+ * src/nautilus-shell.c: (corba_manage_desktop):
+ * src/nautilus-view-frame-corba.c:
+ (impl_Nautilus_ViewFrame_set_title):
+ * src/nautilus-view-frame-private.h:
+ * src/nautilus-view-frame.c:
+ (nautilus_view_frame_initialize_class),
+ (nautilus_view_frame_set_title):
+ * src/nautilus-view-frame.h:
+ * src/nautilus-window-manage-views.c: (open_location):
+ * src/nautilus-window.c: (nautilus_window_connect_view):
+ Changed desktop menu to offer close desktop instead of
+ quit nautilus. Also, changed the menu item's action to
+ use a direct fn call instead of CORBA.
+
2000-07-13 Gene Z. Ragan <gzr@eazel.com>
* components/history/nautilus-history-view.c: (install_icon),
diff --git a/libnautilus/nautilus-view-component.idl b/libnautilus/nautilus-view-component.idl
index 2b0859292..9f2414da2 100644
--- a/libnautilus/nautilus-view-component.idl
+++ b/libnautilus/nautilus-view-component.idl
@@ -85,9 +85,6 @@ module Nautilus {
/* Called by a view component to change the title. */
oneway void set_title (in string new_title);
-
- /* Called by a view component to quit nautilus */
- oneway void quit_nautilus ();
};
typedef double ZoomLevel;
diff --git a/libnautilus/nautilus-view.c b/libnautilus/nautilus-view.c
index 3e0df0318..5bfe20535 100644
--- a/libnautilus/nautilus-view.c
+++ b/libnautilus/nautilus-view.c
@@ -438,19 +438,6 @@ nautilus_view_set_title (NautilusView *view,
view_frame_call_end (view_frame, &ev);
}
-void
-nautilus_view_quit_nautilus (NautilusView *view)
-{
- CORBA_Environment ev;
- Nautilus_ViewFrame view_frame;
-
- view_frame = view_frame_call_begin (view, &ev);
- if (view_frame != CORBA_OBJECT_NIL) {
- Nautilus_ViewFrame_quit_nautilus (view_frame, &ev);
- }
- view_frame_call_end (view_frame, &ev);
-}
-
BonoboControl *
nautilus_view_get_bonobo_control (NautilusView *view)
{
diff --git a/libnautilus/nautilus-view.h b/libnautilus/nautilus-view.h
index d8ef461c3..a8ccad208 100644
--- a/libnautilus/nautilus-view.h
+++ b/libnautilus/nautilus-view.h
@@ -83,7 +83,6 @@ void nautilus_view_report_load_complete (NautilusView
void nautilus_view_report_load_failed (NautilusView *view);
void nautilus_view_set_title (NautilusView *view,
const char *title);
-void nautilus_view_quit_nautilus (NautilusView *view);
/* Some utility functions useful for doing the CORBA work directly.
* Not needed by most components, but shared with the view frame code,
diff --git a/src/file-manager/fm-desktop-icon-view.c b/src/file-manager/fm-desktop-icon-view.c
index d6e053a8b..5eee60465 100644
--- a/src/file-manager/fm-desktop-icon-view.c
+++ b/src/file-manager/fm-desktop-icon-view.c
@@ -57,9 +57,9 @@ fm_desktop_icon_view_initialize (FMDesktopIconView *desktop_icon_view)
}
static void
-fm_desktop_icon_view_quit_menu_item_callback (GtkMenuItem *item, gpointer callback_data)
+fm_desktop_icon_view_close_desktop_menu_item_callback (GtkMenuItem *item, gpointer callback_data)
{
- fm_directory_view_quit_nautilus (FM_DIRECTORY_VIEW (callback_data));
+ fm_directory_view_close_desktop (FM_DIRECTORY_VIEW (callback_data));
}
static void
@@ -75,10 +75,10 @@ fm_desktop_icon_view_create_background_context_menu_items (FMDirectoryView *view
create_background_context_menu_items,
(view, menu));
- menu_item = gtk_menu_item_new_with_label (_("Quit Nautilus"));
+ menu_item = gtk_menu_item_new_with_label (_("Close Nautilus Desktop"));
gtk_signal_connect (GTK_OBJECT (menu_item),
"activate",
- GTK_SIGNAL_FUNC (fm_desktop_icon_view_quit_menu_item_callback),
+ GTK_SIGNAL_FUNC (fm_desktop_icon_view_close_desktop_menu_item_callback),
view);
gtk_widget_show (menu_item);
gtk_menu_append (menu, menu_item);
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index de476069b..c37c31c58 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -49,6 +49,8 @@
#include <libnautilus/nautilus-undo.h>
#include <libnautilus/nautilus-zoomable.h>
+#include <src/nautilus-application.h>
+
#include <libnautilus-extensions/nautilus-background.h>
#include <libnautilus-extensions/nautilus-directory.h>
#include <libnautilus-extensions/nautilus-directory-background.h>
@@ -3264,8 +3266,8 @@ fm_directory_view_get_context_menu_index(const char *menu_name)
}
void
-fm_directory_view_quit_nautilus (FMDirectoryView *view)
+fm_directory_view_close_desktop (FMDirectoryView *view)
{
g_assert (FM_IS_DIRECTORY_VIEW (view));
- nautilus_view_quit_nautilus (view->details->nautilus_view);
+ nautilus_application_close_desktop ();
}
diff --git a/src/file-manager/fm-directory-view.h b/src/file-manager/fm-directory-view.h
index cf2e5a769..ae25cd66d 100644
--- a/src/file-manager/fm-directory-view.h
+++ b/src/file-manager/fm-directory-view.h
@@ -266,7 +266,7 @@ NautilusDirectory *fm_directory_view_get_model (FMDirectory
void fm_directory_view_pop_up_background_context_menu (FMDirectoryView *view);
void fm_directory_view_pop_up_selection_context_menu (FMDirectoryView *view);
void fm_directory_view_update_menus (FMDirectoryView *view);
-void fm_directory_view_quit_nautilus (FMDirectoryView *view);
+void fm_directory_view_close_desktop (FMDirectoryView *view);
#endif /* FM_DIRECTORY_VIEW_H */
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 38530de35..ea052e5d5 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -132,6 +132,17 @@ create_factory (PortableServer_POA poa,
return bonobo_object_activate_servant (BONOBO_OBJECT (bonobo_object), servant);
}
+/* Keeps track of the one and only desktop window. */
+static NautilusDesktopWindow *nautilus_application_desktop;
+
+/* Keeps track of all the nautilus windows. */
+static GSList *nautilus_application_window_list;
+
+GSList *nautilus_application_windows (void)
+{
+ return nautilus_application_window_list;
+}
+
static void
nautilus_application_initialize_class (NautilusApplicationClass *klass)
{
@@ -401,22 +412,60 @@ nautilus_application_startup (NautilusApplication *application,
out:
CORBA_exception_free (&ev);
- return application->windows != NULL || application->has_desktop;
+ return nautilus_application_window_list != NULL || nautilus_application_desktop != NULL;
}
static void
-nautilus_application_destroy_window (GtkObject *obj, NautilusApplication *application)
+nautilus_application_destroy_desktop_window (GtkObject *obj, NautilusApplication *application)
+{
+ nautilus_application_desktop = NULL;
+}
+
+static NautilusDesktopWindow *
+nautilus_application_create_desktop_window (NautilusApplication *application)
+{
+ NautilusDesktopWindow *window;
+
+ g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL);
+
+ window = nautilus_desktop_window_new (application);
+
+ gtk_signal_connect (GTK_OBJECT (window),
+ "destroy", nautilus_application_destroy_desktop_window,
+ application);
+
+ nautilus_application_desktop = window;
+
+ return window;
+}
+
+void
+nautilus_application_open_desktop (NautilusApplication *application)
{
- application->windows = g_slist_remove (application->windows, obj);
- if (application->windows == NULL && !application->has_desktop) {
+ NautilusDesktopWindow *desktop_window;
+
+ if (nautilus_application_desktop == NULL) {
+ desktop_window = nautilus_application_create_desktop_window (application);
+ }
+ gtk_widget_show (GTK_WIDGET (desktop_window));
+}
+
+void
+nautilus_application_close_desktop (void)
+{
+ gtk_widget_destroy (GTK_WIDGET (nautilus_application_desktop));
+ if (nautilus_application_window_list == NULL) {
gtk_main_quit ();
}
}
-void
-nautilus_application_quit (void)
+static void
+nautilus_application_destroy_window (GtkObject *obj, NautilusApplication *application)
{
- gtk_main_quit ();
+ nautilus_application_window_list = g_slist_remove (nautilus_application_window_list, obj);
+ if (nautilus_application_window_list == NULL && nautilus_application_desktop == NULL) {
+ gtk_main_quit ();
+ }
}
NautilusWindow *
@@ -433,7 +482,7 @@ nautilus_application_create_window (NautilusApplication *application)
"destroy", nautilus_application_destroy_window,
application);
- application->windows = g_slist_prepend (application->windows, window);
+ nautilus_application_window_list = g_slist_prepend (nautilus_application_window_list, window);
/* Do not yet show the window. It will be shown later on if it can
* successfully display its initial URI. Otherwise it will be destroyed
diff --git a/src/nautilus-application.h b/src/nautilus-application.h
index 46ce8d127..cafc2d25a 100644
--- a/src/nautilus-application.h
+++ b/src/nautilus-application.h
@@ -40,8 +40,6 @@ typedef struct NautilusWindow NautilusWindow;
typedef struct {
BonoboObject parent;
- GSList *windows;
- gboolean has_desktop;
NautilusUndoManager *undo_manager;
} NautilusApplication;
@@ -54,7 +52,15 @@ NautilusApplication *nautilus_application_new (void);
gboolean nautilus_application_startup (NautilusApplication *application,
gboolean manage_desktop,
const char *urls[]);
-NautilusWindow * nautilus_application_create_window (NautilusApplication *application);
-void nautilus_application_quit (void);
+
+GSList *nautilus_application_windows (void);
+NautilusWindow *nautilus_application_create_window (NautilusApplication *application);
+
+void nautilus_application_open_desktop (NautilusApplication *application);
+void nautilus_application_close_desktop (void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
#endif /* NAUTILUS_APPLICATION_H */
diff --git a/src/nautilus-desktop-window.c b/src/nautilus-desktop-window.c
index 5d19852ff..8de129a3a 100644
--- a/src/nautilus-desktop-window.c
+++ b/src/nautilus-desktop-window.c
@@ -110,8 +110,6 @@ nautilus_desktop_window_new (NautilusApplication *application)
g_free (desktop_directory_path);
nautilus_window_goto_uri (NAUTILUS_WINDOW (window), desktop_directory_uri);
g_free (desktop_directory_uri);
-
- application->has_desktop = TRUE;
gtk_widget_show (GTK_WIDGET (window));
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index a1f72be59..d80ec3a9d 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -1096,13 +1096,6 @@ nautilus_window_set_title_callback (NautilusViewFrame *view,
}
static void
-nautilus_window_quit_nautilus_callback (NautilusViewFrame *view,
- NautilusWindow *window)
-{
- nautilus_application_quit ();
-}
-
-static void
nautilus_window_zoom_level_changed_callback (NautilusViewFrame *view,
double zoom_level,
NautilusWindow *window)
@@ -1181,7 +1174,6 @@ nautilus_window_connect_view (NautilusWindow *window, NautilusViewFrame *view)
CONNECT (report_load_complete);
CONNECT (report_load_failed);
CONNECT (set_title);
- CONNECT (quit_nautilus);
CONNECT (zoom_level_changed);
CONNECT (get_history_list);
diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c
index a1f72be59..d80ec3a9d 100644
--- a/src/nautilus-object-window.c
+++ b/src/nautilus-object-window.c
@@ -1096,13 +1096,6 @@ nautilus_window_set_title_callback (NautilusViewFrame *view,
}
static void
-nautilus_window_quit_nautilus_callback (NautilusViewFrame *view,
- NautilusWindow *window)
-{
- nautilus_application_quit ();
-}
-
-static void
nautilus_window_zoom_level_changed_callback (NautilusViewFrame *view,
double zoom_level,
NautilusWindow *window)
@@ -1181,7 +1174,6 @@ nautilus_window_connect_view (NautilusWindow *window, NautilusViewFrame *view)
CONNECT (report_load_complete);
CONNECT (report_load_failed);
CONNECT (set_title);
- CONNECT (quit_nautilus);
CONNECT (zoom_level_changed);
CONNECT (get_history_list);
diff --git a/src/nautilus-shell.c b/src/nautilus-shell.c
index 599f41a30..bda0976f8 100644
--- a/src/nautilus-shell.c
+++ b/src/nautilus-shell.c
@@ -259,14 +259,11 @@ static void
corba_manage_desktop (PortableServer_Servant servant,
CORBA_Environment *ev)
{
- NautilusShell *shell;
- static NautilusDesktopWindow *desktop_window;
-
- shell = NAUTILUS_SHELL (((BonoboObjectServant *) servant)->bonobo_object);
+ NautilusShell *shell;
+ NautilusApplication *application;
- /* Create a desktop window. */
- if (desktop_window == NULL) {
- desktop_window = nautilus_desktop_window_new (shell->details->application);
- }
- gtk_widget_show (GTK_WIDGET (desktop_window));
+ shell = NAUTILUS_SHELL (((BonoboObjectServant *) servant)->bonobo_object);
+ application = NAUTILUS_APPLICATION (shell->details->application);
+
+ nautilus_application_open_desktop (application);
}
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index a1f72be59..d80ec3a9d 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -1096,13 +1096,6 @@ nautilus_window_set_title_callback (NautilusViewFrame *view,
}
static void
-nautilus_window_quit_nautilus_callback (NautilusViewFrame *view,
- NautilusWindow *window)
-{
- nautilus_application_quit ();
-}
-
-static void
nautilus_window_zoom_level_changed_callback (NautilusViewFrame *view,
double zoom_level,
NautilusWindow *window)
@@ -1181,7 +1174,6 @@ nautilus_window_connect_view (NautilusWindow *window, NautilusViewFrame *view)
CONNECT (report_load_complete);
CONNECT (report_load_failed);
CONNECT (set_title);
- CONNECT (quit_nautilus);
CONNECT (zoom_level_changed);
CONNECT (get_history_list);
diff --git a/src/nautilus-view-frame-corba.c b/src/nautilus-view-frame-corba.c
index 5264e2f36..2d5acc10d 100644
--- a/src/nautilus-view-frame-corba.c
+++ b/src/nautilus-view-frame-corba.c
@@ -60,8 +60,6 @@ static void impl_Nautilus_ViewFrame_report_load_failed (PortableServer_
static void impl_Nautilus_ViewFrame_set_title (PortableServer_Servant servant,
const CORBA_char *title,
CORBA_Environment *ev);
-static void impl_Nautilus_ViewFrame_quit_nautilus (PortableServer_Servant servant,
- CORBA_Environment *ev);
POA_Nautilus_ViewFrame__epv impl_Nautilus_ViewFrame_epv =
{
@@ -76,7 +74,6 @@ POA_Nautilus_ViewFrame__epv impl_Nautilus_ViewFrame_epv =
&impl_Nautilus_ViewFrame_report_load_complete,
&impl_Nautilus_ViewFrame_report_load_failed,
&impl_Nautilus_ViewFrame_set_title,
- &impl_Nautilus_ViewFrame_quit_nautilus,
};
static PortableServer_ServantBase__epv base_epv;
@@ -221,12 +218,3 @@ impl_Nautilus_ViewFrame_set_title (PortableServer_Servant servant,
nautilus_view_frame_set_title
(((impl_POA_Nautilus_ViewFrame *) servant)->view, title);
}
-
-static void
-impl_Nautilus_ViewFrame_quit_nautilus (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- nautilus_view_frame_quit_nautilus
- (((impl_POA_Nautilus_ViewFrame *) servant)->view);
-}
-
diff --git a/src/nautilus-view-frame-private.h b/src/nautilus-view-frame-private.h
index 4bfb2ab3a..063ae8fd3 100644
--- a/src/nautilus-view-frame-private.h
+++ b/src/nautilus-view-frame-private.h
@@ -65,6 +65,7 @@ void nautilus_view_frame_report_load_failed (NautilusViewFrame
void nautilus_view_frame_set_title (NautilusViewFrame *view,
const char *title);
void nautilus_view_frame_quit_nautilus (NautilusViewFrame *view);
+void nautilus_view_frame_close_desktop (NautilusViewFrame *view);
/* Zoomable */
void nautilus_view_frame_zoom_level_changed (NautilusViewFrame *view,
diff --git a/src/nautilus-view-frame.c b/src/nautilus-view-frame.c
index b224163f1..69d13ae2a 100644
--- a/src/nautilus-view-frame.c
+++ b/src/nautilus-view-frame.c
@@ -52,7 +52,6 @@ enum {
REPORT_LOAD_COMPLETE,
REPORT_LOAD_FAILED,
SET_TITLE,
- QUIT_NAUTILUS,
ZOOM_LEVEL_CHANGED,
CLIENT_GONE,
GET_HISTORY_LIST,
@@ -155,14 +154,6 @@ nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass)
set_title),
gtk_marshal_NONE__STRING,
GTK_TYPE_NONE, 1, GTK_TYPE_STRING);
- signals[QUIT_NAUTILUS] =
- gtk_signal_new ("quit_nautilus",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (NautilusViewFrameClass,
- quit_nautilus),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
signals[ZOOM_LEVEL_CHANGED] =
gtk_signal_new ("zoom_level_changed",
@@ -725,13 +716,6 @@ nautilus_view_frame_set_title (NautilusViewFrame *view,
}
void
-nautilus_view_frame_quit_nautilus (NautilusViewFrame *view)
-{
- g_return_if_fail (NAUTILUS_IS_VIEW_FRAME (view));
- gtk_signal_emit (GTK_OBJECT (view), signals[QUIT_NAUTILUS]);
-}
-
-void
nautilus_view_frame_zoom_level_changed (NautilusViewFrame *view,
double level)
{
diff --git a/src/nautilus-view-frame.h b/src/nautilus-view-frame.h
index d33ea519d..6ddcf7ad7 100644
--- a/src/nautilus-view-frame.h
+++ b/src/nautilus-view-frame.h
@@ -98,7 +98,6 @@ typedef struct {
void (* report_load_failed) (NautilusViewFrame *view);
void (* set_title) (NautilusViewFrame *view,
const char *title);
- void (* quit_nautilus) (NautilusViewFrame *view);
/* Part of Nautilus::ZoomableFrame CORBA interface. */
void (* zoom_level_changed) (NautilusViewFrame *view,
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index e34da8752..b8a8ed1c4 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -665,7 +665,7 @@ open_location (NautilusWindow *window,
/* FIXME: This may be the desired bahavior, but the prefs UI still says open
* new window. How can we resolve this inconsistancy?
*/
- for (element = window->application->windows; element != NULL; element = element->next) {
+ for (element = nautilus_application_windows (); element != NULL; element = element->next) {
traverse_window = element->data;
if (strcmp (traverse_window->location, location) == 0) {
gtk_widget_show_now (GTK_WIDGET (traverse_window));
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index a1f72be59..d80ec3a9d 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -1096,13 +1096,6 @@ nautilus_window_set_title_callback (NautilusViewFrame *view,
}
static void
-nautilus_window_quit_nautilus_callback (NautilusViewFrame *view,
- NautilusWindow *window)
-{
- nautilus_application_quit ();
-}
-
-static void
nautilus_window_zoom_level_changed_callback (NautilusViewFrame *view,
double zoom_level,
NautilusWindow *window)
@@ -1181,7 +1174,6 @@ nautilus_window_connect_view (NautilusWindow *window, NautilusViewFrame *view)
CONNECT (report_load_complete);
CONNECT (report_load_failed);
CONNECT (set_title);
- CONNECT (quit_nautilus);
CONNECT (zoom_level_changed);
CONNECT (get_history_list);