Windows: Reduce focus juggling on game start.

Previously, we would activate the debugger (if enabled), and then
reactivate the main window.  This meant if you switched to something,
PPSSPP would demand focus once the game loaded.
This commit is contained in:
Unknown W. Brackets 2021-04-24 23:53:16 -07:00
parent 8d0ca1e4f1
commit 5f9dfeea86
5 changed files with 13 additions and 10 deletions

View file

@ -848,14 +848,14 @@ void CDisasm::SetDebugMode(bool _bDebug, bool switchPC)
} }
} }
void CDisasm::Show(bool bShow) { void CDisasm::Show(bool bShow, bool includeToTop) {
if (deferredSymbolFill_ && bShow) { if (deferredSymbolFill_ && bShow) {
if (g_symbolMap) { if (g_symbolMap) {
g_symbolMap->FillSymbolListBox(GetDlgItem(m_hDlg, IDC_FUNCTIONLIST), ST_FUNCTION); g_symbolMap->FillSymbolListBox(GetDlgItem(m_hDlg, IDC_FUNCTIONLIST), ST_FUNCTION);
deferredSymbolFill_ = false; deferredSymbolFill_ = false;
} }
} }
Dialog::Show(bShow); Dialog::Show(bShow, includeToTop);
} }
void CDisasm::NotifyMapLoaded() { void CDisasm::NotifyMapLoaded() {

View file

@ -49,7 +49,7 @@ public:
CDisasm(HINSTANCE _hInstance, HWND _hParent, DebugInterface *cpu); CDisasm(HINSTANCE _hInstance, HWND _hParent, DebugInterface *cpu);
~CDisasm(); ~CDisasm();
void Show(bool bShow) override; void Show(bool bShow, bool includeToTop = true) override;
void Update() override { void Update() override {
UpdateDialog(true); UpdateDialog(true);

View file

@ -540,7 +540,7 @@ namespace MainWindow
void CreateDebugWindows() { void CreateDebugWindows() {
disasmWindow = new CDisasm(MainWindow::GetHInstance(), MainWindow::GetHWND(), currentDebugMIPS); disasmWindow = new CDisasm(MainWindow::GetHInstance(), MainWindow::GetHWND(), currentDebugMIPS);
DialogManager::AddDlg(disasmWindow); DialogManager::AddDlg(disasmWindow);
disasmWindow->Show(g_Config.bShowDebuggerOnLoad); disasmWindow->Show(g_Config.bShowDebuggerOnLoad, false);
#if PPSSPP_API(ANY_GL) #if PPSSPP_API(ANY_GL)
geDebuggerWindow = new CGEDebugger(MainWindow::GetHInstance(), MainWindow::GetHWND()); geDebuggerWindow = new CGEDebugger(MainWindow::GetHInstance(), MainWindow::GetHWND());
@ -935,8 +935,6 @@ namespace MainWindow
if (disasmWindow) if (disasmWindow)
disasmWindow->UpdateDialog(); disasmWindow->UpdateDialog();
SetForegroundWindow(hwndMain);
break; break;
case WM_USER_SAVESTATE_FINISH: case WM_USER_SAVESTATE_FINISH:

View file

@ -30,11 +30,16 @@ void Dialog::Destroy()
DestroyWindow(m_hDlg); DestroyWindow(m_hDlg);
} }
void Dialog::Show(bool _bShow) void Dialog::Show(bool _bShow, bool includeToTop)
{ {
m_bShowState = _bShow ? SW_NORMAL : SW_HIDE; if (_bShow && includeToTop)
m_bShowState = SW_SHOWNORMAL;
else if (_bShow)
m_bShowState = SW_SHOWNOACTIVATE;
else
m_bShowState = SW_HIDE;
ShowWindow(m_hDlg, m_bShowState); ShowWindow(m_hDlg, m_bShowState);
if (_bShow) if (_bShow && includeToTop)
BringWindowToTop(m_hDlg); BringWindowToTop(m_hDlg);
} }

View file

@ -8,7 +8,7 @@ public:
Dialog(LPCSTR res, HINSTANCE _hInstance, HWND _hParent); Dialog(LPCSTR res, HINSTANCE _hInstance, HWND _hParent);
virtual ~Dialog(); virtual ~Dialog();
virtual void Show(bool _bShow); virtual void Show(bool _bShow, bool includeToTop = true);
virtual void Update() {} virtual void Update() {}
HWND GetDlgHandle() { HWND GetDlgHandle() {