diff options
author | Elijah Newren <newren gmail com> | 2006-02-27 22:17:58 +0000 |
---|---|---|
committer | Elijah Newren <newren@src.gnome.org> | 2006-02-27 22:17:58 +0000 |
commit | 3a484f1069572d8c424b20fc7177caad5cc6d196 (patch) | |
tree | c15117096e367890a02748efdedc8d8574be96e5 | |
parent | c6e1649e6c300ae677e5ab491ee3f651e6e560f7 (diff) | |
download | metacity-3a484f1069572d8c424b20fc7177caad5cc6d196.tar.gz |
Patch from Thomas Thurman to work around buggy application grouping with
2006-02-27 Elijah Newren <newren gmail com>
Patch from Thomas Thurman to work around buggy application
grouping with transient windows. #328211
* src/group.c (meta_window_compute_group):
Put transients in the same group with their parent, always.
* src/window.c (update_transient_for):
Update group too
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/group.c | 10 | ||||
-rw-r--r-- | src/window.c | 9 |
3 files changed, 28 insertions, 2 deletions
@@ -1,5 +1,16 @@ 2006-02-27 Elijah Newren <newren gmail com> + Patch from Thomas Thurman to work around buggy application + grouping with transient windows. #328211 + + * src/group.c (meta_window_compute_group): + Put transients in the same group with their parent, always. + + * src/window.c (update_transient_for): + Update group too + +2006-02-27 Elijah Newren <newren gmail com> + * configure.in: Patch from Sylvain Bertrand to fix build issues with library search order. #330695. diff --git a/src/group.c b/src/group.c index 2d8d69c8..8f79ad5f 100644 --- a/src/group.c +++ b/src/group.c @@ -123,7 +123,10 @@ meta_window_compute_group (MetaWindow* window) if (window->display->groups_by_leader) { - if (window->xgroup_leader != None) + if (window->xtransient_for != None) + group = g_hash_table_lookup (window->display->groups_by_leader, + &window->xtransient_for); + else if (window->xgroup_leader != None) group = g_hash_table_lookup (window->display->groups_by_leader, &window->xgroup_leader); else @@ -138,7 +141,10 @@ meta_window_compute_group (MetaWindow* window) } else { - if (window->xgroup_leader != None) + if (window->xtransient_for != None) + group = meta_group_new (window->display, + window->xtransient_for); + else if (window->xgroup_leader != None) group = meta_group_new (window->display, window->xgroup_leader); else diff --git a/src/window.c b/src/window.c index 8c12bd40..5f817804 100644 --- a/src/window.c +++ b/src/window.c @@ -5468,6 +5468,15 @@ update_transient_for (MetaWindow *window) /* update stacking constraints */ meta_stack_update_transient (window->screen->stack, window); + + /* possibly change its group. We treat being a window's transient as + * equivalent to making it your group leader, to work around shortcomings + * in programs such as xmms-- see #328211. + */ + if (window->xtransient_for != None && + window->xgroup_leader != None && + window->xtransient_for != window->xgroup_leader) + meta_window_group_leader_changed (window); } static void |