nautilus r14402 - in trunk: . src



Author: cneumair
Date: Tue Jul 22 13:01:15 2008
New Revision: 14402
URL: http://svn.gnome.org/viewvc/nautilus?rev=14402&view=rev

Log:
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.


Modified:
   trunk/ChangeLog
   trunk/src/nautilus-spatial-window.c
   trunk/src/nautilus-spatial-window.h

Modified: trunk/src/nautilus-spatial-window.c
==============================================================================
--- trunk/src/nautilus-spatial-window.c	(original)
+++ trunk/src/nautilus-spatial-window.c	Tue Jul 22 13:01:15 2008
@@ -93,14 +93,20 @@
 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 @@
 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 @@
 	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 @@
 	}
 }
 
-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 @@
 	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 @@
 	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 @@
 {
 	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 @@
 		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 =

Modified: trunk/src/nautilus-spatial-window.h
==============================================================================
--- trunk/src/nautilus-spatial-window.h	(original)
+++ trunk/src/nautilus-spatial-window.h	Tue Jul 22 13:01:15 2008
@@ -57,9 +57,6 @@
 
 
 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);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]