SF.net SVN: geany:[3666] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Fri Mar 27 16:25:57 UTC 2009


Revision: 3666
          http://geany.svn.sourceforge.net/geany/?rev=3666&view=rev
Author:   eht16
Date:     2009-03-27 16:25:57 +0000 (Fri, 27 Mar 2009)

Log Message:
-----------
Allow negative window coordinates when saving and restoring the position of the main window.
Restore the main window position and size *after* the window has been realised to get it positioned accordingly (this affects at least Windows).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/keyfile.c
    trunk/src/main.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-03-27 16:14:29 UTC (rev 3665)
+++ trunk/ChangeLog	2009-03-27 16:25:57 UTC (rev 3666)
@@ -3,6 +3,12 @@
  * src/keyfile.c, src/utils.c, src/utils.h:
    Add utils_path_skip_root(), a relative path safe variant of
    g_path_skip_root (forgotten patch by Colomban Wendling, #2518658).
+ * src/keyfile.c, src/main.c:
+   Allow negative window coordinates when saving and restoring the
+   position of the main window.
+   Restore the main window position and size *after* the window has
+   been realised to get it positioned accordingly
+   (this affects at least Windows).
 
 
 2009-03-26  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2009-03-27 16:14:29 UTC (rev 3665)
+++ trunk/src/keyfile.c	2009-03-27 16:25:57 UTC (rev 3666)
@@ -800,10 +800,10 @@
 		ui_prefs.geometry[4] = geo[4];
 
 		/* don't use insane values but when main windows was maximized last time, pos might be
-		 * negative at least on Windows for some reason */
+		 * negative (due to differences in root window and window decorations) */
 		if (ui_prefs.geometry[4] != 1)
 		{
-			for (i = 0; i < 4; i++)
+			for (i = 2; i < 4; i++)
 			{
 				if (ui_prefs.geometry[i] < -1)
 					ui_prefs.geometry[i] = -1;

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2009-03-27 16:14:29 UTC (rev 3665)
+++ trunk/src/main.c	2009-03-27 16:25:57 UTC (rev 3666)
@@ -150,6 +150,17 @@
 };
 
 
+static void setup_window_position(void)
+{
+	/* interprets the saved window geometry */
+	if (prefs.save_winpos)
+	{
+		gtk_window_move(GTK_WINDOW(main_widgets.window), ui_prefs.geometry[0], ui_prefs.geometry[1]);
+		gtk_window_set_default_size(GTK_WINDOW(main_widgets.window), ui_prefs.geometry[2], ui_prefs.geometry[3]);
+		if (ui_prefs.geometry[4] == 1)
+			gtk_window_maximize(GTK_WINDOW(main_widgets.window));
+	}
+}
 
 /* special things for the initial setup of the checkboxes and related stuff
  * an action on a setting is only performed if the setting is not equal to the program default
@@ -214,15 +225,6 @@
 
 	ui_update_view_editor_menu_items();
 
-	/* interprets the saved window geometry */
-	if (prefs.save_winpos && ui_prefs.geometry[0] != -1)
-	{
-		gtk_window_move(GTK_WINDOW(main_widgets.window), ui_prefs.geometry[0], ui_prefs.geometry[1]);
-		gtk_window_set_default_size(GTK_WINDOW(main_widgets.window), ui_prefs.geometry[2], ui_prefs.geometry[3]);
-		if (ui_prefs.geometry[4] == 1)
-			gtk_window_maximize(GTK_WINDOW(main_widgets.window));
-	}
-
 	/* hide statusbar if desired */
 	if (! interface_prefs.statusbar_visible)
 	{
@@ -1051,7 +1053,14 @@
 	build_menu_update(doc);
 	treeviews_update_tag_list(doc, FALSE);
 
-	/* finally realize the window to show the user what we have done */
+#ifdef G_OS_WIN32
+	/* Manually realise the main window to be able to set the position but don't show it.
+	 * We don't set the position after showing the window to avoid flickering. */
+	gtk_widget_realize(main_widgets.window);
+#endif
+	setup_window_position();
+
+	/* finally show the window */
 	gtk_widget_show(main_widgets.window);
 	main_status.main_window_realized = TRUE;
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list