From ac92a99a6de4ba98a670b12db57f4957e99372cb Mon Sep 17 00:00:00 2001 From: RaiKoHoff Date: Mon, 14 Sep 2020 11:28:15 +0200 Subject: [PATCH] + chg: F/R Dialog: toggle "Esc Ctrl Chr", try reverse operation if no length change --- src/Edit.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index c3814f0fe..4f172f436 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -6298,35 +6298,29 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam break; case IDC_FINDESCCTRLCHR: - { - static bool toggle = true; - GetDlgItemTextW(hwnd, IDC_FINDTEXT, s_tchBuf, COUNTOF(s_tchBuf)); - if (toggle) { - WCHAR trf[FNDRPL_BUFFER] = { L'\0' }; - SlashCtrlW(trf, COUNTOF(trf), s_tchBuf); - SetDlgItemTextW(hwnd, IDC_FINDTEXT, trf); - } else { - UnSlashCtrlW(s_tchBuf); - SetDlgItemTextW(hwnd, IDC_FINDTEXT, s_tchBuf); - } - toggle = !toggle; - } - break; - case IDC_REPLESCCTRLCHR: { static bool toggle = true; - GetDlgItemTextW(hwnd, IDC_REPLACETEXT, s_tchBuf, COUNTOF(s_tchBuf)); + UINT const ctrl_id = (LOWORD(wParam) == IDC_FINDESCCTRLCHR) ? IDC_FINDTEXT : IDC_REPLACETEXT; + GetDlgItemTextW(hwnd, ctrl_id, s_tchBuf, COUNTOF(s_tchBuf)); + size_t const len1 = StringCchLen(s_tchBuf, 0); if (toggle) { WCHAR trf[FNDRPL_BUFFER] = { L'\0' }; - SlashCtrlW(trf, COUNTOF(trf), s_tchBuf); - SetDlgItemTextW(hwnd, IDC_REPLACETEXT, trf); + size_t const len2 = SlashCtrlW(trf, COUNTOF(trf), s_tchBuf); + if (len1 == len2) { UnSlashCtrlW(trf); } + SetDlgItemTextW(hwnd, ctrl_id, trf); } else { - UnSlashCtrlW(s_tchBuf); - SetDlgItemTextW(hwnd, IDC_REPLACETEXT, s_tchBuf); + size_t const len2 = UnSlashCtrlW(s_tchBuf); + if (len1 != len2) { + SetDlgItemTextW(hwnd, ctrl_id, s_tchBuf); + } else { + WCHAR trf[FNDRPL_BUFFER] = { L'\0' }; + SlashCtrlW(trf, COUNTOF(trf), s_tchBuf); + SetDlgItemTextW(hwnd, ctrl_id, trf); + } } toggle = !toggle; - } + } break; case IDC_SWAPSTRG: