mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
+ fix: bug detecting find/replace dialog is foreground or not
This commit is contained in:
parent
0de9498401
commit
f40d06a8a0
23
src/Edit.c
23
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) {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user