r14517 - gnucash/trunk - Do not move windows on restoration that would be offscreen.
Andreas Köhler
andi5 at cvs.gnucash.org
Sun Jul 16 03:45:28 EDT 2006
Author: andi5
Date: 2006-07-16 03:45:27 -0400 (Sun, 16 Jul 2006)
New Revision: 14517
Trac: http://svn.gnucash.org/trac/changeset/14517
Modified:
gnucash/trunk/ChangeLog
gnucash/trunk/src/gnome-utils/gnc-main-window.c
Log:
Do not move windows on restoration that would be offscreen.
Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog 2006-07-16 05:58:07 UTC (rev 14516)
+++ gnucash/trunk/ChangeLog 2006-07-16 07:45:27 UTC (rev 14517)
@@ -1,3 +1,8 @@
+2006-07-16 Andreas Köhler <andi5.py at gmx.net>
+
+ * src/gnome-utils/gnc-main-window.c: Do not move windows on
+ restoration that would be offscreen.
+
2006-07-15 Derek Atkins <derek at ihtfp.com>
* src/business/business-core/gncAddress.[ch]:
Modified: gnucash/trunk/src/gnome-utils/gnc-main-window.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-main-window.c 2006-07-16 05:58:07 UTC (rev 14516)
+++ gnucash/trunk/src/gnome-utils/gnc-main-window.c 2006-07-16 07:45:27 UTC (rev 14517)
@@ -546,41 +546,49 @@
priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
/* Get the window coordinates, etc. */
- pos = g_key_file_get_integer_list(data->key_file, window_group,
- WINDOW_POSITION, &length, &error);
+ geom = g_key_file_get_integer_list(data->key_file, window_group,
+ WINDOW_GEOMETRY, &length, &error);
if (error) {
g_warning("error reading group %s key %s: %s",
- window_group, WINDOW_POSITION, error->message);
+ window_group, WINDOW_GEOMETRY, error->message);
g_error_free(error);
error = NULL;
} else if (length != 2) {
g_warning("invalid number of values for group %s key %s",
- window_group, WINDOW_POSITION);
+ window_group, WINDOW_GEOMETRY);
} else {
- gtk_window_move(GTK_WINDOW(window), pos[0], pos[1]);
- DEBUG("window (%p) position %dx%d", window, pos[0], pos[1]);
+ gtk_window_resize(GTK_WINDOW(window), geom[0], geom[1]);
+ DEBUG("window (%p) size %dx%d", window, geom[0], geom[1]);
}
- if (pos) {
- g_free(pos);
- }
+ /* keep the geometry for a test whether the windows position
+ is offscreen */
- geom = g_key_file_get_integer_list(data->key_file, window_group,
- WINDOW_GEOMETRY, &length, &error);
+ pos = g_key_file_get_integer_list(data->key_file, window_group,
+ WINDOW_POSITION, &length, &error);
if (error) {
g_warning("error reading group %s key %s: %s",
- window_group, WINDOW_GEOMETRY, error->message);
+ window_group, WINDOW_POSITION, error->message);
g_error_free(error);
error = NULL;
} else if (length != 2) {
g_warning("invalid number of values for group %s key %s",
- window_group, WINDOW_GEOMETRY);
+ window_group, WINDOW_POSITION);
+ } else if ((pos[0] + (geom ? geom[0] : 0) < 0) ||
+ (pos[0] > gdk_screen_width()) ||
+ (pos[1] + (geom ? geom[1] : 0) < 0) ||
+ (pos[1] > gdk_screen_height())) {
+ g_debug("position %dx%d, size%dx%d is offscreen; will not move",
+ pos[0], pos[1], geom[0], geom[1]);
} else {
- gtk_window_resize(GTK_WINDOW(window), geom[0], geom[1]);
- DEBUG("window (%p) size %dx%d", window, geom[0], geom[1]);
+ gtk_window_move(GTK_WINDOW(window), pos[0], pos[1]);
+ DEBUG("window (%p) position %dx%d", window, pos[0], pos[1]);
}
if (geom) {
g_free(geom);
}
+ if (pos) {
+ g_free(pos);
+ }
max = g_key_file_get_boolean(data->key_file, window_group,
WINDOW_MAXIMIZED, &error);
More information about the gnucash-changes
mailing list