make ESC pause the game now instead of quitting plus fix another bug with key and window handling

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5035 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
luisr142004
2010-02-09 00:34:27 +00:00
parent e93e777ffb
commit c291a2db67
7 changed files with 29 additions and 10 deletions

View File

@ -145,6 +145,11 @@ CPanel::CPanel(
case WM_USER:
switch(wParam)
{
// Pause
case WM_USER_PAUSE:
main_frame->DoPause();
break;
// Stop
case WM_USER_STOP:
main_frame->DoStop();
@ -739,7 +744,7 @@ void CFrame::OnKeyDown(wxKeyEvent& event)
}
else if(event.GetKeyCode() == WXK_ESCAPE)
{
main_frame->DoStop();
main_frame->DoPause();
}
// event.Skip() allows the event to propagate to the gamelist for example
else if (! (Core::GetState() == Core::CORE_RUN && bRenderToMain && event.GetEventObject() == this))
@ -932,8 +937,8 @@ void CFrame::DoFullscreen(bool bF)
#ifdef _WIN32
else // Post the message to the separate rendering window which will then handle it.
{
PostMessage((HWND)Core::GetWindowHandle(), WM_USER, TOGGLE_FULLSCREEN, 0);
BringWindowToTop((HWND)Core::GetWindowHandle());
PostMessage((HWND)Core::GetWindowHandle(), WM_USER, TOGGLE_FULLSCREEN, 0);
}
#endif
}

View File

@ -74,6 +74,7 @@ class CFrame : public wxFrame
wxMenuBar* m_MenuBar;
wxBitmap aNormalFile;
void InitBitmaps();
void DoPause();
void DoStop();
bool bRenderToMain;
bool bNoWiimoteMsg;

View File

@ -144,6 +144,7 @@ void CFrame::CreateMenu()
m_pSubMenuFrameSkipping = emulationMenu->AppendSubMenu(skippingMenu, _T("Frame S&kipping"));
for(int i = 0; i < 10; i++)
skippingMenu->Append(IDM_FRAMESKIP0 + i, wxString::Format(_T("%i"), i), wxEmptyString, wxITEM_RADIO);
skippingMenu->Check(IDM_FRAMESKIP0 + SConfig::GetInstance().m_FrameSkip, true);
emulationMenu->AppendSeparator();
emulationMenu->Append(IDM_SCREENSHOT, _T("Take S&creenshot\tF9"));
@ -688,6 +689,13 @@ void CFrame::OnScreenshot(wxCommandEvent& WXUNUSED (event))
Core::ScreenShot();
}
// Pause the emulation
void CFrame::DoPause()
{
Core::SetState(Core::CORE_PAUSE);
UpdateGUI();
}
// Stop the emulation
void CFrame::DoStop()
{