metacity r3816 - in trunk: . src/core
- From: tthurman svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r3816 - in trunk: . src/core
- Date: Sat, 16 Aug 2008 03:09:40 +0000 (UTC)
Author: tthurman
Date: Sat Aug 16 03:09:40 2008
New Revision: 3816
URL: http://svn.gnome.org/viewvc/metacity?rev=3816&view=rev
Log:
2008-08-16 Ted Percival <ted midg3t net>
Ensure the user_rect is set sanely for windows that start maximized.
Prevents maximized windows from warping across the screen.
Fixes bug #504692.
* src/core/window.c (save_user_placement): renamed version of
meta_window_save_user_rect().
* src/core/window.c (force_save_user_placement): similar, but will
always save user_rect even if the window is maximised or fullscreen.
* src/core/window.c (meta_window_move_resize_internal): unplaced
windows have force_save_user_placement() called instead of
save_user_placement().
Modified:
trunk/ChangeLog
trunk/src/core/window.c
Modified: trunk/src/core/window.c
==============================================================================
--- trunk/src/core/window.c (original)
+++ trunk/src/core/window.c Sat Aug 16 03:09:40 2008
@@ -75,7 +75,8 @@
static void meta_window_hide (MetaWindow *window);
static void meta_window_save_rect (MetaWindow *window);
-static void meta_window_save_user_rect (MetaWindow *window);
+static void save_user_window_placement (MetaWindow *window);
+static void force_save_user_window_placement (MetaWindow *window);
static void meta_window_move_resize_internal (MetaWindow *window,
MetaMoveResizeFlags flags,
@@ -2450,11 +2451,28 @@
}
}
+/**
+ * Save the user_rect regardless of whether the window is maximized or
+ * fullscreen. See save_user_window_placement() for most uses.
+ *
+ * \param window Store current position of this window for future reference
+ */
+static void
+force_save_user_window_placement (MetaWindow *window)
+{
+ meta_window_get_client_root_coords (window, &window->user_rect);
+}
+
+/**
+ * Save the user_rect, but only if the window is neither maximized nor
+ * fullscreen, otherwise the window may snap back to those dimensions
+ * (bug #461927).
+ *
+ * \param window Store current position of this window for future reference
+ */
static void
-meta_window_save_user_rect (MetaWindow *window)
+save_user_window_placement (MetaWindow *window)
{
- /* We do not save maximized or fullscreen dimensions, otherwise the
- * window may snap back to those dimensions (Bug #461927). */
if (!(META_WINDOW_MAXIMIZED (window) || window->fullscreen))
{
MetaRectangle user_rect;
@@ -3520,13 +3538,11 @@
if (need_configure_notify)
send_configure_notify (window);
- /* user_rect is the position to restore towards if strut changes occur. Thus
- * we want user_rect to reflect user position/size changes OR the initial
- * placement of the window.
- */
- if (is_user_action || !window->placed)
- meta_window_save_user_rect(window);
-
+ if (!window->placed)
+ force_save_user_window_placement (window);
+ else if (is_user_action)
+ save_user_window_placement (window);
+
if (need_move_frame || need_resize_frame ||
need_move_client || need_resize_client)
{
@@ -4568,7 +4584,7 @@
*
* See also bug 426519.
*/
- meta_window_save_user_rect(window);
+ save_user_window_placement (window);
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]