Open ninavizz opened 2 years ago
I agree it's worth at least a first timeboxed investigation (in a future sprint) for us all to be able to better understand and reason about the interaction between GUI toolkit, window manager, and OS. This is important as we add more flyouts, custom tooltips, etc
My current understanding is this:
Qubes adds colored decoration to anything that's (on a technical level) a separate window. That's anything that can extend beyond the boundaries of the window you're in. Note, for example, in Slack, none of the menus can ever extend beyond the window boundary. Slack is pretty smart about scaling menus down as needed - making them even internally scrollable. But: Even Slack's context menu (right-click) and pull-down menu have the color decoration in Qubes.
If you experiment in other apps in Qubes, you'll notice the decoration around pull-down menus, context menus, etc. It doesn't matter whether they're built with Qt, GTK, or something else. There are some exceptions -- try opening gedit
, for example, and you'll notice that its menus don't have the Qubes decoration. They also cannot extend beyond the window boundary (they just get cut off).
In other words, I think we'll want to find out if there are good ways to render widgets on top of other widgets in a manner that's not technically a separate window -- but we will then also have to make sure that they're not cut off. This could be the kind of problem it could be useful to collaborate with Felgo on, once we've done our own investigation.
Problem
Traditionally, "overlays" in client apps are not dialogs—rather, they provide they're modal UIs that provide the visual illusion of sitting atop the regular client chrome, yet they're just high z-axis dealie-os (when the designer tries to get technical—bear with me, heh). QT has z-axis/layering issues... which may be the version of QT we're limited to by PyQT, or is also an issue on the latest version of QT more plausible to work with after updating the packaging wrapper. (I think is how Allie explained it—will just stop and bat my eyelashes and smile and be charming at this point).
Solution
Learning spike to learn how to mimic visual "layering" of UI panels atop other UI objects in QT. Why? When a thing does not need to be moved, and is not desirable to have a Qubes-rendered outline around it (as all menus have, today), it would be preferred to more elegantly be able to mimic overlays as Slack does, below.
Specifically, the on-hover fly-outs for the Journalist Badge, the Logged In User's badge, and the Seen By bubbles invokable in this prototype.