Merge branch 'SwapTextFields_FindRepl' into Bookmark_MMB

This commit is contained in:
Rainer Kottenhoff 2017-10-25 10:59:28 +02:00
commit 44e785fc5e
5 changed files with 56 additions and 49 deletions

View File

@ -161,7 +161,7 @@ HWND EditCreate(HWND hwndParent)
SendMessage(hwnd,SCI_SETADDITIONALCARETSBLINK,FALSE,0);
SendMessage(hwnd,SCI_SETADDITIONALCARETSVISIBLE,FALSE,0);
SendMessage(hwnd,SCI_SETMOUSEWHEELCAPTURES,FALSE,0);
SendMessage(hwnd, SCI_SETVIRTUALSPACEOPTIONS, (bDenyVirtualSpaceAccess ? SCVS_NONE : SCVS_NP3_SPACE_OPT), 0);
SendMessage(hwnd, SCI_SETVIRTUALSPACEOPTIONS, (bDenyVirtualSpaceAccess ? SCVS_NONE : SCVS_RECTANGULARSELECTION), 0);
SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_NEXT + (SCMOD_CTRL << 16)),SCI_PARADOWN);
SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_PRIOR + (SCMOD_CTRL << 16)),SCI_PARAUP);
@ -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;
@ -5352,6 +5369,7 @@ void EditMarkAll(HWND hwnd, BOOL bMarkOccurrencesMatchCase, BOOL bMarkOccurrence
// clear existing marker indicators
SendMessage(hwnd, SCI_SETINDICATORCURRENT, INDIC_NP3_MARK_OCCURANCE, 0);
SendMessage(hwnd, SCI_INDICATORCLEARRANGE, 0, iTextLen);
iMarkOccurrencesCount = -1;
// if nothing selected or multiple lines are selected exit
if ((iSelCount == 0) ||
@ -5401,7 +5419,6 @@ void EditMarkAll(HWND hwnd, BOOL bMarkOccurrencesMatchCase, BOOL bMarkOccurrence
LocalFree(pszText);
UpdateStatusbar();
iMarkOccurrencesCount = 0;
return;
}

View File

@ -97,9 +97,6 @@ __inline BOOL IniSectionSetBool(LPWSTR lpCachedIniSection, LPCWSTR lpName, BOOL
#define IsWinServer() IsWindowsServer() // Indicates if the current OS is a Windows Server release.
// Applications that need to distinguish between server and client versions of Windows should call this function.
#define SCVS_NP3_SPACE_OPT (SCVS_RECTANGULARSELECTION | SCVS_NOWRAPLINESTART)
enum BufferSizes {
MICRO_BUFFER = 32,
MINI_BUFFER = 64,

View File

@ -1148,13 +1148,10 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
{
if (!bDenyVirtualSpaceAccess)
{
if (GetAsyncKeyState(VK_MENU) & SHRT_MIN) { // ALT-KEY DOWN
//SendMessage(hwndEdit,SCI_CLEARSELECTIONS,0,0);
SendMessage(hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (SCVS_NP3_SPACE_OPT | SCVS_USERACCESSIBLE), 0);
}
else {
SendMessage(hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, SCVS_NP3_SPACE_OPT, 0);
}
if (GetAsyncKeyState(VK_MENU) & SHRT_MIN) // ALT-KEY DOWN
SendMessage(hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (SCVS_RECTANGULARSELECTION | SCVS_USERACCESSIBLE), 0);
else
SendMessage(hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, SCVS_RECTANGULARSELECTION, 0);
}
switch(umsg)
@ -2968,10 +2965,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginSelUndoAction();
SendMessage(hwndEdit, SCI_COPYALLOWLINE, 0, 0);
EndSelUndoAction(token);
UpdateToolbar();
}
break;
@ -2981,10 +2975,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginSelUndoAction();
SendMessage(hwndEdit,SCI_COPYRANGE,0,SendMessage(hwndEdit,SCI_GETLENGTH,0,0));
EndSelUndoAction(token);
UpdateToolbar();
}
break;
@ -2994,10 +2985,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginSelUndoAction();
EditCopyAppend(hwndEdit);
EndSelUndoAction(token);
UpdateToolbar();
}
break;
@ -3013,8 +3001,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
if (!pClip)
break; // recoding canceled
int token = BeginSelUndoAction();
if (SendMessage(hwndEdit,SCI_GETSELECTIONEMPTY,0,0))
{
int iCurPos = (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
@ -3033,6 +3019,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
}
else {
int token = BeginSelUndoAction();
int iCurrPos = (int)SendMessage(hwndEdit, SCI_GETCURRENTPOS, 0, 0);
int iAnchor = (int)SendMessage(hwndEdit, SCI_GETANCHOR, 0, 0);
@ -3051,8 +3038,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
else
SendMessage(hwndEdit, SCI_SETSEL, iCurrPos + lstrlenA(pClip), iCurrPos);
}
EndSelUndoAction(token);
}
EndSelUndoAction(token);
LocalFree(pClip);
UpdateToolbar();
UpdateStatusbar();
@ -3078,17 +3066,13 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
case IDM_EDIT_SELECTALL:
{
int token = BeginSelUndoAction();
SendMessage(hwndEdit,SCI_SELECTALL,0,0);
EndSelUndoAction(token);
}
break;
case IDM_EDIT_SELECTWORD:
{
int token = BeginSelUndoAction();
int iPos = (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
if (SendMessage(hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) {
@ -3129,14 +3113,12 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
int iLineEnd = (int)SendMessage(hwndEdit,SCI_GETLINEENDPOSITION,iLine,0);
SendMessage(hwndEdit,SCI_SETSEL,iLineStart,iLineEnd);
}
EndSelUndoAction(token);
}
break;
case IDM_EDIT_SELECTLINE:
{
int token = BeginSelUndoAction();
int iSelStart = (int)SendMessage(hwndEdit,SCI_GETSELECTIONSTART,0,0);
int iSelEnd = (int)SendMessage(hwndEdit,SCI_GETSELECTIONEND,0,0);
int iLineStart = (int)SendMessage(hwndEdit,SCI_LINEFROMPOSITION,iSelStart,0);
@ -3145,7 +3127,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
iSelEnd = (int)SendMessage(hwndEdit,SCI_POSITIONFROMLINE,iLineEnd+1,0);
SendMessage(hwndEdit,SCI_SETSEL,iSelStart,iSelEnd);
SendMessage(hwndEdit,SCI_CHOOSECARETX,0,0);
EndSelUndoAction(token);
}
break;
@ -3169,7 +3150,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginSelUndoAction();
SendMessage(hwndEdit,SCI_LINECUT,0,0);
UpdateToolbar();
@ -3181,24 +3161,35 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
case IDM_EDIT_COPYLINE:
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
SendMessage(hwndEdit,SCI_LINECOPY,0,0);
UpdateToolbar();
break;
case IDM_EDIT_DELETELINE:
SendMessage(hwndEdit,SCI_LINEDELETE,0,0);
{
int token = BeginSelUndoAction();
SendMessage(hwndEdit, SCI_LINEDELETE, 0, 0);
EndSelUndoAction(token);
}
break;
case IDM_EDIT_DELETELINELEFT:
SendMessage(hwndEdit,SCI_DELLINELEFT,0,0);
{
int token = BeginSelUndoAction();
SendMessage(hwndEdit, SCI_DELLINELEFT, 0, 0);
EndSelUndoAction(token);
}
break;
case IDM_EDIT_DELETELINERIGHT:
SendMessage(hwndEdit,SCI_DELLINERIGHT,0,0);
{
int token = BeginSelUndoAction();
SendMessage(hwndEdit, SCI_DELLINERIGHT, 0, 0);
EndSelUndoAction(token);
}
break;
@ -4225,6 +4216,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
// clear all marks
SendMessage(hwndEdit, SCI_SETINDICATORCURRENT, INDIC_NP3_MARK_OCCURANCE, 0);
SendMessage(hwndEdit, SCI_INDICATORCLEARRANGE, 0, (int)SendMessage(hwndEdit,SCI_GETLENGTH,0,0));
iMarkOccurrencesCount = -1;
break;
case IDM_VIEW_MARKOCCURRENCES_RED:

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