summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-07-22 13:01:15 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-07-22 13:01:15 +0000
commitd2a2e27658c4c006be44ce3d44c23abf38f90346 (patch)
tree4fc47d327c3f53c65a0e05dee0b8f78e70b025f6
parentdbf7af666cd9e6a36e7db24b41fe564e78cbefd2 (diff)
downloadnautilus-d2a2e27658c4c006be44ce3d44c23abf38f90346.tar.gz
Make geomtry save methods per slot, rather than per window. The active
2008-07-22 Christian Neumair <cneumair@gnome.org> * src/nautilus-spatial-window.c (save_window_geometry_timeout), (nautilus_spatial_window_unrealize), (nautilus_spatial_window_save_geometry), (nautilus_spatial_window_save_scroll_position), (nautilus_spatial_window_save_show_hidden_files_mode), (real_close_slot), (nautilus_spatial_window_class_init): * src/nautilus-spatial-window.h: Make geomtry save methods per slot, rather than per window. The active slot is set to NULL before they are closed. Fixes #542656. Thanks to Frederic Peters. svn path=/trunk/; revision=14402
-rw-r--r--ChangeLog13
-rw-r--r--src/nautilus-spatial-window.c58
-rw-r--r--src/nautilus-spatial-window.h3
3 files changed, 42 insertions, 32 deletions
diff --git a/ChangeLog b/ChangeLog
index 1b1803f27..755a4345f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-07-22 Christian Neumair <cneumair@gnome.org>
+
+ * src/nautilus-spatial-window.c (save_window_geometry_timeout),
+ (nautilus_spatial_window_unrealize),
+ (nautilus_spatial_window_save_geometry),
+ (nautilus_spatial_window_save_scroll_position),
+ (nautilus_spatial_window_save_show_hidden_files_mode),
+ (real_close_slot), (nautilus_spatial_window_class_init):
+ * src/nautilus-spatial-window.h:
+ Make geomtry save methods per slot, rather than per window. The active
+ slot is set to NULL before they are closed. Fixes #542656.
+ Thanks to Frederic Peters.
+
2008-07-21 Christian Neumair <cneumair@gnome.org>
* src/nautilus-places-sidebar.c (enable_tabs_changed_callback),
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index a9dc866bc..d0814c93d 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -93,14 +93,20 @@ static const GtkTargetEntry location_button_drag_types[] = {
G_DEFINE_TYPE(NautilusSpatialWindow, nautilus_spatial_window, NAUTILUS_TYPE_WINDOW)
#define parent_class nautilus_spatial_window_parent_class
+static void nautilus_spatial_window_save_geometry (NautilusWindowSlot *slot);
+
static gboolean
save_window_geometry_timeout (gpointer callback_data)
{
NautilusSpatialWindow *window;
+ NautilusWindowSlot *slot;
window = NAUTILUS_SPATIAL_WINDOW (callback_data);
-
- nautilus_spatial_window_save_geometry (window);
+ slot = nautilus_window_get_active_slot (NAUTILUS_WINDOW (window));
+
+ if (slot != NULL) {
+ nautilus_spatial_window_save_geometry (slot);
+ }
window->details->save_geometry_timeout_id = 0;
@@ -157,15 +163,20 @@ static void
nautilus_spatial_window_unrealize (GtkWidget *widget)
{
NautilusSpatialWindow *window;
+ NautilusWindowSlot *slot;
window = NAUTILUS_SPATIAL_WINDOW (widget);
+ slot = nautilus_window_get_active_slot (NAUTILUS_WINDOW (window));
GTK_WIDGET_CLASS (nautilus_spatial_window_parent_class)->unrealize (widget);
if (window->details->save_geometry_timeout_id != 0) {
g_source_remove (window->details->save_geometry_timeout_id);
window->details->save_geometry_timeout_id = 0;
- nautilus_spatial_window_save_geometry (window);
+
+ if (slot != NULL) {
+ nautilus_spatial_window_save_geometry (slot);
+ }
}
}
@@ -242,17 +253,15 @@ nautilus_spatial_window_finalize (GObject *object)
G_OBJECT_CLASS (nautilus_spatial_window_parent_class)->finalize (object);
}
-void
-nautilus_spatial_window_save_geometry (NautilusSpatialWindow *spatial_window)
+static void
+nautilus_spatial_window_save_geometry (NautilusWindowSlot *slot)
{
NautilusWindow *window;
- NautilusWindowSlot *slot;
NautilusFile *viewed_file;
char *geometry_string;
- window = NAUTILUS_WINDOW (spatial_window);
+ window = NAUTILUS_WINDOW (slot->window);
- slot = window->details->active_slot;
viewed_file = slot->viewed_file;
if (viewed_file == NULL) {
@@ -273,15 +282,13 @@ nautilus_spatial_window_save_geometry (NautilusSpatialWindow *spatial_window)
}
}
-void
-nautilus_spatial_window_save_scroll_position (NautilusSpatialWindow *window)
+static void
+nautilus_spatial_window_save_scroll_position (NautilusWindowSlot *slot)
{
- NautilusWindow *nautilus_window;
- NautilusWindowSlot *slot;
+ NautilusWindow *window;
char *scroll_string;
- nautilus_window = NAUTILUS_WINDOW (window);
- slot = nautilus_window_get_active_slot (nautilus_window);
+ window = NAUTILUS_WINDOW (slot->window);
if (slot->content_view == NULL) {
return;
@@ -295,14 +302,14 @@ nautilus_spatial_window_save_scroll_position (NautilusSpatialWindow *window)
g_free (scroll_string);
}
-void
-nautilus_spatial_window_save_show_hidden_files_mode (NautilusSpatialWindow *window)
+static void
+nautilus_spatial_window_save_show_hidden_files_mode (NautilusWindowSlot *slot)
{
- NautilusWindowSlot *slot;
+ NautilusWindow *window;
char *show_hidden_file_setting;
NautilusWindowShowHiddenFilesMode mode;
- slot = nautilus_window_get_active_slot (NAUTILUS_WINDOW (window));
+ window = NAUTILUS_WINDOW (slot->window);
mode = NAUTILUS_WINDOW (window)->details->show_hidden_files_mode;
if (mode != NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT) {
@@ -398,14 +405,6 @@ real_sync_title (NautilusWindow *window,
sync_window_title (window);
}
-static void
-real_window_close (NautilusWindow *window)
-{
- nautilus_spatial_window_save_geometry (NAUTILUS_SPATIAL_WINDOW (window));
- nautilus_spatial_window_save_scroll_position (NAUTILUS_SPATIAL_WINDOW (window));
- nautilus_spatial_window_save_show_hidden_files_mode (NAUTILUS_SPATIAL_WINDOW (window));
-}
-
static void
real_get_default_size (NautilusWindow *window,
guint *default_width, guint *default_height)
@@ -466,7 +465,10 @@ real_close_slot (NautilusWindow *window,
{
g_assert (g_list_length (window->details->slots) == 1);
- /* nothing to do */
+ nautilus_spatial_window_save_geometry (slot);
+ nautilus_spatial_window_save_scroll_position (slot);
+ nautilus_spatial_window_save_show_hidden_files_mode (slot);
+
EEL_CALL_PARENT (NAUTILUS_WINDOW_CLASS,
close_slot, (window, slot));
}
@@ -1029,8 +1031,6 @@ nautilus_spatial_window_class_init (NautilusSpatialWindowClass *class)
real_get_icon;
NAUTILUS_WINDOW_CLASS (class)->sync_title =
real_sync_title;
- NAUTILUS_WINDOW_CLASS (class)->close =
- real_window_close;
NAUTILUS_WINDOW_CLASS(class)->get_default_size = real_get_default_size;
NAUTILUS_WINDOW_CLASS(class)->sync_allow_stop =
diff --git a/src/nautilus-spatial-window.h b/src/nautilus-spatial-window.h
index d2552a45e..b0cf4ddc7 100644
--- a/src/nautilus-spatial-window.h
+++ b/src/nautilus-spatial-window.h
@@ -57,9 +57,6 @@ struct _NautilusSpatialWindowClass {
GType nautilus_spatial_window_get_type (void);
-void nautilus_spatial_window_save_geometry (NautilusSpatialWindow *window);
-void nautilus_spatial_window_save_scroll_position (NautilusSpatialWindow *window);
-void nautilus_spatial_window_save_show_hidden_files_mode (NautilusSpatialWindow *window);
void nautilus_spatial_window_set_location_button (NautilusSpatialWindow *window,
GFile *location);