aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r--src/Editor.cxx308
1 files changed, 173 insertions, 135 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 4b5ecadc2..5a200e952 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -357,7 +357,7 @@ SelectionPosition Editor::ClampPositionIntoDocument(SelectionPosition sp) const
if (sp.Position() < 0) {
return SelectionPosition(0);
} else if (sp.Position() > pdoc->Length()) {
- return SelectionPosition(pdoc->Length());
+ return SelectionPosition(static_cast<Sci::Position>(pdoc->Length()));
} else {
// If not at end of line then set offset to 0
if (!pdoc->IsLineEndPosition(sp.Position()))
@@ -418,7 +418,7 @@ Sci::Position Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool
SelectionPosition Editor::SPositionFromLineX(Sci::Line lineDoc, int x) {
RefreshStyleData();
if (lineDoc >= pdoc->LinesTotal())
- return SelectionPosition(pdoc->Length());
+ return SelectionPosition(static_cast<Sci::Position>(pdoc->Length()));
//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
AutoSurface surface(this);
return view.SPositionFromLineX(surface, *this, lineDoc, x, vs);
@@ -437,7 +437,7 @@ void Editor::SetTopLine(Sci::Line topLineNew) {
topLine = topLineNew;
ContainerNeedsUpdate(SC_UPDATE_V_SCROLL);
}
- posTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));
+ posTopLine = static_cast<Sci::Position>(pdoc->LineStart(cs.DocFromDisplay(topLine)));
}
/**
@@ -500,7 +500,7 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) {
rcMarkers.right = rcMarkers.left + vs.fixedColumnWidth;
}
if (line != -1) {
- PRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line)), 0);
+ PRectangle rcLine = RectangleFromRange(Range(static_cast<Sci::Position>(pdoc->LineStart(line))), 0);
// Inflate line rectangle if there are image markers with height larger than line height
if (vs.largestMarkerHeight > vs.lineHeight) {
@@ -529,8 +529,10 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) {
}
PRectangle Editor::RectangleFromRange(Range r, int overlap) {
- const Sci::Line minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First()));
- const Sci::Line maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last()));
+ const Sci::Line minLine = cs.DisplayFromDoc(
+ static_cast<Sci::Line>(pdoc->LineFromPosition(r.First())));
+ const Sci::Line maxLine = cs.DisplayLastFromDoc(
+ static_cast<Sci::Line>(pdoc->LineFromPosition(r.Last())));
const PRectangle rcClientDrawing = GetClientDrawingRectangle();
PRectangle rc;
const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0;
@@ -572,8 +574,10 @@ void Editor::SetRectangularRange() {
if (sel.selType == Selection::selThin) {
xCaret = xAnchor;
}
- const Sci::Line lineAnchorRect = pdoc->LineFromPosition(sel.Rectangular().anchor.Position());
- const Sci::Line lineCaret = pdoc->LineFromPosition(sel.Rectangular().caret.Position());
+ const Sci::Line lineAnchorRect = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.Rectangular().anchor.Position()));
+ const Sci::Line lineCaret = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.Rectangular().caret.Position()));
const int increment = (lineCaret > lineAnchorRect) ? 1 : -1;
for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) {
SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor));
@@ -626,16 +630,20 @@ void Editor::InvalidateWholeSelection() {
void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) {
currentPos_ = ClampPositionIntoDocument(currentPos_);
anchor_ = ClampPositionIntoDocument(anchor_);
- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
/* For Line selection - ensure the anchor and caret are always
at the beginning and end of the region lines. */
if (sel.selType == Selection::selLines) {
if (currentPos_ > anchor_) {
- anchor_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position())));
- currentPos_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position())));
+ anchor_ = SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position()))));
+ currentPos_ = SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position()))));
} else {
- currentPos_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position())));
- anchor_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position())));
+ currentPos_ = SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position()))));
+ anchor_ = SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position()))));
}
}
SelectionRange rangeNew(currentPos_, anchor_);
@@ -660,7 +668,7 @@ void Editor::SetSelection(Sci::Position currentPos_, Sci::Position anchor_) {
// Just move the caret on the main selection
void Editor::SetSelection(SelectionPosition currentPos_) {
currentPos_ = ClampPositionIntoDocument(currentPos_);
- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
if (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) {
InvalidateSelection(SelectionRange(currentPos_));
}
@@ -686,7 +694,8 @@ void Editor::SetSelection(int currentPos_) {
}
void Editor::SetEmptySelection(SelectionPosition currentPos_) {
- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
+ Sci::Line currentLine = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(currentPos_.Position()));
SelectionRange rangeNew(ClampPositionIntoDocument(currentPos_));
if (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) {
InvalidateSelection(rangeNew);
@@ -815,7 +824,8 @@ SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, Sci::Po
}
void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) {
- const Sci::Line currentLine = pdoc->LineFromPosition(newPos.Position());
+ const Sci::Line currentLine = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(newPos.Position()));
if (ensureVisible) {
// In case in need of wrapping to ensure DisplayFromDoc works.
if (currentLine >= wrapPending.start) {
@@ -884,7 +894,7 @@ void Editor::MovePositionTo(Sci::Position newPos, Selection::selTypes selt, bool
SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) {
pos = ClampPositionIntoDocument(pos);
pos = MovePositionOutsideChar(pos, moveDir);
- Sci::Line lineDoc = pdoc->LineFromPosition(pos.Position());
+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(pos.Position()));
if (cs.GetVisible(lineDoc)) {
return pos;
} else {
@@ -892,10 +902,12 @@ SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveD
if (moveDir > 0) {
// lineDisplay is already line before fold as lines in fold use display line of line after fold
lineDisplay = Sci::clamp(lineDisplay, 0, cs.LinesDisplayed());
- return SelectionPosition(pdoc->LineStart(cs.DocFromDisplay(lineDisplay)));
+ return SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineStart(cs.DocFromDisplay(lineDisplay))));
} else {
lineDisplay = Sci::clamp(lineDisplay - 1, 0, cs.LinesDisplayed());
- return SelectionPosition(pdoc->LineEnd(cs.DocFromDisplay(lineDisplay)));
+ return SelectionPosition(static_cast<Sci::Position>(
+ pdoc->LineEnd(cs.DocFromDisplay(lineDisplay))));
}
}
}
@@ -965,7 +977,8 @@ void Editor::HorizontalScrollTo(int xPos) {
}
void Editor::VerticalCentreCaret() {
- const Sci::Line lineDoc = pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret());
+ const Sci::Line lineDoc = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()));
const Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc);
const Sci::Line newTop = lineDisplay - (LinesOnScreen() / 2);
if (topLine != newTop) {
@@ -984,19 +997,19 @@ void Editor::MoveSelectedLines(int lineDelta) {
// if selection doesn't start at the beginning of the line, set the new start
Sci::Position selectionStart = SelectionStart().Position();
- const Sci::Line startLine = pdoc->LineFromPosition(selectionStart);
- const Sci::Position beginningOfStartLine = pdoc->LineStart(startLine);
+ const Sci::Line startLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionStart));
+ const Sci::Position beginningOfStartLine = static_cast<Sci::Position>(pdoc->LineStart(startLine));
selectionStart = beginningOfStartLine;
// if selection doesn't end at the beginning of a line greater than that of the start,
// then set it at the beginning of the next one
Sci::Position selectionEnd = SelectionEnd().Position();
- const Sci::Line endLine = pdoc->LineFromPosition(selectionEnd);
- const Sci::Position beginningOfEndLine = pdoc->LineStart(endLine);
+ const Sci::Line endLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionEnd));
+ const Sci::Position beginningOfEndLine = static_cast<Sci::Position>(pdoc->LineStart(endLine));
bool appendEol = false;
if (selectionEnd > beginningOfEndLine
|| selectionStart == selectionEnd) {
- selectionEnd = pdoc->LineStart(endLine + 1);
+ selectionEnd = static_cast<Sci::Position>(pdoc->LineStart(endLine + 1));
appendEol = (selectionEnd == pdoc->Length() && pdoc->LineFromPosition(selectionEnd) == endLine);
}
@@ -1031,7 +1044,7 @@ void Editor::MoveSelectedLines(int lineDelta) {
const char *eol = StringFromEOLMode(pdoc->eolMode);
if (currentLine + lineDelta >= pdoc->LinesTotal())
- pdoc->InsertString(pdoc->Length(), eol, istrlen(eol));
+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), eol, istrlen(eol));
GoToLine(currentLine + lineDelta);
selectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength);
@@ -1521,7 +1534,7 @@ bool Editor::WrapLines(WrapScope ws) {
lineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap);
// Ensure all lines being wrapped are styled.
- pdoc->EnsureStyledTo(pdoc->LineStart(lineToWrapEnd));
+ pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->LineStart(lineToWrapEnd)));
if (lineToWrap < lineToWrapEnd) {
@@ -1597,15 +1610,15 @@ void Editor::LinesSplit(int pixelWidth) {
const PRectangle rcText = GetTextRectangle();
pixelWidth = static_cast<int>(rcText.Width());
}
- Sci::Line lineStart = pdoc->LineFromPosition(targetStart);
- Sci::Line lineEnd = pdoc->LineFromPosition(targetEnd);
+ Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(targetStart));
+ Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd));
const char *eol = StringFromEOLMode(pdoc->eolMode);
UndoGroup ug(pdoc);
for (Sci::Line line = lineStart; line <= lineEnd; line++) {
AutoSurface surface(this);
AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));
if (surface && ll) {
- Sci::Position posLineStart = pdoc->LineStart(line);
+ Sci::Position posLineStart = static_cast<Sci::Position>(pdoc->LineStart(line));
view.LayoutLine(*this, line, surface, vs, ll, pixelWidth);
Sci::Position lengthInsertedTotal = 0;
for (int subLine = 1; subLine < ll->lines; subLine++) {
@@ -1617,7 +1630,7 @@ void Editor::LinesSplit(int pixelWidth) {
lengthInsertedTotal += lengthInserted;
}
}
- lineEnd = pdoc->LineFromPosition(targetEnd);
+ lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd));
}
}
}
@@ -1834,7 +1847,7 @@ void Editor::ChangeSize() {
Sci::Position Editor::RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace) {
if (virtualSpace > 0) {
- const Sci::Line line = pdoc->LineFromPosition(position);
+ const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
const Sci::Position indent = pdoc->GetLineIndentPosition(line);
if (indent == position) {
return pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace);
@@ -1915,7 +1928,7 @@ void Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) {
if (Wrapping()) {
AutoSurface surface(this);
if (surface) {
- if (WrapOneLine(surface, pdoc->LineFromPosition(positionInsert))) {
+ if (WrapOneLine(surface, static_cast<Sci::Line>(pdoc->LineFromPosition(positionInsert)))) {
SetScrollBars();
SetVerticalScrollPos();
Redraw();
@@ -2031,7 +2044,8 @@ void Editor::InsertPasteShape(const char *text, int len, PasteShape shape) {
PasteRectangular(sel.Start(), text, len);
} else {
if (shape == pasteLine) {
- Sci::Position insertPos = pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret()));
+ Sci::Position insertPos = static_cast<Sci::Position>(
+ pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret())));
Sci::Position lengthInserted = pdoc->InsertString(insertPos, text, len);
// add the newline if necessary
if ((len > 0) && (text[len - 1] != '\n' && text[len - 1] != '\r')) {
@@ -2072,7 +2086,7 @@ void Editor::ClearAll() {
{
UndoGroup ug(pdoc);
if (0 != pdoc->Length()) {
- pdoc->DeleteChars(0, pdoc->Length());
+ pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
}
if (!pdoc->IsReadOnly()) {
cs.Clear();
@@ -2118,7 +2132,7 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit
}
sel.Clear();
sel.RangeMain() = SelectionRange(pos);
- Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
UndoGroup ug(pdoc);
sel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret);
int xInsert = XFromPosition(sel.RangeMain().caret);
@@ -2131,9 +2145,9 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit
line++;
if (line >= pdoc->LinesTotal()) {
if (pdoc->eolMode != SC_EOL_LF)
- pdoc->InsertString(pdoc->Length(), "\r", 1);
+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\r", 1);
if (pdoc->eolMode != SC_EOL_CR)
- pdoc->InsertString(pdoc->Length(), "\n", 1);
+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\n", 1);
}
// Pad the end of lines with spaces if required
sel.RangeMain().caret.SetPosition(PositionFromLineX(line, xInsert));
@@ -2193,7 +2207,7 @@ void Editor::Clear() {
void Editor::SelectAll() {
sel.Clear();
- SetSelection(0, pdoc->Length());
+ SetSelection(0, static_cast<Sci::Position>(pdoc->Length()));
Redraw();
}
@@ -2230,7 +2244,8 @@ void Editor::DelCharBack(bool allowLineStartDeletion) {
sel.Range(r).caret.SetVirtualSpace(sel.Range(r).caret.VirtualSpace() - 1);
sel.Range(r).anchor.SetVirtualSpace(sel.Range(r).caret.VirtualSpace());
} else {
- Sci::Line lineCurrentPos = pdoc->LineFromPosition(sel.Range(r).caret.Position());
+ Sci::Line lineCurrentPos = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.Range(r).caret.Position()));
if (allowLineStartDeletion || (pdoc->LineStart(lineCurrentPos) != sel.Range(r).caret.Position())) {
if (pdoc->GetColumn(sel.Range(r).caret.Position()) <= pdoc->GetLineIndentation(lineCurrentPos) &&
pdoc->GetColumn(sel.Range(r).caret.Position()) > 0 && pdoc->backspaceUnindents) {
@@ -2388,11 +2403,11 @@ void Editor::NotifyIndicatorClick(bool click, Sci::Position position, int modifi
bool Editor::NotifyMarginClick(Point pt, int modifiers) {
const int marginClicked = vs.MarginFromLocation(pt);
if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {
- Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
+ Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt)));
if ((vs.ms[marginClicked].mask & SC_MASK_FOLDERS) && (foldAutomatic & SC_AUTOMATICFOLD_CLICK)) {
const bool ctrl = (modifiers & SCI_CTRL) != 0;
const bool shift = (modifiers & SCI_SHIFT) != 0;
- Sci::Line lineClick = pdoc->LineFromPosition(position);
+ Sci::Line lineClick = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
if (shift && ctrl) {
FoldAll(SC_FOLDACTION_TOGGLE);
} else {
@@ -2426,7 +2441,7 @@ bool Editor::NotifyMarginClick(Point pt, int modifiers) {
bool Editor::NotifyMarginRightClick(Point pt, int modifiers) {
int marginRightClicked = vs.MarginFromLocation(pt);
if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) {
- Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
+ Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt)));
SCNotification scn = {};
scn.nmhdr.code = SCN_MARGINRIGHTCLICK;
scn.modifiers = modifiers;
@@ -2476,7 +2491,7 @@ void Editor::NotifySavePoint(Document *, void *, bool atSavePoint) {
void Editor::CheckModificationForWrap(DocModification mh) {
if (mh.modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) {
view.llc.Invalidate(LineLayout::llCheckTextAndStyle);
- Sci::Line lineDoc = pdoc->LineFromPosition(mh.position);
+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
Sci::Line lines = std::max(static_cast<Sci::Line>(0), mh.linesAdded);
if (Wrapping()) {
NeedWrapping(lineDoc, lineDoc + lines + 1);
@@ -2518,7 +2533,8 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
if (mh.modificationType & SC_MOD_CHANGELINESTATE) {
if (paintState == painting) {
CheckForChangeOutsidePaint(
- Range(pdoc->LineStart(mh.line), pdoc->LineStart(mh.line + 1)));
+ Range(static_cast<Sci::Position>(pdoc->LineStart(mh.line)),
+ static_cast<Sci::Position>(pdoc->LineStart(mh.line + 1))));
} else {
// Could check that change is before last visible line.
Redraw();
@@ -2563,20 +2579,20 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
}
if ((mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) && cs.HiddenLines()) {
// Some lines are hidden so may need shown.
- const Sci::Line lineOfPos = pdoc->LineFromPosition(mh.position);
+ const Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
Sci::Position endNeedShown = mh.position;
if (mh.modificationType & SC_MOD_BEFOREINSERT) {
if (pdoc->ContainsLineEnd(mh.text, mh.length) && (mh.position != pdoc->LineStart(lineOfPos)))
- endNeedShown = pdoc->LineStart(lineOfPos+1);
+ endNeedShown = static_cast<Sci::Position>(pdoc->LineStart(lineOfPos+1));
} else if (mh.modificationType & SC_MOD_BEFOREDELETE) {
// If the deletion includes any EOL then we extend the need shown area.
endNeedShown = mh.position + mh.length;
- Sci::Line lineLast = pdoc->LineFromPosition(mh.position+mh.length);
+ Sci::Line lineLast = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position+mh.length));
for (Sci::Line line = lineOfPos + 1; line <= lineLast; line++) {
const Sci::Line lineMaxSubord = pdoc->GetLastChild(line, -1, -1);
if (lineLast < lineMaxSubord) {
lineLast = lineMaxSubord;
- endNeedShown = pdoc->LineEnd(lineLast);
+ endNeedShown = static_cast<Sci::Position>(pdoc->LineEnd(lineLast));
}
}
}
@@ -2585,7 +2601,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
if (mh.linesAdded != 0) {
// Update contraction state for inserted and removed lines
// lineOfPos should be calculated in context of state before modification, shouldn't it
- Sci::Line lineOfPos = pdoc->LineFromPosition(mh.position);
+ Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
if (mh.position > pdoc->LineStart(lineOfPos))
lineOfPos++; // Affecting subsequent lines
if (mh.linesAdded > 0) {
@@ -2596,7 +2612,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
view.LinesAddedOrRemoved(lineOfPos, mh.linesAdded);
}
if (mh.modificationType & SC_MOD_CHANGEANNOTATION) {
- Sci::Line lineDoc = pdoc->LineFromPosition(mh.position);
+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
if (vs.annotationVisible) {
if (cs.SetHeight(lineDoc, cs.GetHeight(lineDoc) + mh.annotationLinesAdded)) {
SetScrollBars();
@@ -2616,7 +2632,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
}
if (paintState == notPainting && !CanDeferToLastStep(mh)) {
- QueueIdleWork(WorkNeeded::workStyle, pdoc->Length());
+ QueueIdleWork(WorkNeeded::workStyle, static_cast<Sci::Position>(pdoc->Length()));
Redraw();
}
} else {
@@ -2824,12 +2840,12 @@ void Editor::PageMove(int direction, Selection::selTypes selt, bool stuttered) {
Sci::Line topLineNew;
SelectionPosition newPos;
- const Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret());
+ const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
const Sci::Line topStutterLine = topLine + caretYSlop;
- const Sci::Line bottomStutterLine =
+ const Sci::Line bottomStutterLine = static_cast<Sci::Line>(
pdoc->LineFromPosition(PositionFromLocation(
Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * LinesToScroll())))
- - caretYSlop - 1;
+ - caretYSlop - 1);
if (stuttered && (direction < 0 && currentLine > topStutterLine)) {
topLineNew = topLine;
@@ -2907,15 +2923,17 @@ void Editor::ChangeCaseOfSelection(int caseMapping) {
}
void Editor::LineTranspose() {
- Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
if (line > 0) {
UndoGroup ug(pdoc);
- const Sci::Position startPrevious = pdoc->LineStart(line - 1);
- const std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1));
+ const Sci::Position startPrevious = static_cast<Sci::Position>(pdoc->LineStart(line - 1));
+ const std::string linePrevious = RangeText(startPrevious,
+ static_cast<Sci::Position>(pdoc->LineEnd(line - 1)));
- Sci::Position startCurrent = pdoc->LineStart(line);
- const std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line));
+ Sci::Position startCurrent = static_cast<Sci::Position>(pdoc->LineStart(line));
+ const std::string lineCurrent = RangeText(startCurrent,
+ static_cast<Sci::Position>(pdoc->LineEnd(line)));
pdoc->DeleteChars(startCurrent, static_cast<Sci::Position>(lineCurrent.length()));
pdoc->DeleteChars(startPrevious, static_cast<Sci::Position>(linePrevious.length()));
@@ -2931,8 +2949,10 @@ void Editor::LineTranspose() {
}
void Editor::LineReverse() {
- const Sci::Line lineStart = pdoc->LineFromPosition(sel.RangeMain().Start().Position());
- const Sci::Line lineEnd = pdoc->LineFromPosition(sel.RangeMain().End().Position()-1);
+ const Sci::Line lineStart = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.RangeMain().Start().Position()));
+ const Sci::Line lineEnd = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.RangeMain().End().Position()-1));
const Sci::Line lineDiff = lineEnd - lineStart;
if (lineDiff <= 0)
return;
@@ -2940,10 +2960,10 @@ void Editor::LineReverse() {
for (Sci::Line i=(lineDiff+1)/2-1; i>=0; --i) {
const Sci::Line lineNum2 = lineEnd - i;
const Sci::Line lineNum1 = lineStart + i;
- Sci::Position lineStart2 = pdoc->LineStart(lineNum2);
- const Sci::Position lineStart1 = pdoc->LineStart(lineNum1);
- const std::string line2 = RangeText(lineStart2, pdoc->LineEnd(lineNum2));
- const std::string line1 = RangeText(lineStart1, pdoc->LineEnd(lineNum1));
+ Sci::Position lineStart2 = static_cast<Sci::Position>(pdoc->LineStart(lineNum2));
+ const Sci::Position lineStart1 = static_cast<Sci::Position>(pdoc->LineStart(lineNum1));
+ const std::string line2 = RangeText(lineStart2, static_cast<Sci::Position>(pdoc->LineEnd(lineNum2)));
+ const std::string line1 = RangeText(lineStart1, static_cast<Sci::Position>(pdoc->LineEnd(lineNum1)));
const Sci::Position lineLen2 = static_cast<Sci::Position>(line2.length());
const Sci::Position lineLen1 = static_cast<Sci::Position>(line1.length());
pdoc->DeleteChars(lineStart2, lineLen2);
@@ -2953,7 +2973,8 @@ void Editor::LineReverse() {
pdoc->InsertString(lineStart1, line2.c_str(), lineLen2);
}
// Wholly select all affected lines
- sel.RangeMain() = SelectionRange(pdoc->LineStart(lineStart), pdoc->LineStart(lineEnd+1));
+ sel.RangeMain() = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineStart)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineEnd+1)));
}
void Editor::Duplicate(bool forLine) {
@@ -2971,9 +2992,9 @@ void Editor::Duplicate(bool forLine) {
SelectionPosition start = sel.Range(r).Start();
SelectionPosition end = sel.Range(r).End();
if (forLine) {
- Sci::Line line = pdoc->LineFromPosition(sel.Range(r).caret.Position());
- start = SelectionPosition(pdoc->LineStart(line));
- end = SelectionPosition(pdoc->LineEnd(line));
+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.Range(r).caret.Position()));
+ start = SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(line)));
+ end = SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(line)));
}
std::string text = RangeText(start.Position(), end.Position());
Sci::Position lengthInserted = eolLen;
@@ -2984,8 +3005,9 @@ void Editor::Duplicate(bool forLine) {
if (sel.Count() && sel.IsRectangular()) {
SelectionPosition last = sel.Last();
if (forLine) {
- Sci::Line line = pdoc->LineFromPosition(last.Position());
- last = SelectionPosition(last.Position() + pdoc->LineStart(line+1) - pdoc->LineStart(line));
+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(last.Position()));
+ last = SelectionPosition(last.Position() +
+ static_cast<Sci::Position>(pdoc->LineStart(line+1) - pdoc->LineStart(line)));
}
if (sel.Rectangular().anchor > sel.Rectangular().caret)
sel.Rectangular().anchor = last;
@@ -3054,8 +3076,8 @@ SelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direct
int skipLines = 0;
if (vs.annotationVisible) {
- const Sci::Line lineDoc = pdoc->LineFromPosition(spStart.Position());
- const Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc));
+ const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(spStart.Position()));
+ const Point ptStartLine = LocationFromPosition(static_cast<Sci::Position>(pdoc->LineStart(lineDoc)));
const int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight;
if (direction < 0 && subLine == 0) {
@@ -3145,7 +3167,7 @@ void Editor::ParaUpOrDown(int direction, Selection::selTypes selt) {
Sci::Position savedPos = sel.MainCaret();
do {
MovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt);
- lineDoc = pdoc->LineFromPosition(sel.MainCaret());
+ lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
if (direction > 0) {
if (sel.MainCaret() >= pdoc->Length() && !cs.GetVisible(lineDoc)) {
if (selt == Selection::noSel) {
@@ -3321,7 +3343,8 @@ int Editor::HorizontalMove(unsigned int iMessage) {
}
break;
case SCI_HOMERECTEXTEND:
- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
+ spCaret = SelectionPosition(
+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
break;
case SCI_VCHOMERECTEXTEND:
spCaret = SelectionPosition(pdoc->VCHomePosition(spCaret.Position()));
@@ -3392,7 +3415,8 @@ int Editor::HorizontalMove(unsigned int iMessage) {
break;
case SCI_HOME:
case SCI_HOMEEXTEND:
- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
+ spCaret = SelectionPosition(
+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
break;
case SCI_HOMEDISPLAY:
case SCI_HOMEDISPLAYEXTEND:
@@ -3402,7 +3426,8 @@ int Editor::HorizontalMove(unsigned int iMessage) {
case SCI_HOMEWRAPEXTEND:
spCaret = MovePositionSoVisible(StartEndDisplayLine(spCaret.Position(), true), -1);
if (spCaretNow <= spCaret)
- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
+ spCaret = SelectionPosition(
+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
break;
case SCI_VCHOME:
case SCI_VCHOMEEXTEND:
@@ -3552,13 +3577,13 @@ int Editor::DelWordOrLine(unsigned int iMessage) {
break;
case SCI_DELLINELEFT:
rangeDelete = Range(
- pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position())),
+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position()))),
sel.Range(r).caret.Position());
break;
case SCI_DELLINERIGHT:
rangeDelete = Range(
sel.Range(r).caret.Position(),
- pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position())));
+ static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position()))));
break;
}
if (!RangeContainsProtected(rangeDelete.start, rangeDelete.end)) {
@@ -3669,11 +3694,11 @@ int Editor::KeyCommand(unsigned int iMessage) {
SetLastXChosen();
break;
case SCI_DOCUMENTEND:
- MovePositionTo(pdoc->Length());
+ MovePositionTo(static_cast<Sci::Position>(pdoc->Length()));
SetLastXChosen();
break;
case SCI_DOCUMENTENDEXTEND:
- MovePositionTo(pdoc->Length(), Selection::selStream);
+ MovePositionTo(static_cast<Sci::Position>(pdoc->Length()), Selection::selStream);
SetLastXChosen();
break;
case SCI_STUTTEREDPAGEUP:
@@ -3780,26 +3805,26 @@ int Editor::KeyCommand(unsigned int iMessage) {
return DelWordOrLine(iMessage);
case SCI_LINECOPY: {
- const Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position());
- const Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());
- CopyRangeToClipboard(pdoc->LineStart(lineStart),
- pdoc->LineStart(lineEnd + 1));
+ const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position()));
+ const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position()));
+ CopyRangeToClipboard(static_cast<Sci::Position>(pdoc->LineStart(lineStart)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1)));
}
break;
case SCI_LINECUT: {
- const Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position());
- const Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());
- const Sci::Position start = pdoc->LineStart(lineStart);
- const Sci::Position end = pdoc->LineStart(lineEnd + 1);
+ const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position()));
+ const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position()));
+ const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(lineStart));
+ const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1));
SetSelection(start, end);
Cut();
SetLastXChosen();
}
break;
case SCI_LINEDELETE: {
- const Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
- const Sci::Position start = pdoc->LineStart(line);
- const Sci::Position end = pdoc->LineStart(line + 1);
+ const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(line));
+ const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(line + 1));
pdoc->DeleteChars(start, end - start);
}
break;
@@ -3852,9 +3877,10 @@ int Editor::KeyDownWithModifiers(int key, int modifiers, bool *consumed) {
void Editor::Indent(bool forwards) {
UndoGroup ug(pdoc);
for (size_t r=0; r<sel.Count(); r++) {
- Sci::Line lineOfAnchor = pdoc->LineFromPosition(sel.Range(r).anchor.Position());
+ Sci::Line lineOfAnchor = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.Range(r).anchor.Position()));
Sci::Position caretPosition = sel.Range(r).caret.Position();
- Sci::Line lineCurrentPos = pdoc->LineFromPosition(caretPosition);
+ Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(caretPosition));
if (lineOfAnchor == lineCurrentPos) {
if (forwards) {
pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length());
@@ -3900,8 +3926,10 @@ void Editor::Indent(bool forwards) {
}
}
} else { // Multiline
- const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() - pdoc->LineStart(lineOfAnchor);
- const Sci::Position currentPosPosOnLine = caretPosition - pdoc->LineStart(lineCurrentPos);
+ const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() -
+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor));
+ const Sci::Position currentPosPosOnLine = caretPosition -
+ static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos));
// Multiple lines selected so indent / dedent
const Sci::Line lineTopSel = std::min(lineOfAnchor, lineCurrentPos);
Sci::Line lineBottomSel = std::max(lineOfAnchor, lineCurrentPos);
@@ -3910,14 +3938,18 @@ void Editor::Indent(bool forwards) {
pdoc->Indent(forwards, lineBottomSel, lineTopSel);
if (lineOfAnchor < lineCurrentPos) {
if (currentPosPosOnLine == 0)
- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
else
- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos + 1), pdoc->LineStart(lineOfAnchor));
+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
} else {
if (anchorPosOnLine == 0)
- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
else
- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor + 1));
+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor + 1)));
}
}
}
@@ -4003,7 +4035,7 @@ long Editor::SearchText(
pdoc->SetCaseFolder(CaseFolderForEncoding());
try {
if (iMessage == SCI_SEARCHNEXT) {
- pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,
+ pos = pdoc->FindText(searchAnchor, static_cast<Sci::Position>(pdoc->Length()), txt,
static_cast<int>(wParam),
&lengthFound);
} else {
@@ -4068,7 +4100,7 @@ void Editor::GoToLine(Sci::Line lineNo) {
lineNo = pdoc->LinesTotal();
if (lineNo < 0)
lineNo = 0;
- SetEmptySelection(pdoc->LineStart(lineNo));
+ SetEmptySelection(static_cast<Sci::Position>(pdoc->LineStart(lineNo)));
ShowCaretAtCurrentPosition();
EnsureCaretVisible();
}
@@ -4096,9 +4128,9 @@ std::string Editor::RangeText(Sci::Position start, Sci::Position end) const {
void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) {
if (sel.Empty()) {
if (allowLineCopy) {
- Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret());
- Sci::Position start = pdoc->LineStart(currentLine);
- Sci::Position end = pdoc->LineEnd(currentLine);
+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(currentLine));
+ Sci::Position end = static_cast<Sci::Position>(pdoc->LineEnd(currentLine));
std::string text = RangeText(start, end);
if (pdoc->eolMode != SC_EOL_LF)
@@ -4314,17 +4346,17 @@ void Editor::TrimAndSetSelection(Sci::Position currentPos_, Sci::Position anchor
void Editor::LineSelection(Sci::Position lineCurrentPos_, Sci::Position lineAnchorPos_, bool wholeLine) {
Sci::Position selCurrentPos, selAnchorPos;
if (wholeLine) {
- Sci::Line lineCurrent_ = pdoc->LineFromPosition(lineCurrentPos_);
- Sci::Line lineAnchor_ = pdoc->LineFromPosition(lineAnchorPos_);
+ Sci::Line lineCurrent_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineCurrentPos_));
+ Sci::Line lineAnchor_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineAnchorPos_));
if (lineAnchorPos_ < lineCurrentPos_) {
- selCurrentPos = pdoc->LineStart(lineCurrent_ + 1);
- selAnchorPos = pdoc->LineStart(lineAnchor_);
+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_ + 1));
+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
} else if (lineAnchorPos_ > lineCurrentPos_) {
- selCurrentPos = pdoc->LineStart(lineCurrent_);
- selAnchorPos = pdoc->LineStart(lineAnchor_ + 1);
+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_));
+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
} else { // Same line, select it
- selCurrentPos = pdoc->LineStart(lineAnchor_ + 1);
- selAnchorPos = pdoc->LineStart(lineAnchor_);
+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
}
} else {
if (lineAnchorPos_ < lineCurrentPos_) {
@@ -4946,9 +4978,9 @@ Sci::Position Editor::PositionAfterArea(PRectangle rcArea) const {
// detect multiline comment additions and heals single line comments
Sci::Line lineAfter = TopLineOfMain() + static_cast<Sci::Line>(rcArea.bottom - 1) / vs.lineHeight + 1;
if (lineAfter < cs.LinesDisplayed())
- return pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1);
+ return static_cast<Sci::Position>(pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1));
else
- return pdoc->Length();
+ return static_cast<Sci::Position>(pdoc->Length());
}
// Style to a position within the view. If this causes a change at end of last line then
@@ -5020,7 +5052,7 @@ void Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) {
void Editor::IdleStyling() {
const Sci::Position posAfterArea = PositionAfterArea(GetClientRectangle());
const Sci::Position endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ?
- pdoc->Length() : posAfterArea;
+ static_cast<Sci::Position>(pdoc->Length()) : posAfterArea;
const Sci::Position posAfterMax = PositionAfterMaxStyling(endGoal, false);
pdoc->StyleToAdjustingLineDuration(posAfterMax);
if (pdoc->GetEndStyled() >= endGoal) {
@@ -5032,7 +5064,7 @@ void Editor::IdleWork() {
// Style the line after the modification as this allows modifications that change just the
// line of the modification to heal instead of propagating to the rest of the window.
if (workNeeded.items & WorkNeeded::workStyle) {
- StyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2));
+ StyleToPositionInView(static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2)));
}
NotifyUpdateUI();
workNeeded.Reset();
@@ -5227,7 +5259,8 @@ void Editor::FoldLine(Sci::Line line, int action) {
cs.SetExpanded(line, false);
cs.SetVisible(line + 1, lineMaxSubord, false);
- const Sci::Line lineCurrent = pdoc->LineFromPosition(sel.MainCaret());
+ const Sci::Line lineCurrent = static_cast<Sci::Line>(
+ pdoc->LineFromPosition(sel.MainCaret()));
if (lineCurrent > line && lineCurrent <= lineMaxSubord) {
// This does not re-expand the fold
EnsureCaretVisible();
@@ -5346,7 +5379,7 @@ void Editor::EnsureLineVisible(Sci::Line lineDoc, bool enforcePolicy) {
}
void Editor::FoldAll(int action) {
- pdoc->EnsureStyledTo(pdoc->Length());
+ pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->Length()));
Sci::Line maxLine = pdoc->LinesTotal();
bool expanding = action == SC_FOLDACTION_EXPAND;
if (action == SC_FOLDACTION_TOGGLE) {
@@ -5435,8 +5468,8 @@ void Editor::FoldChanged(Sci::Line line, int levelNow, int levelPrev) {
void Editor::NeedShown(Sci::Position pos, Sci::Position len) {
if (foldAutomatic & SC_AUTOMATICFOLD_SHOW) {
- const Sci::Line lineStart = pdoc->LineFromPosition(pos);
- const Sci::Line lineEnd = pdoc->LineFromPosition(pos+len);
+ const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(pos));
+ const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(pos+len));
for (Sci::Line line = lineStart; line <= lineEnd; line++) {
EnsureLineVisible(line, false);
}
@@ -5704,7 +5737,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (lParam == 0)
return 0;
UndoGroup ug(pdoc);
- pdoc->DeleteChars(0, pdoc->Length());
+ pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
SetEmptySelection(0);
const char *text = CharPtrFromSPtr(lParam);
pdoc->InsertString(0, text, istrlen(text));
@@ -5781,8 +5814,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_GETLINE: { // Risk of overwriting the end of the buffer
- Sci::Position lineStart = pdoc->LineStart(static_cast<Sci::Line>(wParam));
- Sci::Position lineEnd = pdoc->LineStart(static_cast<Sci::Line>(wParam + 1));
+ Sci::Position lineStart = static_cast<Sci::Position>(
+ pdoc->LineStart(static_cast<Sci::Line>(wParam)));
+ Sci::Position lineEnd = static_cast<Sci::Position>(
+ pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)));
if (lParam == 0) {
return lineEnd - lineStart;
}
@@ -5807,7 +5842,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
Sci::Position nStart = static_cast<Sci::Position>(wParam);
Sci::Position nEnd = static_cast<Sci::Position>(lParam);
if (nEnd < 0)
- nEnd = pdoc->Length();
+ nEnd = static_cast<Sci::Position>(pdoc->Length());
if (nStart < 0)
nStart = nEnd; // Remove selection
InvalidateSelection(SelectionRange(nStart, nEnd));
@@ -5893,7 +5928,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_TARGETWHOLEDOCUMENT:
targetStart = 0;
- targetEnd = pdoc->Length();
+ targetEnd = static_cast<Sci::Position>(pdoc->Length());
break;
case SCI_TARGETFROMSELECTION:
@@ -5940,7 +5975,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true);
case SCI_POSITIONRELATIVE:
- return Sci::clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length());
+ return Sci::clamp(static_cast<int>(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam))),
+ 0, static_cast<int>(pdoc->Length()));
case SCI_LINESCROLL:
ScrollTo(topLine + static_cast<Sci::Line>(lParam));
@@ -6001,7 +6037,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);
Sci::Position cpMax = static_cast<Sci::Position>(tr->chrg.cpMax);
if (cpMax == -1)
- cpMax = pdoc->Length();
+ cpMax = static_cast<Sci::Position>(pdoc->Length());
PLATFORM_ASSERT(cpMax <= pdoc->Length());
int len = static_cast<int>(cpMax - tr->chrg.cpMin); // No -1 as cpMin and cpMax are referring to inter character positions
pdoc->GetCharRange(tr->lpstrText, static_cast<int>(tr->chrg.cpMin), len);
@@ -6072,7 +6108,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return 0;
case SCI_APPENDTEXT:
- pdoc->InsertString(pdoc->Length(), CharPtrFromSPtr(lParam), static_cast<int>(wParam));
+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()),
+ CharPtrFromSPtr(lParam), static_cast<int>(wParam));
return 0;
case SCI_CLEARALL:
@@ -6311,9 +6348,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_GETCURLINE: {
- const Sci::Line lineCurrentPos = pdoc->LineFromPosition(sel.MainCaret());
- const Sci::Position lineStart = pdoc->LineStart(lineCurrentPos);
- const Sci::Position lineEnd = pdoc->LineStart(lineCurrentPos + 1);
+ const Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ const Sci::Position lineStart = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos));
+ const Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1));
if (lParam == 0) {
return 1 + lineEnd - lineStart;
}
@@ -7585,8 +7622,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
}
case SCI_GETLINESELSTARTPOSITION:
case SCI_GETLINESELENDPOSITION: {
- SelectionSegment segmentLine(SelectionPosition(pdoc->LineStart(static_cast<int>(wParam))),
- SelectionPosition(pdoc->LineEnd(static_cast<int>(wParam))));
+ SelectionSegment segmentLine(
+ SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(static_cast<int>(wParam)))),
+ SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(static_cast<int>(wParam)))));
for (size_t r=0; r<sel.Count(); r++) {
const SelectionSegment portion = sel.Range(r).Intersect(segmentLine);
if (portion.start.IsValid()) {