diff --git a/src/Edit.c b/src/Edit.c index 6a094cd71..794828ca9 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -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; diff --git a/src/Notepad3.rc b/src/Notepad3.rc index d0cb0633d..911332e04 100644 Binary files a/src/Notepad3.rc and b/src/Notepad3.rc differ diff --git a/src/resource.h b/src/resource.h index b8f6cc227..330101953 100644 --- a/src/resource.h +++ b/src/resource.h @@ -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