[metacity] add checks against inappropriate changes to override-redirect window
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] add checks against inappropriate changes to override-redirect window
- Date: Sun, 26 Feb 2017 22:23:52 +0000 (UTC)
commit 3f0a2fe9f957bb8856c1e6df88861df5fc1be882
Author: Owen W. Taylor <otaylor fishsoup net>
Date: Sun Jun 14 08:11:29 2009 -0400
add checks against inappropriate changes to override-redirect window
Add g_return_if_fail() to check that window-management functions like
meta_window_maximize() aren't called on override-redirect windows.
This reveals that were were "unminimizing" override-redirect windows
when adding them; avoid doing that.
http://bugzilla.gnome.org/show_bug.cgi?id=582639
src/core/window.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 46 insertions(+), 3 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index 4b3dfbf..7ee18fc 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -786,7 +786,9 @@ meta_window_new_with_attrs (MetaDisplay *display,
* And we shouldn't unminimize windows if they were initially
* iconic.
*/
- if (!display->display_opening && !window->initially_iconic)
+ if (!window->override_redirect &&
+ !display->display_opening &&
+ !window->initially_iconic)
unminimize_window_and_all_transient_parents (window);
meta_error_trap_pop (display); /* pop the XSync()-reducing trap */
@@ -2389,6 +2391,8 @@ queue_calc_showing_func (MetaWindow *window,
void
meta_window_minimize (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
if (!window->minimized)
{
window->minimized = TRUE;
@@ -2416,6 +2420,8 @@ meta_window_minimize (MetaWindow *window)
void
meta_window_unminimize (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
if (window->minimized)
{
window->minimized = FALSE;
@@ -2574,10 +2580,12 @@ void
meta_window_maximize (MetaWindow *window,
MetaMaximizeFlags directions)
{
+ gboolean maximize_horizontally, maximize_vertically;
MetaRectangle *saved_rect = NULL;
+ g_return_if_fail (!window->override_redirect);
+
/* At least one of the two directions ought to be set */
- gboolean maximize_horizontally, maximize_vertically;
maximize_horizontally = directions & META_MAXIMIZE_HORIZONTAL;
maximize_vertically = directions & META_MAXIMIZE_VERTICAL;
g_assert (maximize_horizontally || maximize_vertically);
@@ -2713,9 +2721,10 @@ void
meta_window_unmaximize (MetaWindow *window,
MetaMaximizeFlags directions)
{
- /* At least one of the two directions ought to be set */
gboolean unmaximize_horizontally, unmaximize_vertically;
+ g_return_if_fail (!window->override_redirect);
+
/* Restore tiling if necessary */
if (window->tile_mode == META_TILE_LEFT ||
window->tile_mode == META_TILE_RIGHT)
@@ -2725,6 +2734,7 @@ meta_window_unmaximize (MetaWindow *window,
return;
}
+ /* At least one of the two directions ought to be set */
unmaximize_horizontally = directions & META_MAXIMIZE_HORIZONTAL;
unmaximize_vertically = directions & META_MAXIMIZE_VERTICAL;
g_assert (unmaximize_horizontally || unmaximize_vertically);
@@ -2817,6 +2827,8 @@ meta_window_unmaximize (MetaWindow *window,
void
meta_window_make_above (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
window->wm_state_above = TRUE;
meta_window_update_layer (window);
meta_window_raise (window);
@@ -2828,6 +2840,8 @@ meta_window_make_above (MetaWindow *window)
void
meta_window_unmake_above (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
window->wm_state_above = FALSE;
meta_window_raise (window);
meta_window_update_layer (window);
@@ -2873,6 +2887,8 @@ meta_window_make_fullscreen_internal (MetaWindow *window)
void
meta_window_make_fullscreen (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
if (!window->fullscreen)
{
meta_window_make_fullscreen_internal (window);
@@ -2885,6 +2901,8 @@ meta_window_make_fullscreen (MetaWindow *window)
void
meta_window_unmake_fullscreen (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
if (window->fullscreen)
{
MetaRectangle target_rect;
@@ -2954,6 +2972,8 @@ void
meta_window_shade (MetaWindow *window,
guint32 timestamp)
{
+ g_return_if_fail (!window->override_redirect);
+
meta_topic (META_DEBUG_WINDOW_OPS,
"Shading %s\n", window->desc);
if (!window->shaded)
@@ -2979,6 +2999,8 @@ void
meta_window_unshade (MetaWindow *window,
guint32 timestamp)
{
+ g_return_if_fail (!window->override_redirect);
+
meta_topic (META_DEBUG_WINDOW_OPS,
"Unshading %s\n", window->desc);
if (window->shaded)
@@ -3102,6 +3124,8 @@ void
meta_window_activate (MetaWindow *window,
guint32 timestamp)
{
+ g_return_if_fail (!window->override_redirect);
+
/* We're not really a pager, but the behavior we want is the same as if
* we were such. If we change the pager behavior later, we could revisit
* this and just add extra flags to window_activate.
@@ -3114,6 +3138,8 @@ meta_window_activate_with_workspace (MetaWindow *window,
guint32 timestamp,
MetaWorkspace *workspace)
{
+ g_return_if_fail (!window->override_redirect);
+
/* We're not really a pager, but the behavior we want is the same as if
* we were such. If we change the pager behavior later, we could revisit
* this and just add extra flags to window_activate.
@@ -4285,6 +4311,8 @@ meta_window_focus (MetaWindow *window,
{
MetaWindow *modal_transient;
+ g_return_if_fail (!window->override_redirect);
+
meta_topic (META_DEBUG_FOCUS,
"Setting input focus to window %s, input: %d take_focus: %d\n",
window->desc, window->input, window->take_focus);
@@ -4407,6 +4435,8 @@ void
meta_window_change_workspace (MetaWindow *window,
MetaWorkspace *workspace)
{
+ g_return_if_fail (!window->override_redirect);
+
meta_window_change_workspace_without_transients (window, workspace);
meta_window_foreach_transient (window, change_workspace_foreach,
@@ -4508,6 +4538,9 @@ void
meta_window_stick (MetaWindow *window)
{
gboolean stick = TRUE;
+
+ g_return_if_fail (!window->override_redirect);
+
window_stick_impl (window);
meta_window_foreach_transient (window,
stick_foreach_func,
@@ -4518,6 +4551,9 @@ void
meta_window_unstick (MetaWindow *window)
{
gboolean stick = FALSE;
+
+ g_return_if_fail (!window->override_redirect);
+
window_unstick_impl (window);
meta_window_foreach_transient (window,
stick_foreach_func,
@@ -4621,6 +4657,9 @@ void
meta_window_raise (MetaWindow *window)
{
MetaWindow *ancestor;
+
+ g_return_if_fail (!window->override_redirect);
+
ancestor = meta_window_find_root_ancestor (window);
meta_topic (META_DEBUG_WINDOW_OPS,
@@ -4660,6 +4699,8 @@ meta_window_raise (MetaWindow *window)
void
meta_window_lower (MetaWindow *window)
{
+ g_return_if_fail (!window->override_redirect);
+
meta_topic (META_DEBUG_WINDOW_OPS,
"Lowering window %s\n", window->desc);
@@ -6758,6 +6799,8 @@ meta_window_show_menu (MetaWindow *window,
int n_workspaces;
gboolean ltr;
+ g_return_if_fail (!window->override_redirect);
+
if (window->display->window_menu)
{
meta_ui_window_menu_free (window->display->window_menu);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]