From 61ad7594d3843b66ca028172a4a1af4bb4dabeba Mon Sep 17 00:00:00 2001 From: RaiKoHoff Date: Tue, 14 Apr 2020 11:35:30 +0200 Subject: [PATCH] + fix: view selection on wrapped long-lines --- src/Edit.c | 15 +++++++-------- src/Notepad3.c | 11 ++++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index 574833c80..b42572cc1 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -4959,11 +4959,12 @@ void EditSetSelectionEx(DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcAnchor if (vSpcCurrent > 0) { SciCall_SetRectangularSelectionCaretVirtualSpace(vSpcCurrent); } + EditEnsureSelectionVisible(); } else { SciCall_SetSel(iAnchorPos, iCurrentPos); // scrolls into view + SciCall_ChooseCaretX(); } - EditNormalizeView(Sci_GetCurrentLineNumber()); // normalize view } UpdateToolbar(); UpdateStatusbar(false); @@ -5006,15 +5007,12 @@ void EditNormalizeView(const DocLn iDocLine) // void EditEnsureSelectionVisible() { + // Ensure that the first and last lines of a selection are always unfolded DocLn const iCurrentLine = SciCall_LineFromPosition(SciCall_GetCurrentPos()); DocLn const iAnchorLine = SciCall_LineFromPosition(SciCall_GetAnchor()); - - // Ensure that the first and last lines of a selection are always unfolded - // This needs to be done *before* the SCI_SETSEL message SciCall_EnsureVisible(iAnchorLine); - if (iAnchorLine != iCurrentLine) { SciCall_EnsureVisible(iCurrentLine); } - - Sci_ScrollToCurrentLine(); // normalize view + Sci_ScrollToLine(iCurrentLine); + Sci_ScrollChooseCaret(); } @@ -6810,7 +6808,8 @@ void EditSelectionMultiSelectAll() if (iMainAnchor > iMainCaret) { SciCall_SwapMainAnchorCaret(); } - EditNormalizeView(Sci_GetCurrentLineNumber()); // normalize view + //~EditNormalizeView(Sci_GetCurrentLineNumber()); + EditEnsureSelectionVisible(); SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore diff --git a/src/Notepad3.c b/src/Notepad3.c index 07553f040..25120987e 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -4817,7 +4817,8 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_EDIT_SELTONEXT: { SciCall_RotateSelection(); - EditNormalizeView(Sci_GetCurrentLineNumber()); + //~EditNormalizeView(Sci_GetCurrentLineNumber()); + EditEnsureSelectionVisible(); } break; @@ -4830,7 +4831,8 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) DocPosU const iNewMain = SciCall_GetSelections() - 1; SciCall_SetMainSelection(iNewMain); } - EditNormalizeView(Sci_GetCurrentLineNumber()); // normalize view + //~EditNormalizeView(Sci_GetCurrentLineNumber()); + EditEnsureSelectionVisible(); } break; @@ -5264,7 +5266,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) FileWatching.AutoReloadTimeout = Settings2.AutoReloadTimeout; UndoRedoRecordingStart(); SciCall_SetEndAtLastLine(!Settings.ScrollPastEOF); - EditNormalizeView(Sci_GetCurrentLineNumber()); // normalize view + EditNormalizeView(Sci_GetCurrentLineNumber()); } InstallFileWatching(Globals.CurrentFile); // force @@ -9527,8 +9529,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, // set historic caret/selection pos else if ((iCaretPos >= 0) && (iAnchorPos >= 0)) { - SciCall_SetSel(iAnchorPos, iCaretPos); // scroll into view - EditNormalizeView(Sci_GetCurrentLineNumber()); + EditSetSelectionEx(iAnchorPos, iCaretPos, 0, 0); } }