This patch makes the “Render” window a top-level window, not a child of
the main window, which was the case in blender versions prior to 2.93.
This means it is no longer “on top”, nor is the icon grouped on the
taskbar in the same way, but you can Alt-Tab between it and the main
window. This change only affects the Windows platform as the other
platforms behave this way.
There were a lot of changes to how windows are created / saved / loaded / etc on the Windows platform for 2.93. The only substantial negative feedback is to do with the “Render” window – the separate window created when your preferences are set to render in “New Window”.
One change in 2.93 (for the Windows platform) was that most windows are created with their parent window set as owner. This means that the window remains “on top” of the parent, is grouped with the parent on the taskbar, and is minimized if the parent is minimized. These new behaviors are all in response to many bug reports. Users complained of losing child windows when they clicked on the parent. Users complained that “duplicate area into new window” did not result in a window that stayed on top. Users who worked with large numbers of windows spread of many monitors complained that they could not minimize all children by minimizing the parent.
But the Render window these things aren’t really necessary. And users have gotten used to using Alt-Tab to quickly switch between Render and main window.
This could be fixed with a very simple change to a single line of WM_window_open() in wm_window.c:
/* add new window? */
if (win == NULL) {
- win = wm_window_new(bmain, wm, win_prev, dialog);
+ /* Render window should be top-level, not owned. */
+ wmWindow *parent = (space_type == SPACE_IMAGE) ? NULL : win_prev;
+ win = wm_window_new(bmain, wm, parent, dialog);
...Instead this patch implements a new option for WM_window_open() to create a “toplevel” window, one that is peer with the parent. The lower-level functions, like wm_window_new() already have this ability, but this is the first time we need to do this with WM_window_open() so might make sense to add a new option.
Note that although these (simple) changes are not platform-specific the only result is a change of behavior on Windows. This is because we allow the Ghost functions to deviate by platform so this that windows already behave like this on Mac and Linux. So they won’t change.
Some negative feedback that prompts this change: