diff --git a/src/Edit.c b/src/Edit.c index 90370bd4f..b43424636 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -4807,7 +4807,6 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA else SetDlgPos(hwnd, xFindReplaceDlg, yFindReplaceDlg); } - else { SetDlgPos(hwnd, xFindReplaceDlgSave, yFindReplaceDlgSave); bSwitchedFindReplace = FALSE; @@ -4850,7 +4849,6 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA iReplacedOccurrences = 0; KillTimer(hwnd, IDT_TIMER_MRKALL); - bFindReplCopySelOrClip = TRUE; } return FALSE; @@ -4879,7 +4877,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA EditSetTimerMarkAll(hwnd,50); } //if (LOWORD(wParam) == WA_INACTIVE) { - // //bFindReplCopySelOrClip = TRUE; + // bFindReplCopySelOrClip = TRUE; //} } return FALSE; @@ -4894,7 +4892,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA case IDC_FINDTEXT: case IDC_REPLACETEXT: { - if (bFindReplCopySelOrClip) + if (bFindReplCopySelOrClip) { char *lpszSelection = NULL; @@ -4909,17 +4907,14 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA else if (cchSelection == 0) { // nothing is selected in the editor: // if first time you bring up find/replace dialog, copy content from clipboard to find box - if (bFindReplCopySelOrClip) - { - char* pClip = EditGetClipboardText(hwnd, FALSE, NULL, NULL); - if (pClip) { - int len = lstrlenA(pClip); - if (len > 0 && len < FNDRPL_BUFFER) { - lpszSelection = GlobalAlloc(GPTR, len + 1); - StringCchCopyNA(lpszSelection, len + 1, pClip, len); - } - LocalFree(pClip); + char* pClip = EditGetClipboardText(hwnd, FALSE, NULL, NULL); + if (pClip) { + int len = lstrlenA(pClip); + if (len > 0 && len < FNDRPL_BUFFER) { + lpszSelection = GlobalAlloc(GPTR, len + 1); + StringCchCopyNA(lpszSelection, len + 1, pClip, len); } + LocalFree(pClip); } } if (lpszSelection) { diff --git a/src/Notepad3.c b/src/Notepad3.c index 129ad0676..472b4c748 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -542,8 +542,6 @@ int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,int n UpdateLineNumberWidth(); ObserveNotifyChangeEvent(); - bFindReplCopySelOrClip = TRUE; - while (GetMessage(&msg,NULL,0,0)) { if (IsWindow(g_hwndDlgFindReplace) && ((msg.hwnd == g_hwndDlgFindReplace) || IsChild(g_hwndDlgFindReplace, msg.hwnd))) @@ -3667,11 +3665,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_FIND: - bFindReplCopySelOrClip = TRUE; if (!IsWindow(g_hwndDlgFindReplace)) { + bFindReplCopySelOrClip = TRUE; g_hwndDlgFindReplace = EditFindReplaceDlg(g_hwndEdit, &g_efrData, FALSE); } else { + bFindReplCopySelOrClip = (GetForegroundWindow() != g_hwndDlgFindReplace); if (GetDlgItem(g_hwndDlgFindReplace,IDC_REPLACE)) { SendMessage(g_hwndDlgFindReplace,WM_COMMAND,MAKELONG(IDMSG_SWITCHTOFIND,1),0); DestroyWindow(g_hwndDlgFindReplace); @@ -3687,10 +3686,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_REPLACE: - bFindReplCopySelOrClip = TRUE; - if (!IsWindow(g_hwndDlgFindReplace)) - g_hwndDlgFindReplace = EditFindReplaceDlg(g_hwndEdit,&g_efrData,TRUE); + if (!IsWindow(g_hwndDlgFindReplace)) { + bFindReplCopySelOrClip = TRUE; + g_hwndDlgFindReplace = EditFindReplaceDlg(g_hwndEdit, &g_efrData, TRUE); + } else { + bFindReplCopySelOrClip = (GetForegroundWindow() != g_hwndDlgFindReplace); if (!GetDlgItem(g_hwndDlgFindReplace,IDC_REPLACE)) { SendMessage(g_hwndDlgFindReplace,WM_COMMAND,MAKELONG(IDMSG_SWITCHTOREPLACE,1),0); DestroyWindow(g_hwndDlgFindReplace); @@ -3698,7 +3699,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) } else { SetForegroundWindow(g_hwndDlgFindReplace); - PostMessage(g_hwndDlgFindReplace,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(g_hwndDlgFindReplace,IDC_FINDTEXT)),1); + PostMessage(g_hwndDlgFindReplace,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(g_hwndDlgFindReplace, IDC_FINDTEXT)),1); } UpdateStatusbar(); }