Correct, I agree so far.
If
you take an existing desktop window and make it the child of
another window, the window will s[t]ill remain a desktop window.
I doubt that this statement is true in general. IMHO hide()ing the
subwindow, removing it from the group, and subsequently show()ing it
should make the window a normal desktop window. Therefore I
wrote a test program to verify whether this is the case, and I found
some platform specific issues (still work in progress). I'll open an
issue (probably tomorrow) with more details, but for now in a
nutshell:
1. "Converting" a desktop window to a subwindow using hide(),
Fl_Group::add(), and then show() works flawlessly on all supported
platforms.
2. The opposite, i.e. removing a subwindow from an existing
Fl_Window (Fl_Group) and then hide()ing and show()ing it - which
should IMHO make it a standalone "desktop" window - doesn't work as
expected (by me) on some platforms:
2a) Linux (X11) and Windows (tested only under Linux with Wine so
far) both work well: the window gets normal window decorations.
2b) Linux (Wayland) and macOS: the new "desktop" window is
borderless (no decorations) and can't be moved. This is likely
caused by some internal stuff that's not reset as it should be, but
that's only a guess.