mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-20 21:13:25 +08:00
Merge pull request #4922 from RaiKoHoff/Dev_Master
Fix recoding for UTF-16
This commit is contained in:
commit
a75bdaa904
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
37
src/Edit.c
37
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;
|
||||
}
|
||||
|
||||
@ -1945,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();
|
||||
|
||||
@ -2022,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();
|
||||
}
|
||||
@ -2077,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();
|
||||
|
||||
@ -2151,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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -2378,7 +2373,6 @@ void EditFindMatchingBrace()
|
||||
if (iMatchingBracePos != (DocPos)-1) {
|
||||
iMatchingBracePos = bIsAfter ? iMatchingBracePos : SciCall_PositionAfter(iMatchingBracePos);
|
||||
Sci_GotoPosChooseCaret(iMatchingBracePos);
|
||||
Sci_ScrollSelectionToView();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3714,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();
|
||||
|
||||
@ -3835,10 +3829,9 @@ void EditToggleLineCommentsSimple(LPCWSTR pwszComment, bool bInsertAtStart, LnCm
|
||||
}
|
||||
}
|
||||
|
||||
EditSetAndScrollSelection(iSelStart + iSelStartOffset, iSelEnd + iSelEndOffset, bStraightSel);
|
||||
Sci_SetStreamSelection(iSelStart + iSelStartOffset, iSelEnd + iSelEndOffset, bStraightSel);
|
||||
|
||||
EndUndoTransAction();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -5358,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()
|
||||
@ -5452,7 +5430,6 @@ void EditJumpTo(DocLn iNewLine, DocPos iNewCol)
|
||||
iNewCol = clampp((iNewCol - colOffset), 0, iLineEndPos);
|
||||
|
||||
Sci_GotoPosChooseCaret(SciCall_FindColumn(iNewLine, iNewCol));
|
||||
Sci_ScrollSelectionToView();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
@ -6736,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;
|
||||
}
|
||||
|
||||
@ -6752,7 +6750,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
default:
|
||||
Sci_GotoPosChooseCaret(iCurPos);
|
||||
Sci_ScrollSelectionToView();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -11391,7 +11388,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)) {
|
||||
@ -11626,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);
|
||||
@ -11642,7 +11640,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;
|
||||
|
||||
@ -12748,7 +12746,6 @@ LRESULT MsgFileChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
else {
|
||||
Sci_GotoPosChooseCaret(iCurPos);
|
||||
Sci_ScrollSelectionToView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
//=============================================================================
|
||||
|
||||
Loading…
Reference in New Issue
Block a user