From cfbd181ff9474ee6ebff0ac748a56b5e5e940d8b Mon Sep 17 00:00:00 2001 From: zilmar Date: Fri, 2 Mar 2018 17:34:27 +1100 Subject: [PATCH] [Debugger] Do not update register if have not finished attaching --- .../Debugger/Debugger-RegisterTabs.cpp | 61 +++++++++---------- .../Debugger/Debugger-RegisterTabs.h | 1 + 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.cpp b/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.cpp index fbe2ad5a0..c344021aa 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.cpp @@ -16,7 +16,8 @@ bool CRegisterTabs::m_bColorsEnabled = false; -CRegisterTabs::CRegisterTabs() +CRegisterTabs::CRegisterTabs() : + m_attached(false) { } @@ -76,10 +77,12 @@ void CRegisterTabs::Attach(HWND hWndNew) SetColorsEnabled(false); RefreshEdits(); RedrawCurrentTab(); + m_attached = true; } HWND CRegisterTabs::Detach(void) { + m_attached = false; m_GPRTab = NULL; m_FPRTab = NULL; m_COP0Tab = NULL; @@ -447,22 +450,20 @@ void CRegisterTabs::RegisterChanged(HWND hDlg, TAB_ID srcTabId, WPARAM wParam) } } -INT_PTR CALLBACK CRegisterTabs::TabProcDefault(HWND hDlg, UINT msg, WPARAM wParam, LPARAM /*lParam*/) +INT_PTR CALLBACK CRegisterTabs::TabProcDefault(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_INITDIALOG) { + SetProp(hDlg, "attached", (HANDLE)lParam); return TRUE; } - if (msg != WM_COMMAND) + if (msg == WM_COMMAND && HIWORD(wParam) == EN_KILLFOCUS) { - return FALSE; - } - - WORD notification = HIWORD(wParam); - - if (notification == EN_KILLFOCUS) - { - RegisterChanged(hDlg, TabDefault, wParam); + bool * attached = (bool *)GetProp(hDlg, "attached"); + if (attached != NULL && *attached) + { + RegisterChanged(hDlg, TabDefault, wParam); + } } return FALSE; @@ -472,6 +473,7 @@ INT_PTR CALLBACK CRegisterTabs::TabProcGPR(HWND hDlg, UINT msg, WPARAM wParam, L { if (msg == WM_INITDIALOG) { + SetProp(hDlg, "attached", (HANDLE)lParam); return TRUE; } @@ -533,39 +535,32 @@ INT_PTR CALLBACK CRegisterTabs::TabProcGPR(HWND hDlg, UINT msg, WPARAM wParam, L return (LRESULT)GetStockObject(DC_BRUSH); } - if (msg != WM_COMMAND) + if (msg == WM_COMMAND && HIWORD(wParam) == EN_KILLFOCUS) { - return FALSE; + bool * attached = (bool *)GetProp(hDlg, "attached"); + if (attached != NULL && *attached) + { + RegisterChanged(hDlg, TabGPR, wParam); + } } - - WORD notification = HIWORD(wParam); - - if (notification == EN_KILLFOCUS) - { - RegisterChanged(hDlg, TabGPR, wParam); - } - return FALSE; } -INT_PTR CALLBACK CRegisterTabs::TabProcFPR(HWND hDlg, UINT msg, WPARAM wParam, LPARAM /*lParam*/) +INT_PTR CALLBACK CRegisterTabs::TabProcFPR(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_INITDIALOG) { + SetProp(hDlg, "attached", (HANDLE)lParam); return TRUE; } - if (msg != WM_COMMAND) + if (msg == WM_COMMAND && HIWORD(wParam) == EN_KILLFOCUS) { - return FALSE; + bool * attached = (bool *)GetProp(hDlg, "attached"); + if (attached != NULL && *attached) + { + RegisterChanged(hDlg, TabFPR, wParam); + } } - - WORD notification = HIWORD(wParam); - - if (notification == EN_KILLFOCUS) - { - RegisterChanged(hDlg, TabFPR, wParam); - } - return FALSE; } @@ -584,7 +579,7 @@ CWindow CRegisterTabs::AddTab(char* caption, int dialogId, DLGPROC dlgProc) AddItem(caption); CWindow parentWin = GetParent(); - CWindow tabWin = ::CreateDialog(NULL, MAKEINTRESOURCE(dialogId), parentWin, dlgProc); + CWindow tabWin = ::CreateDialogParam(NULL, MAKEINTRESOURCE(dialogId), parentWin, dlgProc, (LPARAM)&m_attached); CRect pageRect = GetPageRect(); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.h b/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.h index 3370119eb..562f9e156 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-RegisterTabs.h @@ -242,6 +242,7 @@ private: static bool m_bColorsEnabled; vector m_TabWindows; + bool m_attached; CWindow m_GPRTab; CEditReg64 m_GPREdits[sizeof(GPREditIds) / sizeof(GPREditIds[0])];