From 8addebd19577560cb78556db5a3d1c8a4edf5be9 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Tue, 25 May 2010 21:53:07 +0800 Subject: [PATCH] Fixed issue #444: Crash rebase dialog when press ESC and move split bar Signed-off-by: Frank Li --- src/TortoiseProc/RebaseDlg.cpp | 17 +++++++++++++++++ src/TortoiseProc/SyncDlg.cpp | 17 ++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/TortoiseProc/RebaseDlg.cpp b/src/TortoiseProc/RebaseDlg.cpp index 07d03f7a2..60f02208f 100644 --- a/src/TortoiseProc/RebaseDlg.cpp +++ b/src/TortoiseProc/RebaseDlg.cpp @@ -572,6 +572,23 @@ BOOL CRebaseDlg::PreTranslateMessage(MSG*pMsg) return TRUE; } break; + /* Avoid TAB control destroy but dialog exist*/ + case VK_ESCAPE: + case VK_CANCEL: + { + TCHAR buff[128]; + ::GetClassName(pMsg->hwnd,buff,128); + + + if(_tcsnicmp(buff,_T("RichEdit20W"),128)==0 || + _tcsnicmp(buff,_T("Scintilla"),128)==0 || + _tcsnicmp(buff,_T("SysListView32"),128)==0|| + ::GetParent(pMsg->hwnd) == this->m_ctrlTabCtrl.m_hWnd) + { + this->PostMessage(WM_KEYDOWN,VK_ESCAPE,0); + return TRUE; + } + } } } m_tooltips.RelayEvent(pMsg); diff --git a/src/TortoiseProc/SyncDlg.cpp b/src/TortoiseProc/SyncDlg.cpp index caeb1c349..1d8337dfb 100644 --- a/src/TortoiseProc/SyncDlg.cpp +++ b/src/TortoiseProc/SyncDlg.cpp @@ -762,6 +762,7 @@ void CSyncDlg::Refresh() BOOL CSyncDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class + if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) @@ -773,7 +774,21 @@ BOOL CSyncDlg::PreTranslateMessage(MSG* pMsg) return CResizableStandAloneDialog::PreTranslateMessage(pMsg); Refresh(); } - break; + break; + + /* Avoid TAB control destroy but dialog exist*/ + case VK_ESCAPE: + case VK_CANCEL: + { + TCHAR buff[128]; + ::GetClassName(pMsg->hwnd,buff,128); + + if(_tcsnicmp(buff,_T("RichEdit20W"),128)==0) + { + this->PostMessage(WM_KEYDOWN,VK_ESCAPE,0); + return TRUE; + } + } } } m_tooltips.RelayEvent(pMsg); -- 2.11.4.GIT