Replace a "hidden" (not really, but shown far off screen) frame with a dialog
to avoid this frame appearing in the Alt+TAB list.
Closes #13251.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72667
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
focus/activation entirely when the child process terminates which would
happen if we simply disabled everything using wxWindowDisabler. Indeed,
remember that Windows will never activate a disabled window and when the
focus/activation entirely when the child process terminates which would
happen if we simply disabled everything using wxWindowDisabler. Indeed,
remember that Windows will never activate a disabled window and when the
- last childs window is closed and Windows looks for a window to activate
+ last child's window is closed and Windows looks for a window to activate
all our windows are still disabled. There is no way to enable them in
all our windows are still disabled. There is no way to enable them in
- time because we don't know when the childs windows are going to be
- closed, so the solution we use here is to keep one special tiny frame
+ time because we don't know when the child's windows are going to be
+ closed, so the solution we use here is to keep one special tiny dialog
enabled all the time. Then when the child terminates it will get
enabled all the time. Then when the child terminates it will get
- activated and when we close it below -- after reenabling all the other
+ activated and when we close it below -- after re-enabling all the other
windows! -- the previously active window becomes activated again and
everything is ok.
*/
windows! -- the previously active window becomes activated again and
everything is ok.
*/
// first disable all existing windows
wxWindowDisabler *wd = new wxWindowDisabler;
// first disable all existing windows
wxWindowDisabler *wd = new wxWindowDisabler;
- // then create an "invisible" frame: it has minimal size, is positioned
- // (hopefully) outside the screen and doesn't appear on the taskbar
- wxWindow *winActive = new wxFrame
+ // then create an "invisible" dialog: it has minimal size, is positioned
+ // (hopefully) outside the screen and doesn't appear in the Alt-TAB list
+ // (unlike the frames, which is why we use a dialog here)
+ wxWindow *winActive = new wxDialog
(
wxTheApp->GetTopWindow(),
wxID_ANY,
wxEmptyString,
wxPoint(32600, 32600),
(
wxTheApp->GetTopWindow(),
wxID_ANY,
wxEmptyString,
wxPoint(32600, 32600),
- wxSize(1, 1),
- wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR
- // finally delete the dummy frame and, as wd has been already destroyed and
- // the other windows reenabled, the activation is going to return to the
- // window which had had it before
+ // finally delete the dummy dialog and, as wd has been already destroyed
+ // and the other windows reenabled, the activation is going to return to
+ // the window which had had it before
data->winActive->Destroy();
// also delete the temporary data object itself
data->winActive->Destroy();
// also delete the temporary data object itself