From aa1c3c7d4cbc19ece548b150261d2b2b2d89d7a6 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Tue, 23 Jan 2018 22:13:27 +0100 Subject: [PATCH] + refactoring: usage of undo/redo action stack --- src/Edit.c | 231 +++++++++++++++++++++++------------------------ src/Notepad3.c | 240 +++++++++++++++++-------------------------------- src/Notepad3.h | 8 +- 3 files changed, 203 insertions(+), 276 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index 9125d06a8..adff1bf40 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -326,7 +326,7 @@ void EditSetNewText(HWND hwnd,char* lpstrText,DWORD cbText) SendMessage(hwnd,SCI_CANCEL,0,0); SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); - UndoRedoSelectionMap(-1,NULL); + UndoRedoActionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); SendMessage(hwnd,SCI_SETSCROLLWIDTH, DEFAULT_SCROLL_WIDTH,0); @@ -365,7 +365,7 @@ BOOL EditConvertText(HWND hwnd, int encSource, int encDest, BOOL bSetSavePoint) { SendMessage(hwnd,SCI_CANCEL,0,0); SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); - UndoRedoSelectionMap(-1,NULL); + UndoRedoActionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); Encoding_SciSetCodePage(hwnd,encDest); @@ -406,7 +406,7 @@ BOOL EditConvertText(HWND hwnd, int encSource, int encDest, BOOL bSetSavePoint) SendMessage(hwnd,SCI_CANCEL,0,0); SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); - UndoRedoSelectionMap(-1,NULL); + UndoRedoActionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); Encoding_SciSetCodePage(hwnd,encDest); @@ -1256,11 +1256,11 @@ void EditInvertCase(HWND hwnd) WideCharToMultiByte(cpEdit,0,pszTextW,cchTextW,pszText,(int)GlobalSize(pszText),NULL,NULL); - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_CLEAR,0,0); SendMessage(hwnd,SCI_ADDTEXT,(WPARAM)(iSelEnd - iSelStart),(LPARAM)pszText); SendMessage(hwnd,SCI_SETSEL,(WPARAM)iAnchorPos,(LPARAM)iCurPos); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); } GlobalFree(pszText); @@ -1319,11 +1319,11 @@ void EditTitleCase(HWND hwnd) WideCharToMultiByte(cpEdit,0,pszTextW,cchTextW,pszText,(int)GlobalSize(pszText),NULL,NULL); - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_CLEAR,0,0); SendMessage(hwnd,SCI_ADDTEXT,(WPARAM)(iSelEnd - iSelStart),(LPARAM)pszText); SendMessage(hwnd,SCI_SETSEL,(WPARAM)iAnchorPos,(LPARAM)iCurPos); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); } GlobalFree(pszText); @@ -1395,11 +1395,11 @@ void EditSentenceCase(HWND hwnd) WideCharToMultiByte(cpEdit,0,pszTextW,cchTextW,pszText,(int)GlobalSize(pszText),NULL,NULL); - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_CLEAR,0,0); SendMessage(hwnd,SCI_ADDTEXT,(WPARAM)(iSelEnd - iSelStart),(LPARAM)pszText); SendMessage(hwnd,SCI_SETSEL,(WPARAM)iAnchorPos,(LPARAM)iCurPos); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); } GlobalFree(pszText); @@ -1478,11 +1478,11 @@ void EditURLEncode(HWND hwnd) else iCurPos = iAnchorPos + cchEscaped; - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_CLEAR,0,0); SendMessage(hwnd,SCI_ADDTEXT,(WPARAM)cchEscaped,(LPARAM)pszEscaped); SendMessage(hwnd,SCI_SETSEL,(WPARAM)iAnchorPos,(LPARAM)iCurPos); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); LocalFree(pszText); LocalFree(pszTextW); @@ -1563,11 +1563,11 @@ void EditURLDecode(HWND hwnd) else iCurPos = iAnchorPos + cchUnescaped; - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_CLEAR,0,0); SendMessage(hwnd,SCI_ADDTEXT,(WPARAM)cchUnescaped,(LPARAM)pszUnescaped); SendMessage(hwnd,SCI_SETSEL,(WPARAM)iAnchorPos,(LPARAM)iCurPos); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); LocalFree(pszText); LocalFree(pszTextW); @@ -1586,31 +1586,32 @@ void EditURLDecode(HWND hwnd) // void EditEscapeCChars(HWND hwnd) { - if (SendMessage(hwnd,SCI_GETSELECTIONEND,0,0) - SendMessage(hwnd,SCI_GETSELECTIONSTART,0,0)) + if (!SciCall_IsSelectionEmpty()) { - if (!SciCall_IsSelectionRectangle()) + if (SciCall_IsSelectionRectangle()) { - EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }; - efr.hwnd = hwnd; - - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\"); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\\"); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\""); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\""); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\'"); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\'"); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + MsgBox(MBWARN, IDS_SELRECT); + return; } - else - MsgBox(MBWARN,IDS_SELRECT); + + EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }; + efr.hwnd = hwnd; + + int token = BeginUndoAction(); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\"); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\\"); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\""); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\""); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\'"); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\\'"); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + EndUndoAction(token); } } @@ -1621,31 +1622,32 @@ void EditEscapeCChars(HWND hwnd) { // void EditUnescapeCChars(HWND hwnd) { - if (SendMessage(hwnd,SCI_GETSELECTIONEND,0,0) - SendMessage(hwnd,SCI_GETSELECTIONSTART,0,0)) + if (!SciCall_IsSelectionEmpty()) { - if (!SciCall_IsSelectionRectangle()) + if (SciCall_IsSelectionRectangle()) { - EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }; - efr.hwnd = hwnd; - - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\\"); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\"); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\""); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\""); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\'"); - StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\'"); - EditReplaceAllInSelection(hwnd,&efr,FALSE); - - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + MsgBox(MBWARN, IDS_SELRECT); + return; } - else - MsgBox(MBWARN,IDS_SELRECT); + + EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }; + efr.hwnd = hwnd; + + int token = BeginUndoAction(); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\\"); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\\"); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\""); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\""); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\'"); + StringCchCopyA(efr.szReplace,FNDRPL_BUFFER,"\'"); + EditReplaceAllInSelection(hwnd,&efr,FALSE); + + EndUndoAction(token); } } @@ -1923,17 +1925,17 @@ void EditTabsToSpaces(HWND hwnd,int nTabWidth,BOOL bOnlyIndentingWS) iCurPos = iSelStart + cchConvM; } - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText); EditLeaveTargetTransaction(); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); - SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); + GlobalFree(pszText); } else @@ -2052,16 +2054,15 @@ void EditSpacesToTabs(HWND hwnd,int nTabWidth,BOOL bOnlyIndentingWS) iCurPos = iSelStart + cchConvM; } - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText); EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); - SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); GlobalFree(pszText); } @@ -2087,12 +2088,12 @@ void EditMoveUp(HWND hwnd) int iLineCurPos = iCurPos - SciCall_PositionFromLine(iCurLine); int iLineAnchorPos = iAnchorPos - SciCall_PositionFromLine(iAnchorLine); if (iCurLine > 0) { - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); SendMessage(hwnd,SCI_LINETRANSPOSE,0,0); SciCall_SetSel(SciCall_PositionFromLine(iAnchorLine - 1) + iLineAnchorPos, SciCall_PositionFromLine(iCurLine - 1) + iLineCurPos); SendMessage(hwnd,SCI_CHOOSECARETX,0,0); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); + EndUndoAction(token); } } else if (!SciCall_IsSelectionRectangle()) { @@ -2120,7 +2121,7 @@ void EditMoveUp(HWND hwnd) --iLineDest; } - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iLineSrcStart, iLineSrcEnd); @@ -2147,7 +2148,6 @@ void EditMoveUp(HWND hwnd) } EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); if (iCurPos < iAnchorPos) { iCurPos = SciCall_PositionFromLine(iCurLine - 1); @@ -2159,6 +2159,7 @@ void EditMoveUp(HWND hwnd) } SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); } } else @@ -2182,13 +2183,13 @@ void EditMoveDown(HWND hwnd) int iLineCurPos = iCurPos - SciCall_PositionFromLine(iCurLine); int iLineAnchorPos = iAnchorPos - SciCall_PositionFromLine(iAnchorLine); if (iCurLine < (SciCall_GetLineCount() - 1)) { - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); SciCall_GotoLine(iCurLine + 1); SendMessage(hwnd, SCI_LINETRANSPOSE, 0, 0); SciCall_SetSel(SciCall_PositionFromLine(iAnchorLine + 1) + iLineAnchorPos, SciCall_PositionFromLine(iCurLine + 1) + iLineCurPos); SendMessage(hwnd, SCI_CHOOSECARETX, 0, 0); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); + EndUndoAction(token); } } else if (!SciCall_IsSelectionRectangle()) @@ -2235,7 +2236,7 @@ void EditMoveDown(HWND hwnd) iLineSrcEnd = SciCall_PositionFromLine(iLineSrc + 1); iLineDest = min(iCurLine,iAnchorLine); - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iLineSrcStart, iLineSrcEnd); @@ -2252,7 +2253,6 @@ void EditMoveDown(HWND hwnd) } EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); LocalFree(pLine); @@ -2266,6 +2266,7 @@ void EditMoveDown(HWND hwnd) } SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); } } else @@ -2458,7 +2459,7 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) } } - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); for (iLine = iLineStart; iLine <= iLineEnd; iLine++) { @@ -2502,7 +2503,6 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) SendMessage(hwnd, SCI_REPLACESEL, 0, (LPARAM)mszInsert); } } - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); // extend selection to start of first line // the above code is not required when last line has been excluded @@ -2520,6 +2520,9 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) } SciCall_SetSel(iAnchorPos, iCurPos); } + + EndUndoAction(token); + } else MsgBox(MBWARN,IDS_SELRECT); @@ -2535,6 +2538,7 @@ void EditAlignText(HWND hwnd,int nMode) #define BUFSIZE_ALIGN 1024 BOOL bModified = FALSE; + int token = -1; int iSelStart = SciCall_GetSelectionStart(); int iSelEnd = SciCall_GetSelectionEnd(); @@ -2595,7 +2599,7 @@ void EditAlignText(HWND hwnd,int nMode) if ((iIndentPos == iEndPos) && (iEndPos > 0)) { if (!bModified) { - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + token = BeginUndoAction(); bModified = TRUE; } SciCall_SetSel(SciCall_PositionFromLine(iLine), iEndPos); @@ -2614,7 +2618,7 @@ void EditAlignText(HWND hwnd,int nMode) int cchLine = (int)SendMessage(hwnd,SCI_GETLINE,(WPARAM)iLine,(LPARAM)tchLineBuf); if (!bModified) { - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + token = BeginUndoAction(); bModified = TRUE; } @@ -2759,8 +2763,6 @@ void EditAlignText(HWND hwnd,int nMode) } } } - if (bModified) - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); } else MsgBox(MBINFO,IDS_BUFFERTOOSMALL); @@ -2775,6 +2777,10 @@ void EditAlignText(HWND hwnd,int nMode) iCurPos = SciCall_PositionFromLine(iLineEnd + 1); } SciCall_SetSel(iAnchorPos, iCurPos); + + if (bModified && (token >= 0)) { + EndUndoAction(token); + } } else MsgBox(MBWARN,IDS_SELRECT); @@ -2803,7 +2809,7 @@ void EditEncloseSelection(HWND hwnd,LPCWSTR pwszOpen,LPCWSTR pwszClose) if (!SciCall_IsSelectionRectangle()) { - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); if (StringCchLenA(mszOpen,COUNTOF(mszOpen))) { SciCall_SetSel(iSelStart, iSelStart); @@ -2816,8 +2822,6 @@ void EditEncloseSelection(HWND hwnd,LPCWSTR pwszOpen,LPCWSTR pwszClose) SendMessage(hwnd, SCI_REPLACESEL, 0, (LPARAM)mszClose); } - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); - // Fix selection if (iSelStart == iSelEnd) SciCall_SetSel(iSelStart + StringCchLenA(mszOpen, COUNTOF(mszOpen)), @@ -2835,6 +2839,8 @@ void EditEncloseSelection(HWND hwnd,LPCWSTR pwszOpen,LPCWSTR pwszClose) } SciCall_SetSel(iAnchorPos, iCurPos); } + + EndUndoAction(token); } else MsgBox(MBWARN,IDS_SELRECT); @@ -2885,7 +2891,7 @@ void EditToggleLineComments(HWND hwnd,LPCWSTR pwszComment,BOOL bInsertAtStart) } } - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); for (int iLine = iLineStart; iLine <= iLineEnd; iLine++) { @@ -2928,7 +2934,6 @@ void EditToggleLineComments(HWND hwnd,LPCWSTR pwszComment,BOOL bInsertAtStart) } } } - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); if (iSelStart != iSelEnd) { @@ -2944,6 +2949,7 @@ void EditToggleLineComments(HWND hwnd,LPCWSTR pwszComment,BOOL bInsertAtStart) SciCall_SetSel(iAnchorPos, iCurPos); } + EndUndoAction(token); } else MsgBox(MBWARN,IDS_SELRECT); @@ -2961,6 +2967,7 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) int iLine = 0; BOOL bIsRectangular = FALSE; BOOL bReducedSelection = FALSE; + int token = -1; int iSelStart = 0; int iSelEnd = 0; @@ -3034,7 +3041,7 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) pmszPadStr[size] = '\0'; if (!bNoUndoGroup) - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + token = BeginUndoAction(); for (iLine = iLineStart; iLine <= iLineEnd; iLine++) { @@ -3064,9 +3071,6 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) if (pmszPadStr) LocalFree(pmszPadStr); - - if (!bNoUndoGroup) - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); } if (!bIsRectangular && (SciCall_LineFromPosition(iSelStart) != SciCall_LineFromPosition(iSelEnd))) @@ -3096,6 +3100,9 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) SendMessage(hwnd,SCI_SETRECTANGULARSELECTIONCARET,(WPARAM)iCurPos,0); SendMessage(hwnd,SCI_SETRECTANGULARSELECTIONANCHOR,(WPARAM)iAnchorPos,0); } + + if (!bNoUndoGroup && (token >= 0)) + EndUndoAction(token); } @@ -3129,7 +3136,7 @@ void EditStripFirstCharacter(HWND hwnd) if (iSelEnd <= SciCall_PositionFromLine(iLineEnd)) { --iLineEnd; } g_flagIgnoreNotifyChange = TRUE; - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); int chCnt = 0; @@ -3143,12 +3150,13 @@ void EditStripFirstCharacter(HWND hwnd) } EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); g_flagIgnoreNotifyChange = FALSE; if (!bIsSelEmpty) { SciCall_SetSel(iSelStart, (iSelEnd - chCnt)); } + + EndUndoAction(token); UpdateUI(); } @@ -3182,8 +3190,8 @@ void EditStripLastCharacter(HWND hwnd) if (iSelStart >= SciCall_GetLineEndPosition(iLineStart)) { ++iLineStart; } if (iSelEnd < SciCall_GetLineEndPosition(iLineEnd)) { --iLineEnd; } + int token = BeginUndoAction(); g_flagIgnoreNotifyChange = TRUE; - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); EditEnterTargetTransaction(); for (int iLine = iLineStart; iLine <= iLineEnd; ++iLine) @@ -3198,8 +3206,8 @@ void EditStripLastCharacter(HWND hwnd) } EditLeaveTargetTransaction(); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); g_flagIgnoreNotifyChange = FALSE; + EndUndoAction(token); } @@ -3233,8 +3241,8 @@ void EditStripTrailingBlanks(HWND hwnd, BOOL bIgnoreSelection) if (iSelEnd < SciCall_GetLineEndPosition(iLineEnd)) { --iLineEnd; } + int token = BeginUndoAction(); g_flagIgnoreNotifyChange = TRUE; - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); EditEnterTargetTransaction(); for (int iLine = iLineStart; iLine <= iLineEnd; ++iLine) @@ -3255,8 +3263,8 @@ void EditStripTrailingBlanks(HWND hwnd, BOOL bIgnoreSelection) } EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); g_flagIgnoreNotifyChange = FALSE; + EndUndoAction(token); } //============================================================================= @@ -3330,7 +3338,7 @@ void EditCompressSpaces(HWND hwnd) if (bModified) { - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); if (iSelStart != iSelEnd) { @@ -3352,7 +3360,7 @@ void EditCompressSpaces(HWND hwnd) SciCall_SetSel(iAnchorPos, iCurPos); EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); + EndUndoAction(token); } } if (pszIn) @@ -3389,7 +3397,7 @@ void EditRemoveBlankLines(HWND hwnd,BOOL bMerge) if ((iSelEnd <= SciCall_PositionFromLine(iLineEnd)) && (iLineEnd != SciCall_GetLineCount() - 1)) { --iLineEnd; } g_flagIgnoreNotifyChange = TRUE; - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); for (int iLine = iLineStart; iLine <= iLineEnd; ) @@ -3414,7 +3422,7 @@ void EditRemoveBlankLines(HWND hwnd,BOOL bMerge) } EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); + EndUndoAction(token); g_flagIgnoreNotifyChange = FALSE; } @@ -3600,16 +3608,15 @@ void EditWrapToColumn(HWND hwnd,int nColumn/*,int nTabWidth*/) iCurPos = iSelStart + cchConvM; } - SendMessage(hwnd,SCI_BEGINUNDOACTION,0,0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText); EditLeaveTargetTransaction(); - SendMessage(hwnd,SCI_ENDUNDOACTION,0,0); - SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); GlobalFree(pszText); } @@ -3713,16 +3720,15 @@ void EditJoinLinesEx(HWND hwnd, BOOL bPreserveParagraphs, BOOL bCRLF2Space) iCurPos = iSelStart + cchJoin; } - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchJoin, (LPARAM)pszJoin); EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); - SciCall_SetSel(iAnchorPos, iCurPos); + EndUndoAction(token); } @@ -3776,6 +3782,7 @@ int CmpLogicalRev(const void *s1, const void *s2) { } } + void EditSortLines(HWND hwnd, int iSortFlags) { BOOL bIsRectangular = FALSE; @@ -3871,7 +3878,7 @@ void EditSortLines(HWND hwnd, int iSortFlags) iTabWidth = (UINT)SendMessage(hwnd, SCI_GETTABWIDTH, 0, 0); - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + int token = BeginUndoAction(); if (bIsRectangular) EditPadWithSpaces(hwnd, !(iSortFlags & SORT_SHUFFLE), TRUE); @@ -4009,7 +4016,6 @@ void EditSortLines(HWND hwnd, int iSortFlags) SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)-1, (LPARAM)pmszResult); EditLeaveTargetTransaction(); - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); LocalFree(pmszResult); @@ -4022,6 +4028,8 @@ void EditSortLines(HWND hwnd, int iSortFlags) else { SendMessage(hwnd, SCI_SETSEL, (WPARAM)iAnchorPos, (LPARAM)iCurPos); } + + EndUndoAction(token); } @@ -5490,6 +5498,7 @@ static UT_icd ReplPos_icd = { sizeof(ReplPos_t), NULL, NULL, NULL }; int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, BOOL bShowInfo, int iStartPos, int iEndPos) { + int token = -1; char szFind[FNDRPL_BUFFER]; if (iStartPos > iEndPos) @@ -5545,7 +5554,7 @@ int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, BOOL bShowInfo, i int iCount = utarray_len(ReplPosUTArray); if (iCount > 0) - SendMessage(hwnd, SCI_BEGINUNDOACTION, 0, 0); + token = BeginUndoAction(); // === iterate over findings and replace strings === @@ -5579,8 +5588,8 @@ int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, BOOL bShowInfo, i utarray_free(ReplPosUTArray); LocalFree(pszReplace); - if (iCount > 0) - SendMessage(hwnd, SCI_ENDUNDOACTION, 0, 0); + if ((iCount > 0) && (token >= 0)) + EndUndoAction(token); if (bShowInfo) { if (iCount > 0) @@ -5602,12 +5611,8 @@ BOOL EditReplaceAll(HWND hwnd,LPCEDITFINDREPLACE lpefr,BOOL bShowInfo) int start = 0; int end = SciCall_GetTextLength(); - int token = BeginSelUndoAction(); - int iCount = EditReplaceAllInRange(hwnd, lpefr, bShowInfo, start, end); - EndSelUndoAction(token); - return (iCount > 0) ? TRUE : FALSE; } @@ -5623,15 +5628,11 @@ BOOL EditReplaceAllInSelection(HWND hwnd,LPCEDITFINDREPLACE lpefr,BOOL bShowInfo return FALSE; } - int token = BeginSelUndoAction(); - int start = SciCall_GetSelectionStart(); int end = SciCall_GetSelectionEnd(); int iCount = EditReplaceAllInRange(hwnd, lpefr, bShowInfo, start, end); - EndSelUndoAction(token); - if (iCount <= 0) return FALSE; diff --git a/src/Notepad3.c b/src/Notepad3.c index c59b2c1b7..2ffcc5ea0 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -955,19 +955,21 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow) // Check for /c [if no file is specified] -- even if a file is specified /*else */if (flagNewFromClipboard) { - if (SendMessage(g_hwndEdit,SCI_CANPASTE,0,0)) { + if (SendMessage(g_hwndEdit, SCI_CANPASTE, 0, 0)) { BOOL bAutoIndent2 = bAutoIndent; bAutoIndent = 0; - EditJumpTo(g_hwndEdit,-1,0); - SendMessage(g_hwndEdit,SCI_BEGINUNDOACTION,0,0); - if (SendMessage(g_hwndEdit,SCI_GETLENGTH,0,0) > 0) - SendMessage(g_hwndEdit,SCI_NEWLINE,0,0); - SendMessage(g_hwndEdit,SCI_PASTE,0,0); - SendMessage(g_hwndEdit,SCI_NEWLINE,0,0); - SendMessage(g_hwndEdit,SCI_ENDUNDOACTION,0,0); + EditJumpTo(g_hwndEdit, -1, 0); + SendMessage(g_hwndEdit, SCI_BEGINUNDOACTION, 0, 0); + if (SendMessage(g_hwndEdit, SCI_GETLENGTH, 0, 0) > 0) { + SendMessage(g_hwndEdit, SCI_NEWLINE, 0, 0); + } + SendMessage(g_hwndEdit, SCI_PASTE, 0, 0); + SendMessage(g_hwndEdit, SCI_NEWLINE, 0, 0); + SendMessage(g_hwndEdit, SCI_ENDUNDOACTION, 0, 0); bAutoIndent = bAutoIndent2; - if (flagJumpTo) - EditJumpTo(g_hwndEdit,iInitialLine,iInitialColumn); + if (flagJumpTo) { + EditJumpTo(g_hwndEdit, iInitialLine, iInitialColumn); + } EditEnsureSelectionVisible(g_hwndEdit); } } @@ -3025,7 +3027,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) if (flagPasteBoard) bLastCopyFromMe = TRUE; - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); if (!SendMessage(g_hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) { SendMessage(g_hwndEdit, SCI_CUT, 0, 0); @@ -3034,7 +3036,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) SendMessage(g_hwndEdit, SCI_COPYALLOWLINE, 0, 0); SendMessage(g_hwndEdit, SCI_LINEDELETE, 0, 0); } - EndSelUndoAction(token); + EndUndoAction(token); UpdateToolbar(); } break; @@ -3083,7 +3085,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) int iCurrPos = (int)SendMessage(g_hwndEdit, SCI_GETCURRENTPOS, 0, 0); int iAnchor = iCurrPos; - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); if (SendMessage(g_hwndEdit,SCI_GETSELECTIONEMPTY,0,0)) { @@ -3114,7 +3116,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) SendMessage(g_hwndEdit, SCI_SETSEL, iCurrPos + lstrlenA(pClip), iCurrPos); } - EndSelUndoAction(token); + EndUndoAction(token); LocalFree(pClip); @@ -3198,20 +3200,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_MOVELINEUP: - { - int token = BeginSelUndoAction(); - EditMoveUp(g_hwndEdit); - EndSelUndoAction(token); - } + EditMoveUp(g_hwndEdit); break; case IDM_EDIT_MOVELINEDOWN: - { - int token = BeginSelUndoAction(); - EditMoveDown(g_hwndEdit); - EndSelUndoAction(token); - } + EditMoveDown(g_hwndEdit); break; @@ -3224,10 +3218,10 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (flagPasteBoard) bLastCopyFromMe = TRUE; - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_LINECUT,0,0); UpdateToolbar(); - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -3242,45 +3236,45 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_DELETELINE: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_LINEDELETE, 0, 0); - EndSelUndoAction(token); + EndUndoAction(token); } break; case IDM_EDIT_DELETELINELEFT: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_DELLINELEFT, 0, 0); - EndSelUndoAction(token); + EndUndoAction(token); } break; case IDM_EDIT_DELETELINERIGHT: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_DELLINERIGHT, 0, 0); - EndSelUndoAction(token); + EndUndoAction(token); } break; case IDM_EDIT_INDENT: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_TAB,0,0); - EndSelUndoAction(token); + EndUndoAction(token); } break; case IDM_EDIT_UNINDENT: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_BACKTAB,0,0); - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -3288,9 +3282,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_ENCLOSESELECTION: if (EditEncloseSelectionDlg(hwnd,wchPrefixSelection,wchAppendSelection)) { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditEncloseSelection(g_hwndEdit,wchPrefixSelection,wchAppendSelection); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3299,9 +3291,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_SELECTIONDUPLICATE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_SELECTIONDUPLICATE,0,0); - EndSelUndoAction(token); + EndUndoAction(token); EndWaitCursor(); } break; @@ -3310,9 +3302,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_PADWITHSPACES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditPadWithSpaces(g_hwndEdit,FALSE,FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3321,9 +3311,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_STRIP1STCHAR: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditStripFirstCharacter(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3332,9 +3320,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_STRIPLASTCHAR: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditStripLastCharacter(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3342,10 +3328,8 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_TRIMLINES: { - int token = BeginSelUndoAction(); BeginWaitCursor(NULL); EditStripTrailingBlanks(g_hwndEdit, FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3354,9 +3338,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_COMPRESSWS: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditCompressSpaces(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3365,9 +3347,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_MERGEBLANKLINES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditRemoveBlankLines(g_hwndEdit,TRUE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3376,9 +3356,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_REMOVEBLANKLINES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditRemoveBlankLines(g_hwndEdit,FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3388,9 +3366,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (EditModifyLinesDlg(hwnd,wchPrefixLines,wchAppendLines)) { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditModifyLines(g_hwndEdit,wchPrefixLines,wchAppendLines); - EndSelUndoAction(token); EndWaitCursor(); } } @@ -3401,9 +3377,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (EditAlignDlg(hwnd,&iAlignMode)) { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditAlignText(g_hwndEdit,iAlignMode); - EndSelUndoAction(token); EndWaitCursor(); } } @@ -3414,9 +3388,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (EditSortDlg(hwnd,&iSortOptions)) { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditSortLines(g_hwndEdit,iSortOptions); - EndSelUndoAction(token); EndWaitCursor(); } } @@ -3432,9 +3404,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { iWrapCol = max(min(iWrapCol,512),1); BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditWrapToColumn(g_hwndEdit,iWrapCol); - EndSelUndoAction(token); EndWaitCursor(); } } @@ -3444,12 +3414,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_SPLITLINES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); EditEnterTargetTransaction(); SciCall_TargetFromSelection(); SendMessage(g_hwndEdit,SCI_LINESSPLIT,0,0); EditLeaveTargetTransaction(); - EndSelUndoAction(token); + EndUndoAction(token); EndWaitCursor(); } break; @@ -3458,9 +3428,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_JOINLINES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditJoinLinesEx(g_hwndEdit, FALSE, TRUE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3468,9 +3436,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_JOINLN_NOSP: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditJoinLinesEx(g_hwndEdit, FALSE, FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3478,9 +3444,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_JOINLINES_PARA: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditJoinLinesEx(g_hwndEdit, TRUE, TRUE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3489,9 +3453,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTUPPERCASE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_UPPERCASE,0,0); - EndSelUndoAction(token); + EndUndoAction(token); EndWaitCursor(); } break; @@ -3500,9 +3464,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTLOWERCASE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_LOWERCASE,0,0); - EndSelUndoAction(token); + EndUndoAction(token); EndWaitCursor(); } break; @@ -3511,9 +3475,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_INVERTCASE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditInvertCase(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3522,9 +3484,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_TITLECASE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditTitleCase(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3533,9 +3493,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_SENTENCECASE: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditSentenceCase(g_hwndEdit); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3544,9 +3502,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTTABS: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditTabsToSpaces(g_hwndEdit, iTabWidth, FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3555,9 +3511,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTSPACES: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditSpacesToTabs(g_hwndEdit, iTabWidth, FALSE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3566,9 +3520,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTTABS2: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditTabsToSpaces(g_hwndEdit, iTabWidth, TRUE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3577,9 +3529,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CONVERTSPACES2: { BeginWaitCursor(NULL); - int token = BeginSelUndoAction(); EditSpacesToTabs(g_hwndEdit, iTabWidth, TRUE); - EndSelUndoAction(token); EndWaitCursor(); } break; @@ -3604,9 +3554,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) char *p = StrChrA(msz, ','); if (p) *p = 0; - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_REPLACESEL,0,(LPARAM)msz); - EndSelUndoAction(token); + EndUndoAction(token); } } break; @@ -3651,9 +3601,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) UINT uCP = Encoding_SciGetCodePage(g_hwndEdit); WideCharToMultiByteStrg(uCP,tchDateTime,mszBuf); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_REPLACESEL,0,(LPARAM)mszBuf); - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -3683,9 +3633,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) UINT uCP = Encoding_SciGetCodePage(g_hwndEdit); WideCharToMultiByteStrg(uCP,pszInsert,mszBuf); - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_REPLACESEL,0,(LPARAM)mszBuf); - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -3701,9 +3651,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) UINT uCP = Encoding_SciGetCodePage(g_hwndEdit); char mszGuid[40 * 4]; // UTF-8 max of 4 bytes per char if (WideCharToMultiByteStrg(uCP,pwszGuid,mszGuid)) { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_REPLACESEL,0,(LPARAM)mszGuid); - EndSelUndoAction(token); + EndUndoAction(token); } } } @@ -4690,7 +4640,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case CMD_CTRLENTER: { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); int iPos = (int)SendMessage(g_hwndEdit,SCI_GETCURRENTPOS,0,0); int iLine = (int)SendMessage(g_hwndEdit,SCI_LINEFROMPOSITION,(WPARAM)iPos,0); if (iLine <= 0) { @@ -4703,7 +4653,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) SendMessage(g_hwndEdit,SCI_GETLINEENDPOSITION,(WPARAM)(iLine - 1),0),0); SendMessage(g_hwndEdit,SCI_NEWLINE,0,0); } - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -4723,12 +4673,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) SendMessage(g_hwndEdit, SCI_CLEAR, 0, 0); } else { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_CLEAR, 0, 0); // possible unexpected behavior on Virtual Space Access, so: const int iPos = SciCall_GetCurrentPos(); SendMessage(g_hwndEdit, SCI_SETSELECTION, iPos, iPos); - EndSelUndoAction(token); + EndUndoAction(token); } } break; @@ -4738,9 +4688,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) if ((BOOL)SendMessage(g_hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) SendMessage(g_hwndEdit, SCI_DELETEBACK, 0, 0); else { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_DELETEBACK, 0, 0); - EndSelUndoAction(token); + EndUndoAction(token); } break; @@ -4764,9 +4714,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) int iIndentPos = (int)SendMessage(g_hwndEdit,SCI_GETLINEINDENTPOSITION,(WPARAM)iLine,0); if (iPos != iAnchor) { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit,SCI_SETSEL,(WPARAM)iPos,(LPARAM)iPos); - EndSelUndoAction(token); + EndUndoAction(token); } else { if (iPos == iStartPos) @@ -4789,9 +4739,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) int iEndPos = (int)SendMessage(g_hwndEdit,SCI_GETLINEENDPOSITION,(WPARAM)iLine,0); if (iPos != iAnchor) { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_SETSEL, (WPARAM)iPos, (LPARAM)iPos); - EndSelUndoAction(token); + EndUndoAction(token); } else { if (iStartPos != iEndPos) @@ -4805,13 +4755,13 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case CMD_CTRLTAB: { - int token = ((BOOL)SendMessage(g_hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) ? -1 : BeginSelUndoAction(); + int token = ((BOOL)SendMessage(g_hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) ? -1 : BeginUndoAction(); SendMessage(g_hwndEdit,SCI_SETTABINDENTS,FALSE,0); SendMessage(g_hwndEdit,SCI_SETUSETABS,TRUE,0); SendMessage(g_hwndEdit,SCI_TAB,0,0); SendMessage(g_hwndEdit,SCI_SETUSETABS,!bTabsAsSpaces,0); SendMessage(g_hwndEdit,SCI_SETTABINDENTS,bTabIndents,0); - if (token >= 0) EndSelUndoAction(token); + if (token >= 0) EndUndoAction(token); } break; @@ -5106,56 +5056,32 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case CMD_STRINGIFY: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"'",L"'"); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"'",L"'"); break; case CMD_STRINGIFY2: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"\"",L"\""); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"\"",L"\""); break; case CMD_EMBRACE: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"(",L")"); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"(",L")"); break; case CMD_EMBRACE2: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"[",L"]"); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"[",L"]"); break; case CMD_EMBRACE3: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"{",L"}"); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"{",L"}"); break; case CMD_EMBRACE4: - { - int token = BeginSelUndoAction(); - EditEncloseSelection(g_hwndEdit,L"`",L"`"); - EndSelUndoAction(token); - } + EditEncloseSelection(g_hwndEdit,L"`",L"`"); break; @@ -5670,10 +5596,10 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) // check for ADDUNDOACTION step if (scn->modificationType & SC_MOD_CONTAINER) { if (scn->modificationType & SC_PERFORMED_UNDO) { - RestoreSelectionAction(scn->token, UNDO); + RestoreAction(scn->token, UNDO); } else if (scn->modificationType & SC_PERFORMED_REDO) { - RestoreSelectionAction(scn->token, REDO); + RestoreAction(scn->token, REDO); } } else if (scn->modificationType & SC_MOD_CHANGESTYLE) { @@ -5802,10 +5728,10 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) StringCchCompareINA(tchIns, COUNTOF(tchIns), "", -1) && StringCchCompareINA(tchIns, COUNTOF(tchIns), "", -1)) { - int token = BeginSelUndoAction(); + int token = BeginUndoAction(); SendMessage(g_hwndEdit, SCI_REPLACESEL, 0, (LPARAM)tchIns); SendMessage(g_hwndEdit, SCI_SETSEL, iCurPos, iCurPos); - EndSelUndoAction(token); + EndUndoAction(token); } } } @@ -7471,10 +7397,10 @@ void InvalidateSelections() //============================================================================= // -// BeginSelUndoAction() +// BeginUndoAction() // // -int BeginSelUndoAction() +int BeginUndoAction() { int token = -1; UndoRedoSelection_t sel = { -1, -1, -1, -1, -1, 0, 0, 0, 0, 0 }; @@ -7497,7 +7423,7 @@ int BeginSelUndoAction() sel.anchorPos_undo = (int)SendMessage(g_hwndEdit,SCI_GETANCHOR,0,0); sel.currPos_undo = (int)SendMessage(g_hwndEdit,SCI_GETCURRENTPOS,0,0); } - token = UndoRedoSelectionMap(-1, &sel); + token = UndoRedoActionMap(-1, &sel); if (token >= 0) { SendMessage(g_hwndEdit, SCI_BEGINUNDOACTION, 0, 0); SendMessage(g_hwndEdit, SCI_ADDUNDOACTION, (WPARAM)token, 0); @@ -7509,14 +7435,14 @@ int BeginSelUndoAction() //============================================================================= // -// EndSelUndoAction() +// EndUndoAction() // // -void EndSelUndoAction(int token) +void EndUndoAction(int token) { if (token >= 0) { UndoRedoSelection_t sel = { -1, -1, -1, -1, -1, 0, 0, 0, 0, 0 }; - if (UndoRedoSelectionMap(token,&sel) >= 0) { + if (UndoRedoActionMap(token,&sel) >= 0) { // mode and type should not have changed if (sel.selMode == SC_SEL_LINES) { sel.anchorPos_redo = (int)SendMessage(g_hwndEdit,SCI_GETSELECTIONSTART,0,0); @@ -7535,7 +7461,7 @@ void EndSelUndoAction(int token) sel.currPos_redo = (int)SendMessage(g_hwndEdit,SCI_GETCURRENTPOS,0,0); } } - UndoRedoSelectionMap(token,&sel); // set with redo action filled + UndoRedoActionMap(token,&sel); // set with redo action filled SendMessage(g_hwndEdit, SCI_ENDUNDOACTION, 0, 0); } } @@ -7543,13 +7469,13 @@ void EndSelUndoAction(int token) //============================================================================= // -// RestoreSelectionAction() +// RestoreAction() // // -void RestoreSelectionAction(int token, DoAction doAct) +void RestoreAction(int token, DoAction doAct) { UndoRedoSelection_t sel = { -1, -1, -1, -1, -1, 0, 0, 0, 0, 0 }; - if (UndoRedoSelectionMap(token,&sel) >= 0) { + if (UndoRedoActionMap(token,&sel) >= 0) { // we are inside undo/redo transaction, so do delayed PostMessage() instead of SendMessage() int anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); int currPos = (doAct == UNDO ? sel.currPos_undo : sel.currPos_redo); @@ -7585,7 +7511,7 @@ void RestoreSelectionAction(int token, DoAction doAct) // // -int UndoRedoSelectionMap(int token, UndoRedoSelection_t* selection) +int UndoRedoActionMap(int token, UndoRedoSelection_t* selection) { if (UndoRedoSelectionUTArray == NULL) return -1; @@ -8902,7 +8828,7 @@ void CALLBACK WatchTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime) // void CALLBACK PasteBoardTimer(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime) { - if (dwLastCopyTime > 0 && GetTickCount() - dwLastCopyTime > 200) { + if ((dwLastCopyTime > 0) && ((GetTickCount() - dwLastCopyTime) > 200)) { if (SendMessage(g_hwndEdit,SCI_CANPASTE,0,0)) { @@ -8910,15 +8836,15 @@ void CALLBACK PasteBoardTimer(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime) bAutoIndent = 0; EditJumpTo(g_hwndEdit,-1,0); SendMessage(g_hwndEdit,SCI_BEGINUNDOACTION,0,0); - if (SendMessage(g_hwndEdit,SCI_GETLENGTH,0,0) > 0) - SendMessage(g_hwndEdit,SCI_NEWLINE,0,0); + if (SendMessage(g_hwndEdit, SCI_GETLENGTH, 0, 0) > 0) { + SendMessage(g_hwndEdit, SCI_NEWLINE, 0, 0); + } SendMessage(g_hwndEdit,SCI_PASTE,0,0); SendMessage(g_hwndEdit,SCI_NEWLINE,0,0); SendMessage(g_hwndEdit,SCI_ENDUNDOACTION,0,0); EditEnsureSelectionVisible(g_hwndEdit); bAutoIndent = bAutoIndent2; } - dwLastCopyTime = 0; } diff --git a/src/Notepad3.h b/src/Notepad3.h index a378200b6..0b2eb6234 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -150,10 +150,10 @@ void UpdateUI(); void InvalidateSelections(); -int BeginSelUndoAction(); -void EndSelUndoAction(int); -void RestoreSelectionAction(int,DoAction); -int UndoRedoSelectionMap(int,UndoRedoSelection_t*); +int BeginUndoAction(); +void EndUndoAction(int); +void RestoreAction(int,DoAction); +int UndoRedoActionMap(int,UndoRedoSelection_t*); void OpenHotSpotURL(int, BOOL);