From 5e78d51abef749d982d15eccfc775fb1853a8b89 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Wed, 28 Aug 2019 09:48:17 +0200 Subject: [PATCH] + fix: new undo transaction split + chg: menu entry of undo transaction split at line-breaks --- Versions/build.txt | 2 +- language/np3_af_za/menu_af_za.rc | 2 +- language/np3_be_by/menu_be_by.rc | 2 +- language/np3_de_de/menu_de_de.rc | 2 +- language/np3_en_gb/menu_en_gb.rc | 2 +- language/np3_en_us/menu_en_us.rc | 2 +- language/np3_es_es/menu_es_es.rc | 2 +- language/np3_fr_fr/menu_fr_fr.rc | 2 +- language/np3_hu_hu/menu_hu_hu.rc | 2 +- language/np3_it_it/menu_it_it.rc | 2 +- language/np3_ja_jp/menu_ja_jp.rc | 2 +- language/np3_ko_kr/menu_ko_kr.rc | 2 +- language/np3_nl_nl/menu_nl_nl.rc | 2 +- language/np3_pl_pl/menu_pl_pl.rc | 2 +- language/np3_pt_br/menu_pt_br.rc | 2 +- language/np3_ru_ru/menu_ru_ru.rc | 2 +- language/np3_sk_sk/menu_sk_sk.rc | 2 +- language/np3_sv_se/menu_sv_se.rc | 2 +- language/np3_tr_tr/menu_tr_tr.rc | 2 +- language/np3_zh_cn/menu_zh_cn.rc | 2 +- res/Notepad3.exe.manifest.conf | 2 +- src/Notepad3.c | 72 ++++++++++++++++---------------- src/SciCall.h | 1 + src/VersionEx.h | 4 +- 24 files changed, 59 insertions(+), 60 deletions(-) diff --git a/Versions/build.txt b/Versions/build.txt index d00194588..e9767b95a 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2601 +2602 diff --git a/language/np3_af_za/menu_af_za.rc b/language/np3_af_za/menu_af_za.rc index babfbe4f5..e570abbd2 100644 --- a/language/np3_af_za/menu_af_za.rc +++ b/language/np3_af_za/menu_af_za.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boe&kmerke" diff --git a/language/np3_be_by/menu_be_by.rc b/language/np3_be_by/menu_be_by.rc index d95fbacfd..316496cad 100644 --- a/language/np3_be_by/menu_be_by.rc +++ b/language/np3_be_by/menu_be_by.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM " & \tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "& \tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "&" diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index b33b11217..d2467ef9e 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Selektiere &Wort oder Zeile\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multiselektion &aller Fundstellen\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Neue Undo &Tippsequenz bei Zeilenumbruch", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Neue Undo &Transaktion bei Zeilenumbruch", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Lesezeichen" diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc index eab9d2843..61e46f736 100644 --- a/language/np3_en_gb/menu_en_gb.rc +++ b/language/np3_en_gb/menu_en_gb.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index 1e113d121..c80662357 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_es_es/menu_es_es.rc b/language/np3_es_es/menu_es_es.rc index c002fdad7..594f43e16 100644 --- a/language/np3_es_es/menu_es_es.rc +++ b/language/np3_es_es/menu_es_es.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Seleccionar &palabra o lneas\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-seleccin &todas coincidencias\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "&Marcadores" diff --git a/language/np3_fr_fr/menu_fr_fr.rc b/language/np3_fr_fr/menu_fr_fr.rc index 32d8cfdae..baf7f6aab 100644 --- a/language/np3_fr_fr/menu_fr_fr.rc +++ b/language/np3_fr_fr/menu_fr_fr.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Slectionner &mot ou lignes\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-slection &toutes correspondances\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Sig&nets" diff --git a/language/np3_hu_hu/menu_hu_hu.rc b/language/np3_hu_hu/menu_hu_hu.rc index ad4606de0..7e6ef4f22 100644 --- a/language/np3_hu_hu/menu_hu_hu.rc +++ b/language/np3_hu_hu/menu_hu_hu.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Sz vag&y sorok kijellse\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "sszes egyezs ki&jellse\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Kny&vjelzk" diff --git a/language/np3_it_it/menu_it_it.rc b/language/np3_it_it/menu_it_it.rc index 80ba3de1f..838920c0e 100644 --- a/language/np3_it_it/menu_it_it.rc +++ b/language/np3_it_it/menu_it_it.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Seleziona &Parola o Linea\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Selezione di &tutte le occorrenze\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_ja_jp/menu_ja_jp.rc b/language/np3_ja_jp/menu_ja_jp.rc index 1a74efb8d..13f515c39 100644 --- a/language/np3_ja_jp/menu_ja_jp.rc +++ b/language/np3_ja_jp/menu_ja_jp.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "PsI(&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "v镶񂷂ׂĂɃ}`J[\(&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "ubN}[N()(&K)" diff --git a/language/np3_ko_kr/menu_ko_kr.rc b/language/np3_ko_kr/menu_ko_kr.rc index 08ead08c7..d6845734e 100644 --- a/language/np3_ko_kr/menu_ko_kr.rc +++ b/language/np3_ko_kr/menu_ko_kr.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "ܾ Ǵ (&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM " ġ ׸ (&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "å(&K)" diff --git a/language/np3_nl_nl/menu_nl_nl.rc b/language/np3_nl_nl/menu_nl_nl.rc index b47eb1620..2ca8e9a51 100644 --- a/language/np3_nl_nl/menu_nl_nl.rc +++ b/language/np3_nl_nl/menu_nl_nl.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Selectie &woord of lijnen\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-selectie alle Matching\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Blad&wijzers" diff --git a/language/np3_pl_pl/menu_pl_pl.rc b/language/np3_pl_pl/menu_pl_pl.rc index a62da3b9a..488f98943 100644 --- a/language/np3_pl_pl/menu_pl_pl.rc +++ b/language/np3_pl_pl/menu_pl_pl.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Zaznacz wyraz lub wiersz\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multiwybr-wszystko pasujce\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Zakadki" diff --git a/language/np3_pt_br/menu_pt_br.rc b/language/np3_pt_br/menu_pt_br.rc index 1d59119f9..ef013f4de 100644 --- a/language/np3_pt_br/menu_pt_br.rc +++ b/language/np3_pt_br/menu_pt_br.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_ru_ru/menu_ru_ru.rc b/language/np3_ru_ru/menu_ru_ru.rc index 3713eac88..b90215749 100644 --- a/language/np3_ru_ru/menu_ru_ru.rc +++ b/language/np3_ru_ru/menu_ru_ru.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM " & \tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "& \tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "&" diff --git a/language/np3_sk_sk/menu_sk_sk.rc b/language/np3_sk_sk/menu_sk_sk.rc index c43238d33..62bffab2f 100644 --- a/language/np3_sk_sk/menu_sk_sk.rc +++ b/language/np3_sk_sk/menu_sk_sk.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_sv_se/menu_sv_se.rc b/language/np3_sv_se/menu_sv_se.rc index 7050a0e8d..3fc5d7438 100644 --- a/language/np3_sv_se/menu_sv_se.rc +++ b/language/np3_sv_se/menu_sv_se.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_tr_tr/menu_tr_tr.rc b/language/np3_tr_tr/menu_tr_tr.rc index b2b444255..f8942c0cd 100644 --- a/language/np3_tr_tr/menu_tr_tr.rc +++ b/language/np3_tr_tr/menu_tr_tr.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "Boo&kmarks" diff --git a/language/np3_zh_cn/menu_zh_cn.rc b/language/np3_zh_cn/menu_zh_cn.rc index 6e2fe247a..821888b6c 100644 --- a/language/np3_zh_cn/menu_zh_cn.rc +++ b/language/np3_zh_cn/menu_zh_cn.rc @@ -270,7 +270,7 @@ BEGIN MENUITEM "ѡʻ(&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD MENUITEM "ѡȫƥ(&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES MENUITEM SEPARATOR - MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK + MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK END MENUITEM SEPARATOR POPUP "ǩ(&K)" diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index d25f82f33..dc9850caf 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/src/Notepad3.c b/src/Notepad3.c index 9b706dbdb..c2f4c97ed 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -386,12 +386,12 @@ static bool _InUndoRedoTransaction(); static void _SaveRedoSelection(int token); static int _SaveUndoSelection(); static int _UndoRedoActionMap(int token, UndoRedoSelection_t** selection); -static void _SplitUndoTransaction(); +static void _SplitUndoTransaction(const int iModType); // ---------------------------------------------------------------------------- static void _DelayClearZoomCallTip(int delay); -static void _DelayUndoRedoTypingSequenceSplit(int delay); +static void _DelaySplitUndoTransaction(int delay, int iModType); #ifdef _EXTRA_DRAG_N_DROP_HANDLER_ static CLIPFORMAT cfDrpF = CF_HDROP; @@ -465,26 +465,23 @@ static int msgcmp(void* mqc1, void* mqc2) static void _MQ_AppendCmd(CmdMessageQueue_t* const pMsgQCmd, int cycles) { + if (!pMsgQCmd) { return; } + CmdMessageQueue_t* pmqc = NULL; DL_SEARCH(MessageQueue, pmqc, pMsgQCmd, msgcmp); if (!pmqc) { // NOT found - pmqc = AllocMem(sizeof(CmdMessageQueue_t), HEAP_ZERO_MEMORY); - pmqc->hwnd = pMsgQCmd->hwnd; - pmqc->cmd = pMsgQCmd->cmd; - pmqc->wparam = pMsgQCmd->wparam; - pmqc->lparam = pMsgQCmd->lparam; + pmqc = pMsgQCmd; pmqc->delay = cycles; DL_APPEND(MessageQueue, pmqc); } - - if (cycles < 2) { - pmqc->delay = -1; // execute now (do not use PostMessage() here) - SendMessage(pMsgQCmd->hwnd, pMsgQCmd->cmd, pMsgQCmd->wparam, pMsgQCmd->lparam); - } else { pmqc->delay = (pmqc->delay + cycles) / 2; // increase delay } + if (pmqc->delay < 2) { + pmqc->delay = -1; // execute now (do not use PostMessage() here) + SendMessage(pMsgQCmd->hwnd, pMsgQCmd->cmd, pMsgQCmd->wparam, pMsgQCmd->lparam); + } } // ---------------------------------------------------------------------------- @@ -732,7 +729,7 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized) DL_FOREACH_SAFE(MessageQueue, pmqc, dummy) { DL_DELETE(MessageQueue, pmqc); - FreeMem(pmqc); + //~FreeMem(pmqc); // No AllocMem Anymore } if (UndoRedoSelectionUTArray != NULL) { @@ -3484,7 +3481,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; case IDT_TIMER_UNDO_REDO_SPLIT: - _SplitUndoTransaction(); + _SplitUndoTransaction((int)lParam); break; @@ -3864,18 +3861,19 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_EDIT_CUT: { - if (s_flagPasteBoard) + if (s_flagPasteBoard) { s_bLastCopyFromMe = true; - - _BEGIN_UNDO_ACTION_ - if (!SciCall_IsSelectionEmpty()) - { - SciCall_Cut(); } - else { // VisualStudio behavior + _BEGIN_UNDO_ACTION_ + if (SciCall_IsSelectionEmpty()) + { + // VisualStudio behavior SciCall_CopyAllowLine(); SciCall_LineDelete(); } + else { + SciCall_Cut(); + } _END_UNDO_ACTION_ UpdateToolbar(); } @@ -4028,13 +4026,14 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) _END_UNDO_ACTION_ break; + case IDM_EDIT_CUTLINE: { if (s_flagPasteBoard) { s_bLastCopyFromMe = true; } _BEGIN_UNDO_ACTION_ - SendMessage(Globals.hwndEdit,SCI_LINECUT,0,0); + SciCall_LineCut(); _END_UNDO_ACTION_ UpdateToolbar(); } @@ -6993,12 +6992,10 @@ inline static LRESULT _MsgNotifyLean(const LPNMHDR pnmh, const SCNotification* c DWORD const timeout = Settings2.UndoRedoSplitTimeout; if (timeout != 0UL) { if (timeout > _MQ_IMMEDIATE) { - _DelayUndoRedoTypingSequenceSplit(timeout); + _DelaySplitUndoTransaction(timeout, iModType); } else { - if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) { - _SplitUndoTransaction(); - } + _SplitUndoTransaction(iModType); } } _SetSaveNeededFlag(true); @@ -7091,20 +7088,18 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific UpdateVisibleHotspotIndicators(); if (scn->linesAdded != 0) { - if (Settings.SplitUndoTypingSeqOnLnBreak) { - _SplitUndoTransaction(); + if (Settings.SplitUndoTypingSeqOnLnBreak && (scn->linesAdded == 1)) { + _SplitUndoTransaction(iModType); } UpdateMarginWidth(); } DWORD const timeout = Settings2.UndoRedoSplitTimeout; if (timeout != 0UL) { if (timeout > _MQ_IMMEDIATE) { - _DelayUndoRedoTypingSequenceSplit(timeout); + _DelaySplitUndoTransaction(timeout, iModType); } else { - if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) { - _SplitUndoTransaction(); - } + _SplitUndoTransaction(iModType); } } _SetSaveNeededFlag(true); @@ -8051,11 +8046,11 @@ static void _DelayClearZoomCallTip(int delay) // _DelayClearZoomCallTip() // // -static void _DelayUndoRedoTypingSequenceSplit(int delay) +static void _DelaySplitUndoTransaction(int delay, int iModType) { static CmdMessageQueue_t mqc = MQ_WM_CMD_INIT(IDT_TIMER_UNDO_REDO_SPLIT, 0); mqc.hwnd = Globals.hwndMain; - //mqc.lparam = (LPARAM)bForceRedraw; + mqc.lparam = (LPARAM)iModType; _MQ_AppendCmd(&mqc, (UINT)(delay <= 0 ? 0 : _MQ_ms(delay))); } @@ -9312,10 +9307,13 @@ static int _UndoRedoActionMap(int token, UndoRedoSelection_t** selection) // _SplitUndoTransaction() // // -static void _SplitUndoTransaction() { +static void _SplitUndoTransaction(const int iModType) +{ if (!_InUndoRedoTransaction()) { - SciCall_BeginUndoAction(); - SciCall_EndUndoAction(); + if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) { + SciCall_BeginUndoAction(); + SciCall_EndUndoAction(); + } } } diff --git a/src/SciCall.h b/src/SciCall.h index 94ce8e361..0823e3af8 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -219,6 +219,7 @@ DeclareSciCallR2(FindText, FINDTEXT, DocPos, int, flags, struct Sci_TextToFind*, // Operations DeclareSciCallV0(Cut, CUT) +DeclareSciCallV0(LineCut, LINECUT) DeclareSciCallV0(Copy, COPY) DeclareSciCallV0(Paste, PASTE) DeclareSciCallV0(Clear, CLEAR) diff --git a/src/VersionEx.h b/src/VersionEx.h index 49139491c..311e1ce13 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -7,8 +7,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 19 -#define VERSION_REV 827 -#define VERSION_BUILD 2601 +#define VERSION_REV 828 +#define VERSION_BUILD 2602 #define SCINTILLA_VER 420 #define ONIGURUMA_REGEX_VER 6.9.3 #define UCHARDET_VER 2018.09.27