GNOME Bugzilla – Bug 152283
When you stick a window on "all workspaces", stick its modal children, too
Last modified: 2005-01-26 23:25:19 UTC
Situation: Open Desktop Preferences -> Theme, click Theme Details, then Install Theme... -- this is a modal dialog (you can't interact with Theme Details as long as it's visible). Case 1: Before you click "Install Theme...", right-click Theme Details, and choose "Put on all Workspaces". Then click Install Theme..., and switch to another workspace. The modal dialog comes with you -- its parent was stuck, so it sticks, too. This is good. Case 2: Make sure Theme Details is only on one workspace. Click Install Theme..., then go back and right-click on Theme Details (the parent window), and "Put on all Workspaces". Now switch to another workspace. The Theme Details window came with you, but it's a vegetable because it has a modal dialog window that isn't on this workspace. This is bad. What I think should happen: if you put a window On All Workspaces, it should put any modal children of it on all workspaces, too. Right now, it does this if you make it sticky before the dialog shows; I'm suggesting it should do this after the dialog is shown, also. The invariant I'm trying to maintain is something like "If there's a window with a modal dialog, you shouldn't be able to see the window without the dialog". For example, you can't minimize a modal dialog. Bug 126489 is similar, but different, I think. That deals with one modal dialog of 2 windows on different workspaces; this deals with one modal dialog of 1 window that's stuck on all workspaces.
I really like your analogy to how things work with the case1/case2 behavior. Makes sense to me and your suggestion does sound like it would increase consistency of the desktop. However, you neglect some cases: (1) What about transients that aren't modal? If we stick modal transients, it would seem inconsistent to not stick transients that were not modal. So, I think we should stick all transients. (2) How about unsticking a window? It seems weird to stick transients when a parent is, but then to leave transient stuck when we unstick the parent. So, I think the same thing goes for unsticking a window. I will attach a patch to do all this momentarily. :)
Created attachment 36571 [details] [review] Stick/Unstick a window should cause the same operation to occur for transients
Comment on attachment 36571 [details] [review] Stick/Unstick a window should cause the same operation to occur for transients Seems sensible to me.
committed.