From c4e31c396e11974a084092ce053ee7e32fed127a Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Tue, 5 Sep 2017 18:41:54 +0200 Subject: [PATCH] - remove FindReplaceDlg handle declared as external from compilation unit Edit.c - not really needed here. (externals (handles / pointers) seemed to be a problem on module init instance time in 64-bit ?) --- src/Edit.c | 22 ++++++++++------------ src/Notepad3.c | 48 +++++++++++++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index 2e68a4745..6382b731f 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -51,7 +51,6 @@ extern HWND hwndEdit; extern HINSTANCE g_hInstance; //extern LPMALLOC g_lpMalloc; extern DWORD dwLastIOError; -extern HWND hDlgFindReplace; extern UINT cpLastFind; extern BOOL bReplaceInitialized; @@ -5422,16 +5421,6 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA StringCchCopyA(lpefr->szReplaceUTF8,COUNTOF(lpefr->szReplaceUTF8),""); } - if (bIsFindDlg) { - bCloseDlg = lpefr->bFindClose; - } - else { - if (LOWORD(wParam) == IDOK) - bCloseDlg = FALSE; - else - bCloseDlg = lpefr->bReplaceClose; - } - // Reload MRUs SendDlgItemMessage(hwnd,IDC_FINDTEXT,CB_RESETCONTENT,0,0); SendDlgItemMessage(hwnd,IDC_REPLACETEXT,CB_RESETCONTENT,0,0); @@ -5451,10 +5440,19 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA if (!bSwitchedFindReplace) SendMessage(hwnd,WM_NEXTDLGCTL,(WPARAM)(GetFocus()),1); + if (bIsFindDlg) { + bCloseDlg = lpefr->bFindClose; + } + else { + if (LOWORD(wParam) == IDOK) + bCloseDlg = FALSE; + else + bCloseDlg = lpefr->bReplaceClose; + } + if (bCloseDlg) { //EndDialog(hwnd,LOWORD(wParam)); DestroyWindow(hwnd); - hDlgFindReplace = NULL; } switch (LOWORD(wParam)) diff --git a/src/Notepad3.c b/src/Notepad3.c index 89ccdc76d..7b14ca90a 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -713,7 +713,7 @@ int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,int n while (GetMessage(&msg,NULL,0,0)) { if (IsWindow(hDlgFindReplace) && (msg.hwnd == hDlgFindReplace || IsChild(hDlgFindReplace,msg.hwnd))) - if (TranslateAccelerator(hDlgFindReplace,hAccFindReplace,&msg) || IsDialogMessage(hDlgFindReplace,&msg)) + if (IsDialogMessage(hDlgFindReplace,&msg) || TranslateAccelerator(hDlgFindReplace,hAccFindReplace,&msg)) continue; if (!TranslateAccelerator(hwnd,hAccMain,&msg)) { @@ -1477,6 +1477,15 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) return MsgNotify(hwnd,wParam,lParam); + //case WM_PARENTNOTIFY: + // if (LOWORD(wParam) & WM_DESTROY) { + // if (IsWindow(hDlgFindReplace) && (hDlgFindReplace == (HWND)lParam)) { + // hDlgFindReplace = NULL; + // } + // } + // break; + + case WM_COMMAND: return MsgCommand(hwnd,wParam,lParam); @@ -3827,8 +3836,26 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) } break; + + case IDM_EDIT_REPLACE: + if (!IsWindow(hDlgFindReplace)) + hDlgFindReplace = EditFindReplaceDlg(hwndEdit,&efrData,TRUE); + else { + if (!GetDlgItem(hDlgFindReplace,IDC_REPLACE)) { + SendMessage(hDlgFindReplace,WM_COMMAND,MAKELONG(IDMSG_SWITCHTOREPLACE,1),0); + DestroyWindow(hDlgFindReplace); + hDlgFindReplace = EditFindReplaceDlg(hwndEdit,&efrData,TRUE); + } + else { + SetForegroundWindow(hDlgFindReplace); + PostMessage(hDlgFindReplace,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(hDlgFindReplace,IDC_FINDTEXT)),1); + } + } + break; + + // Main Bookmark Functions - case BME_EDIT_BOOKMARKNEXT: + case BME_EDIT_BOOKMARKNEXT: { int iPos = (int)SendMessage( hwndEdit , SCI_GETCURRENTPOS , 0 , 0); int iLine = (int)SendMessage( hwndEdit , SCI_LINEFROMPOSITION , iPos , 0 ); @@ -3983,23 +4010,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) break; - case IDM_EDIT_REPLACE: - if (!IsWindow(hDlgFindReplace)) - hDlgFindReplace = EditFindReplaceDlg(hwndEdit,&efrData,TRUE); - else { - if (!GetDlgItem(hDlgFindReplace,IDC_REPLACE)) { - SendMessage(hDlgFindReplace,WM_COMMAND,MAKELONG(IDMSG_SWITCHTOREPLACE,1),0); - DestroyWindow(hDlgFindReplace); - hDlgFindReplace = EditFindReplaceDlg(hwndEdit,&efrData,TRUE); - } - else { - SetForegroundWindow(hDlgFindReplace); - PostMessage(hDlgFindReplace,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(hDlgFindReplace,IDC_FINDTEXT)),1); - } - } - break; - - case IDM_EDIT_GOTOLINE: EditLinenumDlg(hwndEdit); break;