diff options
author | Elijah Newren <newren@gmail.com> | 2005-01-28 14:48:47 +0000 |
---|---|---|
committer | Elijah Newren <newren@src.gnome.org> | 2005-01-28 14:48:47 +0000 |
commit | 5389f135ce94f2cf41309ef124e3d9a8d46448a8 (patch) | |
tree | 6bb5d35ebeaafff46f9d61439c5b3b08dda5b5ae | |
parent | 1e580d1e5263c7cc76e00ecfb6916a0973138e93 (diff) | |
download | metacity-5389f135ce94f2cf41309ef124e3d9a8d46448a8.tar.gz |
Take into account the appropriate list of windows when placing a new one.
2005-01-28 Elijah Newren <newren@gmail.com>
Take into account the appropriate list of windows when placing a
new one. Fixes #165381.
* src/place.c: (meta_window_place): use
meta_window_showing_on_its_workspace(w) instead of !w->minimzed,
also take into account sticky windows
* src/window.[ch]: rename window_showing_on_its_workspace to
meta_window_showing_on_its_workspace and export it
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | src/place.c | 5 | ||||
-rw-r--r-- | src/window.c | 10 | ||||
-rw-r--r-- | src/window.h | 3 |
4 files changed, 22 insertions, 8 deletions
@@ -1,3 +1,15 @@ +2005-01-28 Elijah Newren <newren@gmail.com> + + Take into account the appropriate list of windows when placing a + new one. Fixes #165381. + + * src/place.c: (meta_window_place): use + meta_window_showing_on_its_workspace(w) instead of !w->minimzed, + also take into account sticky windows + + * src/window.[ch]: rename window_showing_on_its_workspace to + meta_window_showing_on_its_workspace and export it + 2005-01-27 Elijah Newren <newren@gmail.com> Plug a pair of leaks. Fixes #165378 diff --git a/src/place.c b/src/place.c index 0da7c133..e6f67a6f 100644 --- a/src/place.c +++ b/src/place.c @@ -748,9 +748,10 @@ meta_window_place (MetaWindow *window, { MetaWindow *w = tmp->data; - if (!w->minimized && + if (meta_window_showing_on_its_workspace (w) && w != window && - window->workspace == w->workspace) + (window->workspace == w->workspace || + window->on_all_workspaces || w->on_all_workspaces)) windows = g_list_prepend (windows, w); tmp = tmp->next; diff --git a/src/window.c b/src/window.c index 5eabbceb..fb40f66e 100644 --- a/src/window.c +++ b/src/window.c @@ -94,8 +94,6 @@ static void ensure_mru_position_after (MetaWindow *window, void meta_window_move_resize_now (MetaWindow *window); -static gboolean window_showing_on_its_workspace (MetaWindow *window); - /* FIXME we need an abstraction that covers all these queues. */ void meta_window_unqueue_calc_showing (MetaWindow *window); @@ -1131,7 +1129,7 @@ set_net_wm_state (MetaWindow *window) data[i] = window->display->atom_net_wm_state_fullscreen; ++i; } - if (!window_showing_on_its_workspace (window) || window->shaded) + if (!meta_window_showing_on_its_workspace (window) || window->shaded) { data[i] = window->display->atom_net_wm_state_hidden; ++i; @@ -1195,8 +1193,8 @@ ancestor_is_minimized (MetaWindow *window) return is_minimized; } -static gboolean -window_showing_on_its_workspace (MetaWindow *window) +gboolean +meta_window_showing_on_its_workspace (MetaWindow *window) { gboolean showing; gboolean is_desktop_or_dock; @@ -1280,7 +1278,7 @@ meta_window_should_be_showing (MetaWindow *window) if (window->on_all_workspaces) meta_verbose ("Window %s is on all workspaces\n", window->desc); - return on_workspace && window_showing_on_its_workspace (window); + return on_workspace && meta_window_showing_on_its_workspace (window); } static void diff --git a/src/window.h b/src/window.h index 1d5ca2f2..b116bdbe 100644 --- a/src/window.h +++ b/src/window.h @@ -388,6 +388,9 @@ void meta_window_resize_with_gravity (MetaWindow *window, void meta_window_fill_horizontal (MetaWindow *window); void meta_window_fill_vertical (MetaWindow *window); +/* Return whether the window would be showing if we were on its workspace */ +gboolean meta_window_showing_on_its_workspace (MetaWindow *window); + /* Return whether the window should be currently mapped */ gboolean meta_window_should_be_showing (MetaWindow *window); |