+ fix: bug detecting find/replace dialog is foreground or not

This commit is contained in:
Rainer Kottenhoff 2018-02-21 22:29:12 +01:00
parent 0de9498401
commit f40d06a8a0
2 changed files with 17 additions and 21 deletions

View File

@ -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) {

View File

@ -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();
}