Merge pull request #726 from Armada651/ogl-exclusive

CFrame: Add fullscreen window styles to enable exclusive mode in OpenGL.
This commit is contained in:
shuffle2 2014-08-12 14:55:18 -07:00
commit 7b9c8da468
3 changed files with 24 additions and 4 deletions

View File

@ -191,6 +191,25 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa
} }
#endif #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 // event tables
// Notice that wxID_HELP will be processed for the 'About' menu and the toolbar // Notice that wxID_HELP will be processed for the 'About' menu and the toolbar
// help button. // help button.

View File

@ -58,6 +58,8 @@ class CRenderFrame : public wxFrame
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); long style = wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE);
bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL) override;
private: private:
void OnDropFiles(wxDropFilesEvent& event); void OnDropFiles(wxDropFilesEvent& event);
static bool IsValidSavestateDropped(const std::string& filepath); static bool IsValidSavestateDropped(const std::string& filepath);

View File

@ -1072,6 +1072,9 @@ void CFrame::DoStop()
// Ask for confirmation in case the user accidentally clicked Stop / Escape // Ask for confirmation in case the user accidentally clicked Stop / Escape
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop) 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 // Pause the state during confirmation and restore it afterwards
Core::EState state = Core::GetState(); Core::EState state = Core::GetState();
@ -1082,10 +1085,6 @@ void CFrame::DoStop()
{ {
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
} }
else
{
DoFullscreen(false);
}
wxMessageDialog m_StopDlg( wxMessageDialog m_StopDlg(
this, this,