Tries to makeMakes temporary windows behave as follows:
* Always on top of its parent Blender window, but not on top of
non-Blender windows.
* Minimize with its parent window
* Can be moved independently
* Doesn't block other Blender windows (we may want to have this though)
* Open as floating window for tiling window managers (e.g. i3wm/Sway)
As this introduces a new kind of temporary window we have to take care
they don't conflict with each other. E.g. a Preferences window should not
become a dialog file browser window, and vice versa. I made it so that a
new window is opened if we try to open a dialog in a regular temporary
window, or the other way around.
This has the nice side effect that the file browser doesn't steal the
preferences window anymore, which was planned to be fixed anyway (see
T69652)
There are some differences between Windows and Linux (can't tell for
macOS), I'd like to have them as similar as possible though. Some more
things to note:
* Temporary windows don't stay on top of all Blender windows, only on
top of its parent window (the one it was created in).
* On Linux the temporary windows don't allow minimizing and maximizing.* When opening a file browser from the Preference window (or any
GTK and Qt have the same issue (if we consider it one).
* I didn't find a way to disable minimizing and maximizing popuptemporary window), the main window, as the file browsers parent is
windows on Windows.moved on top of the Preferences, Minimizing behaves a bit weird in that itwhich makes it seem like it was
minimizes within the main windowclosed. {F7750790}This is the general issue of bad secondary window handling as
* I didn't implement reparenting, so that e.g window activation changes. when the file browser isI made it so that the window is moved
invoked from a differentback once the file browser is closed.
* On Linux the temporary window, the browser stays on top of thats don't allow minimizing and maximizing.
instead.GTK and Qt have the same issue (if we consider it one).
* I disabled minimizing on Windows, otherwise minimizing does this: {F7750790}
* I left in some code for embedded child windows, but we don't use it
(was for game engine). I'd suggest getting rid of it first
(GHOST_TEmbedderWindowID).
The macOS implementation is just a wild guess from looking at the docs
(which aren't too helpful really), it'll probably have to be implemented
differentlyNot sure how ready the macOS implementation is (or if it works at all).