+ minor fixes

This commit is contained in:
Rainer Kottenhoff 2018-07-09 13:08:14 +02:00
parent dbe1aa0c4b
commit 9a724707d4
3 changed files with 21 additions and 12 deletions

View File

@ -1261,7 +1261,7 @@ bool EditSaveFile(
// get text
cbData = (DWORD)SciCall_GetTextLength();
lpData = AllocMem(cbData + 4, HEAP_ZERO_MEMORY); //fix: +bom
SendMessage(hwnd,SCI_GETTEXT,SizeOfMem(lpData),(LPARAM)lpData);
SciCall_GetText((DocPos)SizeOfMem(lpData), lpData);
if (cbData == 0) {
bWriteSuccess = SetEndOfFile(hFile);
@ -4371,6 +4371,7 @@ void EditSelectEx(HWND hwnd, DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcA
void EditEnsureSelectionVisible(HWND hwnd)
{
UNUSED(hwnd);
DocPos iAnchorPos = 0;
DocPos iCurrentPos = 0;
DocPos iAnchorPosVS = -1;
@ -4386,6 +4387,11 @@ void EditEnsureSelectionVisible(HWND hwnd)
else {
iAnchorPos = SciCall_GetAnchor();
iCurrentPos = SciCall_GetCurrentPos();
if (SciCall_IsSelectionEmpty()) {
SciCall_ScrollCaret();
SciCall_ChooseCaretX();
return;
}
}
EditSelectEx(hwnd, iAnchorPos, iCurrentPos, iAnchorPosVS, iCurPosVS);
}

View File

@ -1645,13 +1645,14 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl)
#define _CARET_SYMETRY CARET_EVEN /// CARET_EVEN or 0
#define _CARET_ENFORCE CARET_STRICT /// CARET_STRICT or 0
if (iCurrentLineHorizontalSlop > 0)
SendMessage(hwndEditCtrl, SCI_SETXCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | CARET_STRICT), iCurrentLineHorizontalSlop);
SendMessage(hwndEditCtrl, SCI_SETXCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | _CARET_ENFORCE), iCurrentLineHorizontalSlop);
else
SendMessage(hwndEditCtrl, SCI_SETXCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | CARET_STRICT), (LPARAM)0);
SendMessage(hwndEditCtrl, SCI_SETXCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | _CARET_ENFORCE), (LPARAM)0);
if (iCurrentLineVerticalSlop > 0)
SendMessage(hwndEditCtrl, SCI_SETYCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | CARET_STRICT), iCurrentLineVerticalSlop);
SendMessage(hwndEditCtrl, SCI_SETYCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | _CARET_ENFORCE), iCurrentLineVerticalSlop);
else
SendMessage(hwndEditCtrl, SCI_SETYCARETPOLICY, (WPARAM)(_CARET_SYMETRY), 0);
@ -8882,10 +8883,10 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
if (cchText == 0)
bIsEmptyNewFile = true;
else if (cchText < 1023) {
char tchText[1024];
SendMessage(g_hwndEdit,SCI_GETTEXT,(WPARAM)1023,(LPARAM)tchText);
StrTrimA(tchText," \t\n\r");
if (lstrlenA(tchText) == 0)
char chTextBuf[1024];
SciCall_GetText(1023, chTextBuf);
StrTrimA(chTextBuf," \t\n\r");
if (lstrlenA(chTextBuf) == 0)
bIsEmptyNewFile = true;
}
}
@ -8993,9 +8994,9 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
EditGetBookmarkList(g_hwndEdit, wchBookMarks, COUNTOF(wchBookMarks));
MRU_AddFile(g_pFileMRU,g_wchCurFile,g_flagRelativeFileMRU,g_flagPortableMyDocs,iCurrEnc,iCaretPos,wchBookMarks);
if (g_flagUseSystemMRU == 2)
SHAddToRecentDocs(SHARD_PATHW,g_wchCurFile);
if (g_flagUseSystemMRU == 2) {
SHAddToRecentDocs(SHARD_PATHW, g_wchCurFile);
}
_SetDocumentModified(false);
// Install watching of the current file
@ -9067,6 +9068,7 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
MsgBoxLng(MBWARN,IDS_MUI_ERR_SAVEFILE,tchFile);
}
}
//@@@EditEnsureSelectionVisible(g_hwndEdit);
return(fSuccess);
}

View File

@ -77,7 +77,7 @@ extern HANDLE g_hwndEdit;
#ifdef SCI_DIRECTFUNCTION_INTERFACE
LRESULT WINAPI Scintilla_DirectFunction(HANDLE, UINT, WPARAM, LPARAM);
#define SciCall(m, w, l) Scintilla_DirectFunction(g_hScintilla, m, w, l)
#define SciCall(m, w, l) Scintilla_DirectFunction(g_hScintilla, (m), (w), (l))
#else
@ -257,6 +257,7 @@ DeclareSciCallV1(SetEndAtLastLine, SETENDATLASTLINE, bool, flag)
DeclareSciCallR0(GetXoffset, GETXOFFSET, int)
DeclareSciCallV1(SetXoffset, SETXOFFSET, int, offset)
DeclareSciCallV2(SetVisiblePolicy, SETVISIBLEPOLICY, int, flags, DocLn, lines)
DeclareSciCallV0(MoveCaretInsideView, MOVECARETINSIDEVIEW)
DeclareSciCallR0(LinesOnScreen, LINESONSCREEN, DocLn)
DeclareSciCallR0(GetFirstVisibleLine, GETFIRSTVISIBLELINE, DocLn)