Merge pull request #148 from RaiKoHoff/SwapTextFields_FindRepl

Swap text fields in Find/Replace dialog
This commit is contained in:
Derick Payne 2017-10-25 23:56:53 +02:00 committed by GitHub
commit 47a738da99
3 changed files with 31 additions and 13 deletions

View File

@ -4494,14 +4494,18 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
case IDC_FINDTEXT:
case IDC_REPLACETEXT:
{
BOOL bEnable = (GetWindowTextLengthW(GetDlgItem(hwnd,IDC_FINDTEXT)) ||
CB_ERR != SendDlgItemMessage(hwnd,IDC_FINDTEXT,CB_GETCURSEL,0,0));
BOOL bEnableF = (GetWindowTextLengthW(GetDlgItem(hwnd,IDC_FINDTEXT)) ||
CB_ERR != SendDlgItemMessage(hwnd,IDC_FINDTEXT,CB_GETCURSEL,0,0));
EnableWindow(GetDlgItem(hwnd,IDOK),bEnable);
EnableWindow(GetDlgItem(hwnd,IDC_FINDPREV),bEnable);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACE),bEnable);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEALL),bEnable);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEINSEL),bEnable);
BOOL bEnableR = (GetWindowTextLengthW(GetDlgItem(hwnd, IDC_REPLACETEXT)) ||
CB_ERR != SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_GETCURSEL, 0, 0));
EnableWindow(GetDlgItem(hwnd,IDOK),bEnableF);
EnableWindow(GetDlgItem(hwnd,IDC_FINDPREV),bEnableF);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACE),bEnableF);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEALL),bEnableF);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEINSEL),bEnableF);
EnableWindow(GetDlgItem(hwnd,IDC_SWAPSTRG),bEnableF || bEnableR);
if (HIWORD(wParam) == CBN_CLOSEUP) {
LONG lSelEnd;
@ -4557,13 +4561,15 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
cpLastFind = uCPEdit;
if (!bSwitchedFindReplace &&
!GetDlgItemTextA2W(uCPEdit,hwnd,IDC_FINDTEXT,lpefr->szFind,COUNTOF(lpefr->szFind))) {
!GetDlgItemTextA2W(uCPEdit,hwnd,IDC_FINDTEXT,lpefr->szFind,COUNTOF(lpefr->szFind)))
{
EnableWindow(GetDlgItem(hwnd,IDOK),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_FINDPREV),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACE),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEALL),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_REPLACEINSEL),FALSE);
if (!GetDlgItemTextA2W(uCPEdit, hwnd, IDC_REPLACETEXT, lpefr->szReplace, COUNTOF(lpefr->szReplace)))
EnableWindow(GetDlgItem(hwnd,IDC_SWAPSTRG),FALSE);
return TRUE;
}
@ -4698,6 +4704,18 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
DestroyWindow(hwnd);
break;
case IDC_SWAPSTRG:
{
WCHAR wszFind[1024] = { L'\0' };
WCHAR wszRepl[1024] = { L'\0' };
GetDlgItemTextW(hwnd, IDC_FINDTEXT, wszFind, COUNTOF(wszFind));
GetDlgItemTextW(hwnd, IDC_REPLACETEXT, wszRepl, COUNTOF(wszRepl));
SetDlgItemTextW(hwnd, IDC_FINDTEXT, wszRepl);
SetDlgItemTextW(hwnd, IDC_REPLACETEXT, wszFind);
PostMessage(hwnd, WM_COMMAND, MAKELONG(IDC_FINDTEXT, 1), 0);
}
break;
case IDACC_FIND:
PostMessage(GetParent(hwnd),WM_COMMAND,MAKELONG(IDM_EDIT_FIND,1),0);
break;
@ -4736,7 +4754,6 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
CheckDlgButton(hwnd,IDC_FINDTRANSFORMBS,BST_UNCHECKED);
PostMessage(hwnd,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(hwnd,IDC_FINDTEXT)),1);
break;
}
return TRUE;

Binary file not shown.

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Notepad3.rc
// Von Microsoft Visual C++ generierte Includedatei.
// Verwendet durch Notepad3.rc
//
#define IDR_RT_MANIFEST 1
#define IDR_MAINWND 100
@ -123,6 +123,7 @@
#define IDC_SCI_VERSION 155
#define IDR_MAINWND2 156
#define IDC_REMOVE 157
#define IDC_SWAPSTRG 158
#define IDACC_FIND 200
#define IDACC_REPLACE 201
#define IDACC_SAVEPOS 202
@ -468,7 +469,7 @@
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 600
#define _APS_NEXT_COMMAND_VALUE 700
#define _APS_NEXT_CONTROL_VALUE 800
#define _APS_NEXT_CONTROL_VALUE 801
#define _APS_NEXT_SYMED_VALUE 900
#endif
#endif