diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index c118533625..26e825b2f5 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -191,6 +191,25 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa } #endif +bool CRenderFrame::ShowFullScreen(bool show, long style) +{ + if (show) + { + // OpenGL requires the pop-up style to activate exclusive mode. + SetWindowStyle((GetWindowStyle() & ~wxDEFAULT_FRAME_STYLE) | wxPOPUP_WINDOW); + } + + bool result = wxTopLevelWindow::ShowFullScreen(show, style); + + if (!show) + { + // Restore the default style. + SetWindowStyle((GetWindowStyle() & ~wxPOPUP_WINDOW) | wxDEFAULT_FRAME_STYLE); + } + + return result; +} + // event tables // Notice that wxID_HELP will be processed for the 'About' menu and the toolbar // help button. diff --git a/Source/Core/DolphinWX/Frame.h b/Source/Core/DolphinWX/Frame.h index f8c5cfbb42..d54f1e54e0 100644 --- a/Source/Core/DolphinWX/Frame.h +++ b/Source/Core/DolphinWX/Frame.h @@ -58,6 +58,8 @@ class CRenderFrame : public wxFrame const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); + bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL) override; + private: void OnDropFiles(wxDropFilesEvent& event); static bool IsValidSavestateDropped(const std::string& filepath); diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index 766c1bd48d..1deb91a857 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -1072,6 +1072,9 @@ void CFrame::DoStop() // Ask for confirmation in case the user accidentally clicked Stop / Escape if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop) { + // Exit fullscreen to ensure it does not cover the stop dialog. + DoFullscreen(false); + // Pause the state during confirmation and restore it afterwards Core::EState state = Core::GetState(); @@ -1082,10 +1085,6 @@ void CFrame::DoStop() { Core::SetState(Core::CORE_PAUSE); } - else - { - DoFullscreen(false); - } wxMessageDialog m_StopDlg( this,