From 90109c967a44c77f8664a95b07e065d24da1b81d Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Sun, 9 Jul 2023 23:48:40 +0200 Subject: [PATCH 1/2] +fix: Recoding for UTF-16 --- src/Dialogs.c | 48 ++++++++++----------------------------- src/Dialogs.h | 3 +-- src/Edit.c | 6 +---- src/Encoding.c | 8 +++---- src/EncodingDetection.cpp | 10 ++++---- src/Notepad3.c | 11 ++++----- 6 files changed, 28 insertions(+), 58 deletions(-) diff --git a/src/Dialogs.c b/src/Dialogs.c index 0b5823211..ef5e90b51 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -3830,53 +3830,29 @@ CASE_WM_CTLCOLOR_SET: // // SelectEncodingDlg() // -bool SelectEncodingDlg(HWND hwnd, cpi_enc_t* pidREncoding) +bool SelectEncodingDlg(HWND hwnd, cpi_enc_t* pidREncoding, bool bRecode) { ENCODEDLG dd = { 0 }; - dd.bRecodeOnly = false; + dd.bRecodeOnly = bRecode; dd.idEncoding = *pidREncoding; - dd.cxDlg = Settings.EncodingDlgSizeX; - dd.cyDlg = Settings.EncodingDlgSizeY; + dd.cxDlg = bRecode ? Settings.RecodeDlgSizeX : Settings.EncodingDlgSizeX; + dd.cyDlg = bRecode ? Settings.RecodeDlgSizeY : Settings.EncodingDlgSizeY; INT_PTR const iResult = ThemedDialogBoxParam( Globals.hLngResContainer, - MAKEINTRESOURCE(IDD_MUI_ENCODING), + MAKEINTRESOURCE(bRecode ? IDD_MUI_RECODE : IDD_MUI_ENCODING), hwnd, SelectEncodingDlgProc, (LPARAM)&dd); - Settings.EncodingDlgSizeX = dd.cxDlg; - Settings.EncodingDlgSizeY = dd.cyDlg; - - if (IsYesOkay(iResult)) { - *pidREncoding = dd.idEncoding; - return TRUE; + if (bRecode) { + Settings.RecodeDlgSizeX = dd.cxDlg; + Settings.RecodeDlgSizeY = dd.cyDlg; + } + else { + Settings.EncodingDlgSizeX = dd.cxDlg; + Settings.EncodingDlgSizeY = dd.cyDlg; } - return FALSE; -} - - -//============================================================================= -// -// RecodeDlg() -// -bool RecodeDlg(HWND hwnd, cpi_enc_t* pidREncoding) -{ - ENCODEDLG dd = { 0 }; - dd.bRecodeOnly = true; - dd.idEncoding = *pidREncoding; - dd.cxDlg = Settings.RecodeDlgSizeX; - dd.cyDlg = Settings.RecodeDlgSizeY; - - INT_PTR const iResult = ThemedDialogBoxParam( - Globals.hLngResContainer, - MAKEINTRESOURCE(IDD_MUI_RECODE), - hwnd, - SelectEncodingDlgProc, - (LPARAM)&dd); - - Settings.RecodeDlgSizeX = dd.cxDlg; - Settings.RecodeDlgSizeY = dd.cyDlg; if (IsYesOkay(iResult)) { *pidREncoding = dd.idEncoding; diff --git a/src/Dialogs.h b/src/Dialogs.h index f398cda0d..efcf35df1 100644 --- a/src/Dialogs.h +++ b/src/Dialogs.h @@ -57,8 +57,7 @@ bool WordWrapSettingsDlg(HWND hwnd,UINT uidDlg,int * iNumber); bool LongLineSettingsDlg(HWND hwnd,UINT uidDlg, LPWSTR pColList); bool TabSettingsDlg(HWND hwnd,UINT uidDlg,int * iNumber); bool SelectDefEncodingDlg(HWND hwnd, cpi_enc_t* pidREncoding); -bool SelectEncodingDlg(HWND hwnd, cpi_enc_t* pidREncoding); -bool RecodeDlg(HWND hwnd, cpi_enc_t* pidREncoding); +bool SelectEncodingDlg(HWND hwnd, cpi_enc_t* pidREncoding, bool bRecode); bool SelectDefLineEndingDlg(HWND hwnd,LPARAM piOption); bool WarnLineEndingDlg(HWND hwnd, EditFileIOStatus* fioStatus); bool WarnIndentationDlg(HWND hwnd, EditFileIOStatus* fioStatus); diff --git a/src/Edit.c b/src/Edit.c index 408c681c6..e756f440a 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -1430,14 +1430,12 @@ bool EditLoadFile( EditDetectEOLMode(lpData, cbData, status); FreeMem(lpDataWide); } else { - Encoding_Forced(CPI_NONE); FreeMem(lpDataWide); FreeMem(lpData); bReadSuccess = false; goto observe; } } else { - Encoding_Forced(CPI_NONE); FreeMem(lpDataWide); FreeMem(lpData); bReadSuccess = false; @@ -1452,14 +1450,12 @@ bool EditLoadFile( SciCall_SetCharacterCategoryOptimization(Encoding_IsCJK(encDetection.analyzedEncoding) ? 0x10000 : 0x1000); - Encoding_Forced(CPI_NONE); - FreeMem(lpData); observe: + Encoding_Forced(CPI_NONE); EndWaitCursor(); - return bReadSuccess; } diff --git a/src/Encoding.c b/src/Encoding.c index 89db49945..65317644b 100644 --- a/src/Encoding.c +++ b/src/Encoding.c @@ -90,7 +90,7 @@ cpi_enc_t Encoding_Forced(cpi_enc_t iEncoding) if (Encoding_IsValid(iEncoding)) { SourceEncoding = iEncoding; } else { - SourceEncoding = CPI_ANSI_DEFAULT; + SourceEncoding = Settings.DefaultEncoding; } } else if (iEncoding == CPI_NONE) { SourceEncoding = CPI_NONE; @@ -108,7 +108,7 @@ cpi_enc_t Encoding_SrcWeak(cpi_enc_t iSrcWeakEnc) if (Encoding_IsValid(iSrcWeakEnc)) { SourceWeakEncoding = iSrcWeakEnc; } else { - SourceWeakEncoding = CPI_ANSI_DEFAULT; + SourceWeakEncoding = Settings.DefaultEncoding; } } else if (iSrcWeakEnc == CPI_NONE) { SourceWeakEncoding = CPI_NONE; @@ -204,7 +204,7 @@ int Encoding_MapIniSetting(bool bLoad, int iSetting) return (int)i; } } - return CPI_ANSI_DEFAULT; + return Settings.DefaultEncoding; } } } else { @@ -233,7 +233,7 @@ int Encoding_MapIniSetting(bool bLoad, int iSetting) if (Encoding_IsValid((cpi_enc_t)iSetting)) { return (int)g_Encodings[iSetting].uCodePage; } - return CPI_ANSI_DEFAULT; + return Settings.DefaultEncoding; } } } diff --git a/src/EncodingDetection.cpp b/src/EncodingDetection.cpp index 64f9f4d8a..4feacdfe3 100644 --- a/src/EncodingDetection.cpp +++ b/src/EncodingDetection.cpp @@ -1279,11 +1279,6 @@ extern "C" ENC_DET_T Encoding_DetectEncoding(const HPATHL hpath, const char* lpD encDetRes.forcedEncoding = (Settings.LoadNFOasOEM && bNfoDizDetected) ? Globals.DOSEncoding : Encoding_Forced(CPI_GET); - encDetRes.bHasBOM = (bBOM_LE || bBOM_BE); - encDetRes.bIsReverse = bBOM_BE; - encDetRes.bIsUTF8Sig = ((cbData >= 3) ? IsUTF8Signature(lpData) : false); - encDetRes.bValidUTF8 = IsValidUTF8(lpData, cbData); - if (!IS_ENC_ENFORCED()) { // force file vars ? encDetRes.fileVarEncoding = (FileVars_IsValidEncoding(&Globals.fvCurFile)) ? FileVars_GetEncoding(&Globals.fvCurFile) : CPI_NONE; @@ -1292,6 +1287,11 @@ extern "C" ENC_DET_T Encoding_DetectEncoding(const HPATHL hpath, const char* lpD } } + encDetRes.bHasBOM = (bBOM_LE || bBOM_BE) || (IS_ENC_ENFORCED() && (g_Encodings[encDetRes.forcedEncoding].uFlags & NCP_UNICODE_BOM)); + encDetRes.bIsReverse = bBOM_BE || (IS_ENC_ENFORCED() && (g_Encodings[encDetRes.forcedEncoding].uFlags & NCP_UNICODE_REVERSE)); + encDetRes.bIsUTF8Sig = ((cbData >= 3) ? IsUTF8Signature(lpData) : false) || (IS_ENC_ENFORCED() && (g_Encodings[encDetRes.forcedEncoding].uFlags & NCP_UTF8_SIGN)); + encDetRes.bValidUTF8 = IsValidUTF8(lpData, cbData); + // --- 2nd Use Encoding Analysis if applicable size_t const cbNbytes4Analysis = min_s(cbData, 200000LL); diff --git a/src/Notepad3.c b/src/Notepad3.c index 61394f41f..98c0f27b0 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -5014,7 +5014,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) (cpi_enc_t)(HIWORD(wParam) - IDM_ENCODING_SELECT) : Encoding_GetCurrent(); if (iLoWParam == IDM_ENCODING_SELECT) { - if ((HIWORD(wParam) < IDM_ENCODING_SELECT) && !SelectEncodingDlg(hwnd, &iNewEncoding)) { + if ((HIWORD(wParam) < IDM_ENCODING_SELECT) && !SelectEncodingDlg(hwnd, &iNewEncoding, false)) { break; // no change } } else { @@ -5033,7 +5033,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; case IDM_ENCODING_ANSI: iNewEncoding = CPI_ANSI_DEFAULT; - break; } } BeginWaitCursorUID(Flags.bHugeFileLoadState, IDS_MUI_SB_RECODING_DOC); @@ -5056,7 +5055,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; } } - if (RecodeDlg(hwnd,&iNewEncoding)) { + if (SelectEncodingDlg(hwnd, &iNewEncoding, true)) { Encoding_Forced(iNewEncoding); FileLoadFlags const fLoadFlags = FLF_DontSave | FLF_Reload | FLF_SkipUnicodeDetect | FLF_SkipANSICPDetection; FileLoad(Paths.CurrentFile, fLoadFlags); @@ -5667,7 +5666,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_EDIT_B64DECODESEL: { cpi_enc_t iEncoding = Encoding_GetCurrent(); - if (!SelectEncodingDlg(hwnd, &iEncoding)) { + if (!SelectEncodingDlg(hwnd, &iEncoding, false)) { break; // no selection } EditBase64Code(Globals.hwndEdit, false, iEncoding); @@ -11391,7 +11390,7 @@ bool FileLoad(const HPATHL hfile_pth, const FileLoadFlags fLoadFlags) EditFileIOStatus fioStatus = INIT_FILEIO_STATUS; fioStatus.iEOLMode = Settings.DefaultEOLMode; - fioStatus.iEncoding = CPI_ANSI_DEFAULT; + fioStatus.iEncoding = Settings.DefaultEncoding; if (!(fLoadFlags & FLF_DontSave)) { if (!FileSave(FSF_Ask)) { @@ -11642,7 +11641,7 @@ bool FileLoad(const HPATHL hfile_pth, const FileLoadFlags fLoadFlags) Globals.bDocHasInconsistentEOLs = fioStatus.bInconsistentEOLs; bool const bCheckFile = !Globals.CmdLnFlag_PrintFileAndLeave && !fioStatus.bEncryptedRaw && !(fioStatus.bUnknownExt && bUnknownLexer) && !bReloadFile; - //&& (fioStatus.iEncoding == CPI_ANSI_DEFAULT) ??? + //&& (fioStatus.iEncoding == Settings.DefaultEncoding) ??? bool const bCheckEOL = bCheckFile && Globals.bDocHasInconsistentEOLs && Settings.WarnInconsistEOLs; From e615332401d30f76daf18dc974b903107fb0667c Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Mon, 10 Jul 2023 00:43:49 +0200 Subject: [PATCH 2/2] try to minimize scrolling to view --- src/Edit.c | 31 ++++---------------- src/Edit.h | 1 - src/Notepad3.c | 6 ++-- src/SciCall.h | 77 +++++++++++++++++++++++++++++++------------------- 4 files changed, 56 insertions(+), 59 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index e756f440a..151bdac7c 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -1941,7 +1941,7 @@ void EditURLEncode(const bool isPathConvert) SciCall_TargetFromSelection(); Sci_ReplaceTargetTestChgHist(cchEscapedEnc, pszEscaped); - EditSetAndScrollSelection(iSelStart, iSelStart + cchEscapedEnc, bStraightSel); + Sci_SetStreamSelection(iSelStart, iSelStart + cchEscapedEnc, bStraightSel); EndUndoTransAction(); @@ -2018,7 +2018,7 @@ void EditURLDecode(const bool isPathConvert) SciCall_TargetFromSelection(); Sci_ReplaceTargetTestChgHist(cchUnescapedDec, pszUnescaped); - EditSetAndScrollSelection(iSelStart, iSelStart + cchUnescapedDec, bStraightSel); + Sci_SetStreamSelection(iSelStart, iSelStart + cchUnescapedDec, bStraightSel); EndUndoTransAction(); } @@ -2073,7 +2073,7 @@ void EditReplaceAllChr(const WCHAR chSearch, const WCHAR chReplace) { SciCall_TargetFromSelection(); Sci_ReplaceTargetTestChgHist(cchRepl, pchReplace); - EditSetAndScrollSelection(iSelStart, iSelEnd, bStraightSel); + Sci_SetStreamSelection(iSelStart, iSelEnd, bStraightSel); EndUndoTransAction(); @@ -2147,10 +2147,9 @@ void EditBase64Code(HWND hwnd, const bool bEncode, cpi_enc_t cpi) { DocPos const len = (base64Size ? Sci_ReplaceTargetTestChgHist(base64Size, pBase64CodedTxt) : SciCall_ReplaceTarget(0, "")); FreeMem(pBase64CodedTxt); - EditSetAndScrollSelection(iSelStart, iSelStart + len, bStraightSel); + Sci_SetStreamSelection(iSelStart, iSelStart + len, bStraightSel); EndUndoTransAction(); - } @@ -2374,7 +2373,6 @@ void EditFindMatchingBrace() if (iMatchingBracePos != (DocPos)-1) { iMatchingBracePos = bIsAfter ? iMatchingBracePos : SciCall_PositionAfter(iMatchingBracePos); Sci_GotoPosChooseCaret(iMatchingBracePos); - Sci_ScrollSelectionToView(); } } @@ -3710,7 +3708,7 @@ void EditEncloseSelection(LPCWSTR pszOpen, LPCWSTR pszClose) { } // Move selection - EditSetAndScrollSelection(iSelStart + iLenOpen, iSelEnd + iLenOpen, bStraightSel); + Sci_SetStreamSelection(iSelStart + iLenOpen, iSelEnd + iLenOpen, bStraightSel); EndUndoTransAction(); @@ -3831,10 +3829,9 @@ void EditToggleLineCommentsSimple(LPCWSTR pwszComment, bool bInsertAtStart, LnCm } } - EditSetAndScrollSelection(iSelStart + iSelStartOffset, iSelEnd + iSelEndOffset, bStraightSel); + Sci_SetStreamSelection(iSelStart + iSelStartOffset, iSelEnd + iSelEndOffset, bStraightSel); EndUndoTransAction(); - } @@ -5354,21 +5351,6 @@ void EditSortLines(HWND hwnd, int iSortFlags) } -//============================================================================= -// -// EditSetAndScrollSelection() -// -void EditSetAndScrollSelection(DocPos iSelStart, DocPos iSelEnd, bool bStraightSel) -{ - SciCall_SetSelectionStart(iSelStart); - SciCall_SetSelectionEnd(iSelEnd); - if (!bStraightSel) { - SciCall_SwapMainAnchorCaret(); - } - Sci_ScrollSelectionToView(); -} - - //============================================================================= // // EditSetSelectionEx() @@ -5448,7 +5430,6 @@ void EditJumpTo(DocLn iNewLine, DocPos iNewCol) iNewCol = clampp((iNewCol - colOffset), 0, iLineEndPos); Sci_GotoPosChooseCaret(SciCall_FindColumn(iNewLine, iNewCol)); - Sci_ScrollSelectionToView(); } diff --git a/src/Edit.h b/src/Edit.h index 5db9694f4..c4376097e 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -93,7 +93,6 @@ void EditJoinLinesEx(bool,bool); void EditSortLines(HWND hwnd,int iSortFlags); void EditJumpTo(DocLn iNewLine, DocPos iNewCol); -void EditSetAndScrollSelection(DocPos iSelStart, DocPos iSelEnd, bool bStraightSel); void EditSetSelectionEx(DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcAnchor, DocPos vSpcCurrent); void EditFixPositions(); void EditEnsureConsistentLineEndings(HWND hwnd); diff --git a/src/Notepad3.c b/src/Notepad3.c index 98c0f27b0..da9f97327 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -6735,7 +6735,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) if ((!SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection()) && (skipLevel == Settings2.ExitOnESCSkipLevel)) { Sci_GotoPosChooseCaret(iCurPos); - Sci_ScrollSelectionToView(); skipLevel -= Default_ExitOnESCSkipLevel; } @@ -6751,7 +6750,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) default: Sci_GotoPosChooseCaret(iCurPos); - Sci_ScrollSelectionToView(); break; } } @@ -11625,7 +11623,8 @@ bool FileLoad(const HPATHL hfile_pth, const FileLoadFlags fLoadFlags) // set historic caret/selection pos if (!FileWatching.MonitoringLog && (s_flagChangeNotify != FWM_AUTORELOAD)) { if ((iCaretPos >= 0) && (iAnchorPos >= 0)) { - EditSetAndScrollSelection(iAnchorPos, iCaretPos, true); + Sci_SetStreamSelection(iAnchorPos, iCaretPos, true); + Sci_ScrollSelectionToView(); } else { Sci_GotoPosChooseCaret(0); @@ -12747,7 +12746,6 @@ LRESULT MsgFileChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) } else { Sci_GotoPosChooseCaret(iCurPos); - Sci_ScrollSelectionToView(); } } } diff --git a/src/SciCall.h b/src/SciCall.h index b99686584..91827a9c2 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -804,6 +804,7 @@ __forceinline bool Sci_IsValidPos(DocPos pos, bool fwd) { return (pos == ((pos > 0) ? (fwd ? SciCall_PositionAfter(SciCall_PositionBefore(pos)) : SciCall_PositionBefore(SciCall_PositionAfter(pos))) : pos)); } +// ---------------------------------------------------------------------------- // max. line length in range (incl. line-breaks) inline DocPos Sci_GetRangeMaxLineLength(DocLn iBeginLine, DocLn iEndLine) @@ -817,32 +818,7 @@ inline DocPos Sci_GetRangeMaxLineLength(DocLn iBeginLine, DocLn iEndLine) } return iMaxLineLen; } - -// respect VSlop settings -__forceinline void Sci_GotoPosChooseCaret(const DocPos pos) -{ - SciCall_GotoPos(pos); - SciCall_ChooseCaretX(); -} - -__forceinline void Sci_ScrollChooseCaret() -{ - SciCall_ScrollCaret(); - SciCall_ChooseCaretX(); -} - -inline void Sci_ScrollToLine(const DocLn line) -{ - if (!SciCall_GetLineVisible(line)) { - SciCall_EnsureVisible(line); - } - SciCall_ScrollRange(SciCall_GetLineEndPosition(line), SciCall_PositionFromLine(line)); -} - -__forceinline void Sci_ScrollToCurrentLine() -{ - Sci_ScrollToLine(Sci_GetCurrentLineNumber()); -} +// ---------------------------------------------------------------------------- inline bool Sci_EnsureVisibleSelection() { @@ -864,8 +840,9 @@ inline bool Sci_EnsureVisibleSelection() } return bMoveViewToCaret; } +// ---------------------------------------------------------------------------- -__forceinline void Sci_ScrollSelectionToView() +inline void Sci_ScrollSelectionToView() { if (Sci_EnsureVisibleSelection()) { SciCall_ScrollToEnd(); // (!) jump at top-slope not bottom-slope @@ -873,6 +850,47 @@ __forceinline void Sci_ScrollSelectionToView() //~SciCall_ScrollRange(SciCall_GetAnchor(), SciCall_GetCurrentPos()); SciCall_ScrollRange(SciCall_GetCurrentPos(), SciCall_GetAnchor()); } +// ---------------------------------------------------------------------------- + +// respect VSlop settings +inline void Sci_GotoPosChooseCaret(const DocPos pos) +{ + SciCall_GotoPos(pos); + Sci_ScrollSelectionToView(); + SciCall_ChooseCaretX(); +} +// ---------------------------------------------------------------------------- + +__forceinline void Sci_ScrollChooseCaret() +{ + SciCall_ScrollCaret(); + SciCall_ChooseCaretX(); +} +// ---------------------------------------------------------------------------- + +inline void Sci_ScrollToLine(const DocLn line) +{ + if (!SciCall_GetLineVisible(line)) { + SciCall_EnsureVisible(line); + } + SciCall_ScrollRange(SciCall_GetLineEndPosition(line), SciCall_PositionFromLine(line)); +} +// ---------------------------------------------------------------------------- + +#define Sci_ScrollToCurrentLine() Sci_ScrollToLine(Sci_GetCurrentLineNumber()) + +// ---------------------------------------------------------------------------- + +inline void Sci_SetStreamSelection(DocPos iSelStart, DocPos iSelEnd, bool bStraightSel) +{ + SciCall_SetSelectionStart(iSelStart); + SciCall_SetSelectionEnd(iSelEnd); + if (!bStraightSel) { + SciCall_SwapMainAnchorCaret(); + } + SciCall_ChooseCaretX(); +} +// ---------------------------------------------------------------------------- __forceinline void Sci_SetCaretScrollDocEnd() { @@ -880,6 +898,7 @@ __forceinline void Sci_SetCaretScrollDocEnd() //~SciCall_ScrollToEnd(); SciCall_ScrollCaret(); // enforce visible slop policy } +// ---------------------------------------------------------------------------- __forceinline void Sci_RedrawScrollbars() { @@ -888,6 +907,7 @@ __forceinline void Sci_RedrawScrollbars() SciCall_SetVScrollbar(false); SciCall_SetVScrollbar(true); } +// ---------------------------------------------------------------------------- // if iRangeEnd == -1 : apply style from iRangeStart to document end @@ -1001,6 +1021,7 @@ __forceinline DocPos Sci_ReplaceTargetTestChgHist(const DocPos length, const cha { return SciCall_GetChangeHistory() ? SciCall_ReplaceTargetMinimal(length, text) : SciCall_ReplaceTarget(length, text); } +// ---------------------------------------------------------------------------- inline DocPos Sci_ReplaceTargetEx(const int mode, const DocPos length, const char* text) { @@ -1014,7 +1035,6 @@ inline DocPos Sci_ReplaceTargetEx(const int mode, const DocPos length, const cha return SciCall_ReplaceTarget(length, text); } } - // ---------------------------------------------------------------------------- inline LRESULT Sci_ForceNotifyUpdateUI(HWND hwnd, uptr_t idc) @@ -1026,7 +1046,6 @@ inline LRESULT Sci_ForceNotifyUpdateUI(HWND hwnd, uptr_t idc) scn.updated = SC_UPDATE_CONTENT; return SendMessageW(hwnd, WM_NOTIFY, idc, (LPARAM)&scn); } - // ---------------------------------------------------------------------------- //=============================================================================