GNOME Bugzilla – Bug 166894
Have meta_window_raise raise ancestor instead of window
Last modified: 2005-02-12 07:34:48 UTC
Background: When we raise a window, due to stacking constraints, all its transients get raised as well. When we click on a task in the tasklist, if that window has a transient then the transient gets focus. If a window has a modal transient, then trying to focus the window will instead focus the modal transient. In other words, we've done a lot of work to que the user that a window and its transients are related. Jarring behavior: Imagine this situtation: Two apps, A & B, with windows mA, tA and mB (main window of A, transient of mA, main window of B), stacked in that order with the bottom windows mostly obscured. User clicks on tA to work with application A. tA is raised but mA is still mostly hidden. The user thinks of tA and mA as the same app, and for many dialogs the user will want to see the main app as they work with the dialog. Considering the other changes we've made to make windows+transients act as a grouped entity, this feels very out of place. The patch to fix it is simple (due to our stacking constraints); I'll attach it in a minute.
Created attachment 37276 [details] [review] have meta_window_raise raise the root ancestor of the specified window
ping? (You've reviewed everything else, so I'm assuming you just missed this one...)
Comment on attachment 37276 [details] [review] have meta_window_raise raise the root ancestor of the specified window I think a rogue app could pretty easily trigger that assert right now; nothing stopping you from putting a window from another screen in TRANSIENT_FOR. So I'd suggest making it an if() or just removing it (the raise would be harmless then since the situation is crazy) Looks good to me otherwise
committed with changing to an if.