metacity r3819 - in branches/gnome-2-24: . src/core
- From: tthurman svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r3819 - in branches/gnome-2-24: . src/core
- Date: Mon, 18 Aug 2008 12:49:28 +0000 (UTC)
Author: tthurman
Date: Mon Aug 18 12:49:28 2008
New Revision: 3819
URL: http://svn.gnome.org/viewvc/metacity?rev=3819&view=rev
Log:
2008-08-18 Thomas Thurman <tthurman gnome org>
* Cherrypick bugfixes from trunk.
Modified:
branches/gnome-2-24/ChangeLog
branches/gnome-2-24/src/core/window.c
branches/gnome-2-24/src/core/workspace.c
Modified: branches/gnome-2-24/src/core/window.c
==============================================================================
--- branches/gnome-2-24/src/core/window.c (original)
+++ branches/gnome-2-24/src/core/window.c Mon Aug 18 12:49:28 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
Modified: branches/gnome-2-24/src/core/workspace.c
==============================================================================
--- branches/gnome-2-24/src/core/workspace.c (original)
+++ branches/gnome-2-24/src/core/workspace.c Mon Aug 18 12:49:28 2008
@@ -514,9 +514,12 @@
MetaWindow *win = tmp->data;
GSList *s_iter;
- for (s_iter = win->struts; s_iter != NULL; s_iter = s_iter->next)
+ for (s_iter = win->struts; s_iter != NULL; s_iter = s_iter->next) {
+ MetaStrut *cpy = g_new (MetaStrut, 1);
+ *cpy = *((MetaStrut *)s_iter->data);
workspace->all_struts = g_slist_prepend (workspace->all_struts,
- s_iter->data);
+ cpy);
+ }
}
g_list_free (windows);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]