summaryrefslogtreecommitdiff
path: root/src/nautilus-navigation-window.c
diff options
context:
space:
mode:
authorChristian Neumair <chris@gnome-de.org>2006-06-21 16:26:23 +0000
committerChristian Neumair <cneumair@src.gnome.org>2006-06-21 16:26:23 +0000
commitac97cb95cff3581865342e2d64507906896f42e5 (patch)
treeecb54050a23d4703e9263ec4e3c27a4e3f9ecdd3 /src/nautilus-navigation-window.c
parentc98d766500ba4533fb759ba83ad20045d81ae39e (diff)
downloadnautilus-ac97cb95cff3581865342e2d64507906896f42e5.tar.gz
Add complete session management, remember maximization state and type of
2006-06-21 Christian Neumair <chris@gnome-de.org> Add complete session management, remember maximization state and type of open windows, save history on quit. * libnautilus-private/nautilus-global-preferences.c * libnautilus-private/nautilus-global-preferences.h: Add NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED setting. * libnautilus-private/nautilus-metadata.h: Add NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED key. * src/nautilus-application.c: * src/nautilus-application.h: Save session on session save request, add nautilus_application_load_session(), move initial navigational geometry handling to nautilus_application_create_navigation_window, maximize window if NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED is set. * src/nautilus-main.c: Add "--load-session" parameter. * src/nautilus-shell-interface.idl: * src/nautilus-shell.c: Add load_session CORBA method. * src/nautilus-navigation-window.c: * src/nautilus-spatial-window.c: Save maximized state when appropriate. * src/nautilus-window-manage-views.c: Load maximized state for spatial windows, remove navigation window geometry handling. * src/nautilus-window.c: * src/nautilus-window-private.h: Add nautilus_add_to_history_list_no_notify.
Diffstat (limited to 'src/nautilus-navigation-window.c')
-rw-r--r--src/nautilus-navigation-window.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index c5a2d9b34..58ea44140 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -560,6 +560,22 @@ nautilus_navigation_window_unrealize (GtkWidget *widget)
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
}
+static gboolean
+nautilus_navigation_window_state_event (GtkWidget *widget,
+ GdkEventWindowState *event)
+{
+ if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
+ eel_preferences_set_boolean (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED,
+ event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED);
+ }
+
+ if (GTK_WIDGET_CLASS (parent_class)->window_state_event != NULL) {
+ return GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event);
+ }
+
+ return FALSE;
+}
+
static void
nautilus_navigation_window_destroy (GtkObject *object)
{
@@ -1418,8 +1434,7 @@ nautilus_navigation_window_save_geometry (NautilusNavigationWindow *window)
g_assert (NAUTILUS_IS_WINDOW (window));
- if (GTK_WIDGET(window)->window &&
- !(gdk_window_get_state (GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_MAXIMIZED)) {
+ if (GTK_WIDGET(window)->window) {
geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window));
if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY)) {
@@ -1428,6 +1443,12 @@ nautilus_navigation_window_save_geometry (NautilusNavigationWindow *window)
geometry_string);
}
g_free (geometry_string);
+
+ if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) {
+ eel_preferences_set_boolean
+ (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED,
+ gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED);
+ }
}
}
@@ -1462,6 +1483,7 @@ nautilus_navigation_window_class_init (NautilusNavigationWindowClass *class)
GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy;
GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show;
GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize;
+ GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event;
NAUTILUS_WINDOW_CLASS (class)->load_view_as_menu = real_load_view_as_menu;
NAUTILUS_WINDOW_CLASS (class)->set_content_view_widget = real_set_content_view_widget;
NAUTILUS_WINDOW_CLASS (class)->set_throbber_active = real_set_throbber_active;