From f03cec2c1694539e7a838bca93a61ded18f74f8c Mon Sep 17 00:00:00 2001 From: RaiKoHoff Date: Thu, 30 Jan 2020 13:08:11 +0100 Subject: [PATCH] +fix: Find/Replace Dialog behavior --- Versions/build.txt | 2 +- res/Notepad3.exe.manifest.conf | 2 +- src/Edit.c | 121 ++++++++++++++------------------- src/Edit.h | 6 +- src/Notepad3.c | 40 +++-------- src/SciCall.h | 1 + src/VersionEx.h | 4 +- 7 files changed, 71 insertions(+), 105 deletions(-) diff --git a/Versions/build.txt b/Versions/build.txt index a2d0cbfb5..569dadea4 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2717 +2718 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index b55221bbb..e737c86a4 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/src/Edit.c b/src/Edit.c index afa3133fa..4b59fe534 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -2416,30 +2416,30 @@ void EditMoveDown(HWND hwnd) //============================================================================= // -// EditJumpToSelectionStart() +// EditSetCaretToSelectionStart() // -void EditJumpToSelectionStart(HWND hwnd) +DocPos EditSetCaretToSelectionStart() { - UNUSED(hwnd); if (!Sci_IsMultiSelection()) { if (SciCall_GetCurrentPos() != SciCall_GetSelectionStart()) { SciCall_SwapMainAnchorCaret(); } } + return SciCall_GetSelectionStart(); } //============================================================================= // -// EditJumpToSelectionEnd() +// EditSetCaretToSelectionEnd() // -void EditJumpToSelectionEnd(HWND hwnd) +DocPos EditSetCaretToSelectionEnd() { - UNUSED(hwnd); if (!Sci_IsMultiSelection()) { if (SciCall_GetCurrentPos() != SciCall_GetSelectionEnd()) { SciCall_SwapMainAnchorCaret(); } } + return SciCall_GetSelectionEnd(); } @@ -4666,13 +4666,13 @@ void EditSetSelectionEx(HWND hwnd, DocPos iAnchorPos, DocPos iCurrentPos, DocPos iCurrentPos = Sci_GetDocEndPosition(); } - DocLn const iNewLine = SciCall_LineFromPosition(iCurrentPos); + DocLn const iCurrentLine = SciCall_LineFromPosition(iCurrentPos); DocLn const iAnchorLine = SciCall_LineFromPosition(iAnchorPos); // 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 != iNewLine) { SciCall_EnsureVisible(iNewLine); } + if (iAnchorLine != iCurrentLine) { SciCall_EnsureVisible(iCurrentLine); } if ((vSpcAnchor >= 0) && (vSpcCurrent >= 0)) { SciCall_SetRectangularSelectionAnchor(iAnchorPos); @@ -4683,7 +4683,6 @@ void EditSetSelectionEx(HWND hwnd, DocPos iAnchorPos, DocPos iCurrentPos, DocPos if (vSpcCurrent > 0) { SciCall_SetRectangularSelectionCaretVirtualSpace(vSpcCurrent); } - SciCall_ScrollRange(iAnchorPos, iCurrentPos); } else { SciCall_SetSel(iAnchorPos, iCurrentPos); // scrolls into view @@ -4700,31 +4699,18 @@ void EditSetSelectionEx(HWND hwnd, DocPos iAnchorPos, DocPos iCurrentPos, DocPos // // EditEnsureSelectionVisible() // -void EditEnsureSelectionVisible(HWND hwnd) +void EditEnsureSelectionVisible() { - DocPos iAnchorPos = 0; - DocPos iCurrentPos = 0; - DocPos iAnchorPosVS = -1; - DocPos iCurPosVS = -1; + DocLn const iCurrentLine = SciCall_LineFromPosition(SciCall_GetCurrentPos()); + DocLn const iAnchorLine = SciCall_LineFromPosition(SciCall_GetAnchor()); - if (SciCall_IsSelectionRectangle()) - { - iAnchorPos = SciCall_GetRectangularSelectionAnchor(); - iCurrentPos = SciCall_GetRectangularSelectionCaret(); - iAnchorPosVS = SciCall_GetRectangularSelectionAnchorVirtualSpace(); - iCurPosVS = SciCall_GetRectangularSelectionCaretVirtualSpace(); - } - else if (Sci_IsMultiSelection()) { - iAnchorPos = SciCall_GetSelectionNAnchor(0); - iCurrentPos = SciCall_GetSelectionNCaret(0); - iAnchorPosVS = SciCall_GetSelectionNAnchorVirtualSpace(0); - iCurPosVS = SciCall_GetSelectionNCaretVirtualSpace(0); - } - else { - iAnchorPos = SciCall_GetAnchor(); - iCurrentPos = SciCall_GetCurrentPos(); - } - EditSetSelectionEx(hwnd, iAnchorPos, iCurrentPos, iAnchorPosVS, iCurPosVS); + // 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); } + + //SciCall_ScrollRange(SciCall_GetAnchor(), SciCall_GetCurrentPos()); + EditScrollTo(iCurrentLine, Settings2.CurrentLineVerticalSlop); } @@ -5406,6 +5392,9 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara // the global static Find/Replace data structure SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)lParam); if (Globals.hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Globals.hDlgIcon); } + + EditSetCaretToSelectionStart(); // avoid search text selection jumps to next match (before ResizeDlg_InitX()) + ResizeDlg_InitX(hwnd, Settings.FindReplaceDlgSizeX, IDC_RESIZEGRIP); sg_pefrData = (LPEDITFINDREPLACE)GetWindowLongPtr(hwnd, DWLP_USER); @@ -5558,19 +5547,15 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara hBrushGreen = CreateSolidBrush(rgbGreenColorRef); hBrushBlue = CreateSolidBrush(rgbBlueColorRef); + s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialAnchorPos = SciCall_GetAnchor(); s_InitialCaretPos = SciCall_GetCurrentPos(); s_InitialTopLine = SciCall_GetFirstVisibleLine(); - // find first occurrence of clip-board text - //if (!Sci_IsMultiOrRectangleSelection() && SciCall_IsSelectionEmpty()) { - // PostWMCommand(hwnd, IDOK); - //} - SetTimer(hwnd, IDT_TIMER_MRKALL, USER_TIMER_MINIMUM, MQ_ExecuteNext); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); - + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); + } return true; @@ -5623,7 +5608,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara EditSetSelectionEx(sg_pefrData->hwnd, s_InitialAnchorPos, s_InitialCaretPos, -1, -1); } else { - EditEnsureSelectionVisible(sg_pefrData->hwnd); + EditEnsureSelectionVisible(); } } @@ -5688,17 +5673,17 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara case WA_ACTIVE: SetWindowTransparentMode(hwnd, false, 100); - s_fwrdMatch = NO_MATCH; - s_InitialSearchStart = SciCall_GetSelectionStart(); - + // selection changed ? if (s_InitialTopLine < 0) { s_InitialAnchorPos = SciCall_GetAnchor(); s_InitialCaretPos = SciCall_GetCurrentPos(); s_InitialTopLine = SciCall_GetFirstVisibleLine(); + s_InitialSearchStart = s_InitialCaretPos; + s_fwrdMatch = NO_MATCH; } if (!SciCall_IsSelectionEmpty()) { - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } bool const bEnableReplInSel = !(SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection()); @@ -5764,7 +5749,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara } // no recent find pattern: copy content clipboard to find box if (s_tchBuf[0] == L'\0') { - char* pClip = EditGetClipboardText(Globals.hwndEdit, false, NULL, NULL); + char* const pClip = EditGetClipboardText(Globals.hwndEdit, false, NULL, NULL); if (pClip) { size_t const len = StringCchLenA(pClip, 0); if (len) { @@ -5799,9 +5784,11 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara SetDlgItemText(hwnd, IDC_FINDTEXT, s_tchBuf); GetDlgItemTextW2MB(hwnd, IDC_FINDTEXT, szFind, COUNTOF(szFind)); } - Globals.bFindReplCopySelOrClip = false; + s_anyMatch = s_fwrdMatch = NO_MATCH; - } + Globals.bFindReplCopySelOrClip = false; + + } // Globals.bFindReplCopySelOrClip GetDlgItemTextW2MB(hwnd, IDC_FINDTEXT, szCmpBuf, COUNTOF(szCmpBuf)); if ((StringCchCompareXA(szCmpBuf, szFind) != 0)) { @@ -5834,7 +5821,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara _SetSearchFlags(hwnd, sg_pefrData); - if (HIWORD(wParam) == CBN_EDITCHANGE) { + if ((HIWORD(wParam) == CBN_EDITCHANGE)) { _DelayMarkAll(hwnd, 50, s_InitialSearchStart); } } @@ -5895,7 +5882,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) { DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, true); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); } else { // switched OFF DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, false); @@ -5919,7 +5906,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara } s_InitialTopLine = -1; // reset EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); } break; @@ -5939,13 +5926,13 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(s_SaveTFBackSlashes)); } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_DOT_MATCH_ALL: if (!sg_pefrData) { break; } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_WILDCARDSEARCH: @@ -5963,7 +5950,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(s_SaveTFBackSlashes)); } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_FINDTRANSFORMBS: @@ -5990,26 +5977,26 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara } } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); } break; case IDC_FINDCASE: if (!sg_pefrData) { break; } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_FINDWORD: if (!sg_pefrData) { break; } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_FINDSTART: if (!sg_pefrData) { break; } _SetSearchFlags(hwnd, sg_pefrData); - _DelayMarkAll(hwnd, 0, s_InitialSearchStart); + _DelayMarkAll(hwnd, 50, s_InitialSearchStart); break; case IDC_TRANSPARENT: @@ -6101,7 +6088,6 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara case IDOK: // find next case IDACC_SELTONEXT: if (!bIsFindDlg) { Globals.bReplaceInitialized = true; } - if (!SciCall_IsSelectionEmpty()) { EditJumpToSelectionEnd(sg_pefrData->hwnd); } EditFindNext(sg_pefrData->hwnd, sg_pefrData, (LOWORD(wParam) == IDACC_SELTONEXT), IsKeyDown(VK_F3)); s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialAnchorPos = SciCall_GetAnchor(); @@ -6112,9 +6098,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara case IDC_FINDPREV: // find previous case IDACC_SELTOPREV: if (!bIsFindDlg) { Globals.bReplaceInitialized = true; } - if (!SciCall_IsSelectionEmpty()) { EditJumpToSelectionStart(sg_pefrData->hwnd); } EditFindPrev(sg_pefrData->hwnd, sg_pefrData, (LOWORD(wParam) == IDACC_SELTOPREV), IsKeyDown(VK_F3)); - s_InitialSearchStart = SciCall_GetSelectionEnd(); + s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialAnchorPos = SciCall_GetAnchor(); s_InitialCaretPos = SciCall_GetCurrentPos(); s_InitialTopLine = -1; // reset @@ -6186,8 +6171,6 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara break; case IDACC_FINDNEXT: - //SetFocus(Globals.hwndMain); - //SetForegroundWindow(Globals.hwndMain); PostWMCommand(hwnd, IDOK); break; @@ -6358,11 +6341,11 @@ bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo if (slen <= 0) { return false; } int const sFlags = (int)(lpefr->fuFlags); - if (bFocusWnd) + if (bFocusWnd) { SetFocus(hwnd); - + } DocPos const iDocEndPos = Sci_GetDocEndPosition(); - DocPos start = SciCall_IsSelectionEmpty() ? SciCall_GetCurrentPos() : SciCall_GetSelectionEnd(); + DocPos start = EditSetCaretToSelectionEnd(); DocPos end = iDocEndPos; if (start >= end) { @@ -6436,15 +6419,15 @@ bool EditFindPrev(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo char szFind[FNDRPL_BUFFER]; bool bSuppressNotFound = false; - if (bFocusWnd) + if (bFocusWnd) { SetFocus(hwnd); - + } DocPos const slen = _EditGetFindStrg(hwnd, lpefr, szFind, COUNTOF(szFind)); if (slen <= 0) { return false; } int const sFlags = (int)(lpefr->fuFlags); DocPos const iDocEndPos = Sci_GetDocEndPosition(); - DocPos start = SciCall_IsSelectionEmpty() ? SciCall_GetCurrentPos() : SciCall_GetSelectionStart(); + DocPos start = EditSetCaretToSelectionStart(); DocPos end = 0; if (start <= end) { @@ -8555,7 +8538,7 @@ void EditToggleFolds(FOLD_ACTION action, bool bForceAll) fToggled |= _FoldToggleNode(ln, action); } } - if (fToggled) { EditEnsureSelectionVisible(Globals.hwndEdit); } + if (fToggled) { EditEnsureSelectionVisible(); } } } } diff --git a/src/Edit.h b/src/Edit.h index 0fed1c7ff..b00c382e7 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -59,8 +59,8 @@ void EditSpacesToTabs(HWND hwnd,int nTabWidth,bool); void EditMoveUp(HWND hwnd); void EditMoveDown(HWND hwnd); -void EditJumpToSelectionEnd(HWND hwnd); -void EditJumpToSelectionStart(HWND hwnd); +DocPos EditSetCaretToSelectionStart(); +DocPos EditSetCaretToSelectionEnd(); void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend); void EditIndentBlock(HWND hwnd,int cmd, bool bFormatIndentation, bool bForceAll); void EditAlignText(HWND hwnd,int nMode); @@ -85,7 +85,7 @@ const DOCVIEWPOS_T EditGetCurrentDocView(HWND hwnd); void EditSetDocView(HWND hwnd, const DOCVIEWPOS_T docView); void EditSetSelectionEx(HWND hwnd, DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcAnchor, DocPos vSpcCurrent); void EditFixPositions(HWND hwnd); -void EditEnsureSelectionVisible(HWND hwnd); +void EditEnsureSelectionVisible(); void EditEnsureConsistentLineEndings(HWND hwnd); void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt); diff --git a/src/Notepad3.c b/src/Notepad3.c index 59eaab34a..450dc359c 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1379,7 +1379,7 @@ HWND InitInstance(HINSTANCE hInstance,LPCWSTR pszCmdLine,int nCmdShow) if (s_flagJumpTo) EditJumpTo(Globals.hwndEdit, s_iInitialLine, s_iInitialColumn); else - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } } @@ -1408,14 +1408,14 @@ HWND InitInstance(HINSTANCE hInstance,LPCWSTR pszCmdLine,int nCmdShow) Settings.EFR_Data.bTransformBS = true; if (s_flagMatchText & 2) { - if (!s_flagJumpTo) { SendMessage(Globals.hwndEdit, SCI_DOCUMENTEND, 0, 0); } + if (!s_flagJumpTo) { SciCall_DocumentEnd(); } EditFindPrev(Globals.hwndEdit,&Settings.EFR_Data,false,false); - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } else { - if (!s_flagJumpTo) { SendMessage(Globals.hwndEdit, SCI_DOCUMENTSTART, 0, 0); } + if (!s_flagJumpTo) { SciCall_DocumentStart(); } EditFindNext(Globals.hwndEdit,&Settings.EFR_Data,false,false); - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } } LocalFree(s_lpMatchArg); // StrDup() @@ -4945,16 +4945,10 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) switch (iLoWParam) { case IDM_EDIT_FINDNEXT: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionEnd(Globals.hwndEdit); - } EditFindNext(Globals.hwndEdit,&Settings.EFR_Data,false,false); break; case IDM_EDIT_FINDPREV: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionStart(Globals.hwndEdit); - } EditFindPrev(Globals.hwndEdit,&Settings.EFR_Data,false,false); break; @@ -4968,16 +4962,10 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; case IDM_EDIT_SELTONEXT: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionEnd(Globals.hwndEdit); - } EditFindNext(Globals.hwndEdit,&Settings.EFR_Data,true,false); break; case IDM_EDIT_SELTOPREV: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionStart(Globals.hwndEdit); - } EditFindPrev(Globals.hwndEdit,&Settings.EFR_Data,true,false); break; } @@ -5022,16 +5010,10 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; case CMD_FINDNEXTSEL: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionEnd(Globals.hwndEdit); - } EditFindNext(Globals.hwndEdit, &Settings.EFR_Data, false, false); break; case CMD_FINDPREVSEL: - if (!SciCall_IsSelectionEmpty()) { - EditJumpToSelectionStart(Globals.hwndEdit); - } EditFindPrev(Globals.hwndEdit, &Settings.EFR_Data, false, false); break; } @@ -5099,7 +5081,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) Globals.fvCurFile.bWordWrap = !Globals.fvCurFile.bWordWrap; Settings.WordWrap = Globals.fvCurFile.bWordWrap; _SetWrapIndentMode(Globals.hwndEdit); - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); UpdateToolbar(); break; @@ -6171,12 +6153,12 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case CMD_JUMP2SELSTART: - EditJumpToSelectionStart(Globals.hwndEdit); + EditSetCaretToSelectionStart(); SciCall_ChooseCaretX(); break; case CMD_JUMP2SELEND: - EditJumpToSelectionEnd(Globals.hwndEdit); + EditSetCaretToSelectionEnd(); SciCall_ChooseCaretX(); break; @@ -9694,7 +9676,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, SciCall_NewLine(); _END_UNDO_ACTION_ SciCall_DocumentEnd(); - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } // set historic caret/selection pos else if ((iCaretPos >= 0) && (iAnchorPos >= 0)) @@ -9819,7 +9801,7 @@ bool FileRevert(LPCWSTR szFileName, bool bIgnoreCmdLnEnc) SciCall_ClearSelections(); bPreserveView = false; SciCall_DocumentEnd(); - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); } } @@ -10948,7 +10930,7 @@ void CALLBACK PasteBoardTimer(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime) SendMessage(Globals.hwndEdit,SCI_PASTE,0,0); SendMessage(Globals.hwndEdit,SCI_NEWLINE,0,0); _END_UNDO_ACTION_ - EditEnsureSelectionVisible(Globals.hwndEdit); + EditEnsureSelectionVisible(); Settings.AutoIndent = bAutoIndent2; } s_dwLastCopyTime = 0; diff --git a/src/SciCall.h b/src/SciCall.h index 66d69b0c3..3b9487a5d 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -268,6 +268,7 @@ DeclareSciCallV1(SetMultiPaste, SETMULTIPASTE, int, option) DeclareSciCallV1(GotoPos, GOTOPOS, DocPos, position) DeclareSciCallV1(GotoLine, GOTOLINE, DocLn, line) +DeclareSciCallV0(DocumentStart, DOCUMENTSTART) DeclareSciCallV0(DocumentEnd, DOCUMENTEND) DeclareSciCallR1(PositionBefore, POSITIONBEFORE, DocPos, DocPos, position) DeclareSciCallR1(PositionAfter, POSITIONAFTER, DocPos, DocPos, position) diff --git a/src/VersionEx.h b/src/VersionEx.h index 1f4e0237d..d284dfb40 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -8,8 +8,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 20 -#define VERSION_REV 129 -#define VERSION_BUILD 2717 +#define VERSION_REV 130 +#define VERSION_BUILD 2718 #define SCINTILLA_VER 430 #define ONIGURUMA_REGEX_VER 6.9.4 #define UCHARDET_VER 2018.09.27