diff options
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 657 |
1 files changed, 329 insertions, 328 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 35bbc10fe..21c8fdf40 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -123,7 +123,7 @@ Editor::Editor() { ptMouseLast.y = 0; inDragDrop = ddNone; dropWentOutside = false; - posDrop = SelectionPosition(invalidPosition); + posDrop = SelectionPosition(Sci::invalidPosition); hotSpotClickPos = INVALID_POSITION; selectionType = selChar; @@ -296,7 +296,7 @@ PointDocument Editor::DocumentPointFromView(Point ptView) const { return ptDocument; } -int Editor::TopLineOfMain() const { +Sci::Line Editor::TopLineOfMain() const { if (wMargin.GetID()) return 0; else @@ -319,25 +319,25 @@ PRectangle Editor::GetTextRectangle() const { return rc; } -int Editor::LinesOnScreen() const { +Sci::Line Editor::LinesOnScreen() const { PRectangle rcClient = GetClientRectangle(); int htClient = static_cast<int>(rcClient.bottom - rcClient.top); //Platform::DebugPrintf("lines on screen = %d\n", htClient / lineHeight + 1); return htClient / vs.lineHeight; } -int Editor::LinesToScroll() const { - int retVal = LinesOnScreen() - 1; +Sci::Line Editor::LinesToScroll() const { + Sci::Line retVal = LinesOnScreen() - 1; if (retVal < 1) return 1; else return retVal; } -int Editor::MaxScrollPos() const { +Sci::Line Editor::MaxScrollPos() const { //Platform::DebugPrintf("Lines %d screen = %d maxScroll = %d\n", //LinesTotal(), LinesOnScreen(), LinesTotal() - LinesOnScreen() + 1); - int retVal = cs.LinesDisplayed(); + Sci::Line retVal = cs.LinesDisplayed(); if (endAtLastLine) { retVal -= LinesOnScreen(); } else { @@ -369,11 +369,11 @@ Point Editor::LocationFromPosition(SelectionPosition pos, PointEnd pe) { return view.LocationFromPosition(surface, *this, pos, topLine, vs, pe); } -Point Editor::LocationFromPosition(int pos, PointEnd pe) { +Point Editor::LocationFromPosition(Sci::Position pos, PointEnd pe) { return LocationFromPosition(SelectionPosition(pos), pe); } -int Editor::XFromPosition(int pos) { +int Editor::XFromPosition(Sci::Position pos) { Point pt = LocationFromPosition(pos); return static_cast<int>(pt.x) - vs.textStart + xOffset; } @@ -403,7 +403,7 @@ SelectionPosition Editor::SPositionFromLocation(Point pt, bool canReturnInvalid, return view.SPositionFromLocation(surface, *this, ptdoc, canReturnInvalid, charPosition, virtualSpace, vs); } -int Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) { +Sci::Position Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) { return SPositionFromLocation(pt, canReturnInvalid, charPosition, false).Position(); } @@ -412,7 +412,7 @@ int Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosit * Ensure is between whole characters when document is in multi-byte or UTF-8 mode. * This method is used for rectangular selections and does not work on wrapped lines. */ -SelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) { +SelectionPosition Editor::SPositionFromLineX(Sci::Line lineDoc, int x) { RefreshStyleData(); if (lineDoc >= pdoc->LinesTotal()) return SelectionPosition(pdoc->Length()); @@ -421,15 +421,15 @@ SelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) { return view.SPositionFromLineX(surface, *this, lineDoc, x, vs); } -int Editor::PositionFromLineX(int lineDoc, int x) { +Sci::Position Editor::PositionFromLineX(Sci::Line lineDoc, int x) { return SPositionFromLineX(lineDoc, x).Position(); } -int Editor::LineFromLocation(Point pt) const { +Sci::Line Editor::LineFromLocation(Point pt) const { return cs.DocFromDisplay(static_cast<int>(pt.y) / vs.lineHeight + topLine); } -void Editor::SetTopLine(int topLineNew) { +void Editor::SetTopLine(Sci::Line topLineNew) { if ((topLine != topLineNew) && (topLineNew >= 0)) { topLine = topLineNew; ContainerNeedsUpdate(SC_UPDATE_V_SCROLL); @@ -480,7 +480,7 @@ void Editor::Redraw() { //wMain.InvalidateAll(); } -void Editor::RedrawSelMargin(int line, bool allAfter) { +void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) { const bool markersInText = vs.maskInLine || vs.maskDrawInText; if (!wMargin.GetID() || markersInText) { // May affect text area so may need to abandon and retry if (AbandonPaint()) { @@ -526,8 +526,8 @@ void Editor::RedrawSelMargin(int line, bool allAfter) { } PRectangle Editor::RectangleFromRange(Range r, int overlap) { - const int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First())); - const int maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last())); + const Sci::Line minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First())); + const Sci::Line maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last())); const PRectangle rcClientDrawing = GetClientDrawingRectangle(); PRectangle rc; const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0; @@ -542,11 +542,11 @@ PRectangle Editor::RectangleFromRange(Range r, int overlap) { return rc; } -void Editor::InvalidateRange(int start, int end) { +void Editor::InvalidateRange(Sci::Position start, Sci::Position end) { RedrawRect(RectangleFromRange(Range(start, end), view.LinesOverlap() ? vs.lineOverlap : 0)); } -int Editor::CurrentPosition() const { +Sci::Position Editor::CurrentPosition() const { return sel.MainCaret(); } @@ -569,10 +569,10 @@ void Editor::SetRectangularRange() { if (sel.selType == Selection::selThin) { xCaret = xAnchor; } - int lineAnchorRect = pdoc->LineFromPosition(sel.Rectangular().anchor.Position()); - int lineCaret = pdoc->LineFromPosition(sel.Rectangular().caret.Position()); + Sci::Line lineAnchorRect = pdoc->LineFromPosition(sel.Rectangular().anchor.Position()); + Sci::Line lineCaret = pdoc->LineFromPosition(sel.Rectangular().caret.Position()); int increment = (lineCaret > lineAnchorRect) ? 1 : -1; - for (int line=lineAnchorRect; line != lineCaret+increment; line += increment) { + for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) { SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor)); if ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) == 0) range.ClearVirtualSpace(); @@ -600,9 +600,9 @@ void Editor::InvalidateSelection(SelectionRange newMain, bool invalidateWholeSel if (sel.Count() > 1 || !(sel.RangeMain().anchor == newMain.anchor) || sel.IsRectangular()) { invalidateWholeSelection = true; } - int firstAffected = Platform::Minimum(sel.RangeMain().Start().Position(), newMain.Start().Position()); + Sci::Position firstAffected = Platform::Minimum(sel.RangeMain().Start().Position(), newMain.Start().Position()); // +1 for lastAffected ensures caret repainted - int lastAffected = Platform::Maximum(newMain.caret.Position()+1, newMain.anchor.Position()); + Sci::Position lastAffected = Platform::Maximum(newMain.caret.Position()+1, newMain.anchor.Position()); lastAffected = Platform::Maximum(lastAffected, sel.RangeMain().End().Position()); if (invalidateWholeSelection) { for (size_t r=0; r<sel.Count(); r++) { @@ -623,7 +623,7 @@ void Editor::InvalidateWholeSelection() { void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) { currentPos_ = ClampPositionIntoDocument(currentPos_); anchor_ = ClampPositionIntoDocument(anchor_); - int currentLine = pdoc->LineFromPosition(currentPos_.Position()); + Sci::Line currentLine = 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) { @@ -650,14 +650,14 @@ void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition ancho QueueIdleWork(WorkNeeded::workUpdateUI); } -void Editor::SetSelection(int currentPos_, int anchor_) { +void Editor::SetSelection(Sci::Position currentPos_, Sci::Position anchor_) { SetSelection(SelectionPosition(currentPos_), SelectionPosition(anchor_)); } // Just move the caret on the main selection void Editor::SetSelection(SelectionPosition currentPos_) { currentPos_ = ClampPositionIntoDocument(currentPos_); - int currentLine = pdoc->LineFromPosition(currentPos_.Position()); + Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position()); if (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) { InvalidateSelection(SelectionRange(currentPos_)); } @@ -683,7 +683,7 @@ void Editor::SetSelection(int currentPos_) { } void Editor::SetEmptySelection(SelectionPosition currentPos_) { - int currentLine = pdoc->LineFromPosition(currentPos_.Position()); + Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position()); SelectionRange rangeNew(ClampPositionIntoDocument(currentPos_)); if (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) { InvalidateSelection(rangeNew); @@ -700,15 +700,15 @@ void Editor::SetEmptySelection(SelectionPosition currentPos_) { QueueIdleWork(WorkNeeded::workUpdateUI); } -void Editor::SetEmptySelection(int currentPos_) { +void Editor::SetEmptySelection(Sci::Position currentPos_) { SetEmptySelection(SelectionPosition(currentPos_)); } void Editor::MultipleSelectAdd(AddNumber addNumber) { if (SelectionEmpty() || !multipleSelection) { // Select word at caret - const int startWord = pdoc->ExtendWordSelect(sel.MainCaret(), -1, true); - const int endWord = pdoc->ExtendWordSelect(startWord, 1, true); + const Sci::Position startWord = pdoc->ExtendWordSelect(sel.MainCaret(), -1, true); + const Sci::Position endWord = pdoc->ExtendWordSelect(startWord, 1, true); TrimAndSetSelection(endWord, startWord); } else { @@ -736,11 +736,11 @@ void Editor::MultipleSelectAdd(AddNumber addNumber) { } for (std::vector<Range>::const_iterator it = searchRanges.begin(); it != searchRanges.end(); ++it) { - int searchStart = it->start; - const int searchEnd = it->end; + Sci::Position searchStart = it->start; + const Sci::Position searchEnd = it->end; for (;;) { - int lengthFound = static_cast<int>(selectedText.length()); - int pos = static_cast<int>(pdoc->FindText(searchStart, searchEnd, + Sci::Position lengthFound = static_cast<Sci::Position>(selectedText.length()); + Sci::Position pos = static_cast<Sci::Position>(pdoc->FindText(searchStart, searchEnd, selectedText.c_str(), searchFlags, &lengthFound)); if (pos >= 0) { sel.AddSelection(SelectionRange(pos + lengthFound, pos)); @@ -757,14 +757,14 @@ void Editor::MultipleSelectAdd(AddNumber addNumber) { } } -bool Editor::RangeContainsProtected(int start, int end) const { +bool Editor::RangeContainsProtected(Sci::Position start, Sci::Position end) const { if (vs.ProtectionActive()) { if (start > end) { - int t = start; + Sci::Position t = start; start = end; end = t; } - for (int pos = start; pos < end; pos++) { + for (Sci::Position pos = start; pos < end; pos++) { if (vs.styles[pdoc->StyleIndexAt(pos)].IsProtected()) return true; } @@ -785,12 +785,12 @@ bool Editor::SelectionContainsProtected() { /** * Asks document to find a good position and then moves out of any invisible positions. */ -int Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) const { +Sci::Position Editor::MovePositionOutsideChar(Sci::Position pos, Sci::Position moveDir, bool checkLineEnd) const { return MovePositionOutsideChar(SelectionPosition(pos), moveDir, checkLineEnd).Position(); } -SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, int moveDir, bool checkLineEnd) const { - int posMoved = pdoc->MovePositionOutsideChar(pos.Position(), moveDir, checkLineEnd); +SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, Sci::Position moveDir, bool checkLineEnd) const { + Sci::Position posMoved = pdoc->MovePositionOutsideChar(pos.Position(), moveDir, checkLineEnd); if (posMoved != pos.Position()) pos.SetPosition(posMoved); if (vs.ProtectionActive()) { @@ -812,7 +812,7 @@ SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, int mov } void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) { - const int currentLine = pdoc->LineFromPosition(newPos.Position()); + const Sci::Line currentLine = pdoc->LineFromPosition(newPos.Position()); if (ensureVisible) { // In case in need of wrapping to ensure DisplayFromDoc works. if (currentLine >= wrapPending.start) @@ -844,7 +844,7 @@ void Editor::MovePositionTo(SelectionPosition newPos, Selection::selTypes selt, const SelectionPosition spCaret = ((sel.Count() == 1) && sel.Empty()) ? sel.Last() : SelectionPosition(INVALID_POSITION); - int delta = newPos.Position() - sel.MainCaret(); + Sci::Position delta = newPos.Position() - sel.MainCaret(); newPos = ClampPositionIntoDocument(newPos); newPos = MovePositionOutsideChar(newPos, delta); if (!multipleSelection && sel.IsRectangular() && (selt == Selection::selStream)) { @@ -871,18 +871,18 @@ void Editor::MovePositionTo(SelectionPosition newPos, Selection::selTypes selt, MovedCaret(newPos, spCaret, ensureVisible); } -void Editor::MovePositionTo(int newPos, Selection::selTypes selt, bool ensureVisible) { +void Editor::MovePositionTo(Sci::Position newPos, Selection::selTypes selt, bool ensureVisible) { MovePositionTo(SelectionPosition(newPos), selt, ensureVisible); } SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) { pos = ClampPositionIntoDocument(pos); pos = MovePositionOutsideChar(pos, moveDir); - int lineDoc = pdoc->LineFromPosition(pos.Position()); + Sci::Line lineDoc = pdoc->LineFromPosition(pos.Position()); if (cs.GetVisible(lineDoc)) { return pos; } else { - int lineDisplay = cs.DisplayFromDoc(lineDoc); + Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc); if (moveDir > 0) { // lineDisplay is already line before fold as lines in fold use display line of line after fold lineDisplay = Platform::Clamp(lineDisplay, 0, cs.LinesDisplayed()); @@ -894,7 +894,7 @@ SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveD } } -SelectionPosition Editor::MovePositionSoVisible(int pos, int moveDir) { +SelectionPosition Editor::MovePositionSoVisible(Sci::Position pos, int moveDir) { return MovePositionSoVisible(SelectionPosition(pos), moveDir); } @@ -908,15 +908,15 @@ Point Editor::PointMainCaret() { */ void Editor::SetLastXChosen() { Point pt = PointMainCaret(); - lastXChosen = static_cast<int>(pt.x) + xOffset; + lastXChosen = static_cast<Sci::Position>(pt.x) + xOffset; } -void Editor::ScrollTo(int line, bool moveThumb) { - int topLineNew = Platform::Clamp(line, 0, MaxScrollPos()); +void Editor::ScrollTo(Sci::Line line, bool moveThumb) { + Sci::Line topLineNew = Platform::Clamp(line, 0, MaxScrollPos()); if (topLineNew != topLine) { // Try to optimise small scrolls #ifndef UNDER_CE - int linesToMove = topLine - topLineNew; + Sci::Line linesToMove = topLine - topLineNew; bool performBlit = (abs(linesToMove) <= 10) && (paintState == notPainting); willRedrawAll = !performBlit; #endif @@ -941,7 +941,7 @@ void Editor::ScrollTo(int line, bool moveThumb) { } } -void Editor::ScrollText(int /* linesToMove */) { +void Editor::ScrollText(Sci::Line /* linesToMove */) { //Platform::DebugPrintf("Editor::ScrollText %d\n", linesToMove); Redraw(); } @@ -959,9 +959,9 @@ void Editor::HorizontalScrollTo(int xPos) { } void Editor::VerticalCentreCaret() { - int lineDoc = pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()); - int lineDisplay = cs.DisplayFromDoc(lineDoc); - int newTop = lineDisplay - (LinesOnScreen() / 2); + Sci::Line lineDoc = pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()); + Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc); + Sci::Line newTop = lineDisplay - (LinesOnScreen() / 2); if (topLine != newTop) { SetTopLine(newTop > 0 ? newTop : 0); RedrawRect(GetClientRectangle()); @@ -977,16 +977,16 @@ static int istrlen(const char *s) { void Editor::MoveSelectedLines(int lineDelta) { // if selection doesn't start at the beginning of the line, set the new start - int selectionStart = SelectionStart().Position(); - int startLine = pdoc->LineFromPosition(selectionStart); - int beginningOfStartLine = pdoc->LineStart(startLine); + Sci::Position selectionStart = SelectionStart().Position(); + Sci::Line startLine = pdoc->LineFromPosition(selectionStart); + Sci::Position beginningOfStartLine = 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 - int selectionEnd = SelectionEnd().Position(); - int endLine = pdoc->LineFromPosition(selectionEnd); - int beginningOfEndLine = pdoc->LineStart(endLine); + Sci::Position selectionEnd = SelectionEnd().Position(); + Sci::Line endLine = pdoc->LineFromPosition(selectionEnd); + Sci::Position beginningOfEndLine = pdoc->LineStart(endLine); bool appendEol = false; if (selectionEnd > beginningOfEndLine || selectionStart == selectionEnd) { @@ -1015,9 +1015,9 @@ void Editor::MoveSelectedLines(int lineDelta) { SelectionText selectedText; CopySelectionRange(&selectedText); - int selectionLength = SelectionRange(selectionStart, selectionEnd).Length(); + Sci::Position selectionLength = SelectionRange(selectionStart, selectionEnd).Length(); Point currentLocation = LocationFromPosition(CurrentPosition()); - int currentLine = LineFromLocation(currentLocation); + Sci::Line currentLine = LineFromLocation(currentLocation); if (appendEol) SetSelection(pdoc->MovePositionOutsideChar(selectionStart - 1, -1), selectionEnd); @@ -1030,7 +1030,7 @@ void Editor::MoveSelectedLines(int lineDelta) { selectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength); if (appendEol) { - const int lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, istrlen(eol)); + const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, istrlen(eol)); selectionLength += lengthInserted; } SetSelection(CurrentPosition(), CurrentPosition() + selectionLength); @@ -1053,7 +1053,7 @@ void Editor::MoveCaretInsideView(bool ensureVisible) { false, false, UserVirtualSpace()), Selection::noSel, ensureVisible); } else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) { - int yOfLastLineFullyDisplayed = static_cast<int>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight; + Sci::Position yOfLastLineFullyDisplayed = static_cast<Sci::Position>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight; MovePositionTo(SPositionFromLocation( Point::FromInts(lastXChosen - xOffset, static_cast<int>(rcClient.top) + yOfLastLineFullyDisplayed), false, false, UserVirtualSpace()), @@ -1061,7 +1061,7 @@ void Editor::MoveCaretInsideView(bool ensureVisible) { } } -int Editor::DisplayFromPosition(int pos) { +Sci::Line Editor::DisplayFromPosition(Sci::Position pos) { AutoSurface surface(this); return view.DisplayFromPosition(surface, *this, pos, vs); } @@ -1130,9 +1130,9 @@ Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &ran // Vertical positioning if ((options & xysVertical) && (pt.y < rcClient.top || ptBottomCaret.y >= rcClient.bottom || (caretYPolicy & CARET_STRICT) != 0)) { - const int lineCaret = DisplayFromPosition(range.caret.Position()); - const int linesOnScreen = LinesOnScreen(); - const int halfScreen = Platform::Maximum(linesOnScreen - 1, 2) / 2; + const Sci::Line lineCaret = DisplayFromPosition(range.caret.Position()); + const Sci::Line linesOnScreen = LinesOnScreen(); + const Sci::Line halfScreen = Platform::Maximum(linesOnScreen - 1, 2) / 2; const bool bSlop = (caretYPolicy & CARET_SLOP) != 0; const bool bStrict = (caretYPolicy & CARET_STRICT) != 0; const bool bJump = (caretYPolicy & CARET_JUMPS) != 0; @@ -1141,9 +1141,9 @@ Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &ran // It should be possible to scroll the window to show the caret, // but this fails to remove the caret on GTK+ if (bSlop) { // A margin is defined - int yMoveT, yMoveB; + Sci::Line yMoveT, yMoveB; if (bStrict) { - int yMarginT, yMarginB; + Sci::Line yMarginT, yMarginB; if (!(options & xysUseMargin)) { // In drag mode, avoid moves // otherwise, a double click will select several lines. @@ -1215,7 +1215,7 @@ Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &ran } } if (!(range.caret == range.anchor)) { - const int lineAnchor = DisplayFromPosition(range.anchor.Position()); + const Sci::Line lineAnchor = DisplayFromPosition(range.anchor.Position()); if (lineAnchor < lineCaret) { // Shift up to show anchor or as much of range as possible newXY.topLine = std::min(newXY.topLine, lineAnchor); @@ -1339,8 +1339,8 @@ Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &ran newXY.xOffset = std::max(newXY.xOffset, minOffset); } else { // Shift to right to show anchor or as much of range as possible - int minOffset = static_cast<int>(ptAnchor.x + xOffset - rcClient.right) + 1; - int maxOffset = static_cast<int>(pt.x + xOffset - rcClient.left) - 1; + int minOffset = static_cast<Sci::Position>(ptAnchor.x + xOffset - rcClient.right) + 1; + int maxOffset = static_cast<Sci::Position>(pt.x + xOffset - rcClient.left) - 1; newXY.xOffset = std::max(newXY.xOffset, minOffset); newXY.xOffset = std::min(newXY.xOffset, maxOffset); } @@ -1366,7 +1366,7 @@ void Editor::SetXYScroll(XYScrollPosition newXY) { PRectangle rcText = GetTextRectangle(); if (horizontalScrollBarVisible && rcText.Width() + xOffset > scrollWidth) { - scrollWidth = xOffset + static_cast<int>(rcText.Width()); + scrollWidth = xOffset + static_cast<Sci::Position>(rcText.Width()); SetScrollBars(); } } @@ -1449,7 +1449,7 @@ bool Editor::Wrapping() const { return vs.wrapState != eWrapNone; } -void Editor::NeedWrapping(int docLineStart, int docLineEnd) { +void Editor::NeedWrapping(Sci::Line docLineStart, Sci::Line docLineEnd) { //Platform::DebugPrintf("\nNeedWrapping: %0d..%0d\n", docLineStart, docLineEnd); if (wrapPending.AddRange(docLineStart, docLineEnd)) { view.llc.Invalidate(LineLayout::llPositions); @@ -1460,7 +1460,7 @@ void Editor::NeedWrapping(int docLineStart, int docLineEnd) { } } -bool Editor::WrapOneLine(Surface *surface, int lineToWrap) { +bool Editor::WrapOneLine(Surface *surface, Sci::Line lineToWrap) { AutoLineLayout ll(view.llc, view.RetrieveLineLayout(lineToWrap, *this)); int linesWrapped = 1; if (ll) { @@ -1477,12 +1477,12 @@ bool Editor::WrapOneLine(Surface *surface, int lineToWrap) { // wsIdle: wrap one page + 100 lines // Return true if wrapping occurred. bool Editor::WrapLines(WrapScope ws) { - int goodTopLine = topLine; + Sci::Line goodTopLine = topLine; bool wrapOccurred = false; if (!Wrapping()) { if (wrapWidth != LineLayout::wrapWidthInfinite) { wrapWidth = LineLayout::wrapWidthInfinite; - for (int lineDoc = 0; lineDoc < pdoc->LinesTotal(); lineDoc++) { + for (Sci::Line lineDoc = 0; lineDoc < pdoc->LinesTotal(); lineDoc++) { cs.SetHeight(lineDoc, 1 + (vs.annotationVisible ? pdoc->AnnotationLines(lineDoc) : 0)); } @@ -1497,9 +1497,9 @@ bool Editor::WrapLines(WrapScope ws) { ws = WrapScope::wsAll; } // Decide where to start wrapping - int lineToWrap = wrapPending.start; - int lineToWrapEnd = std::min(wrapPending.end, pdoc->LinesTotal()); - const int lineDocTop = cs.DocFromDisplay(topLine); + Sci::Line lineToWrap = wrapPending.start; + Sci::Line lineToWrapEnd = std::min(wrapPending.end, pdoc->LinesTotal()); + const Sci::Line lineDocTop = cs.DocFromDisplay(topLine); const int subLineTop = topLine - cs.DisplayFromDoc(lineDocTop); if (ws == WrapScope::wsVisible) { lineToWrap = Platform::Clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal()); @@ -1507,7 +1507,7 @@ bool Editor::WrapLines(WrapScope ws) { // Since wrapping could reduce display lines, treat each // as taking only one display line. lineToWrapEnd = lineDocTop; - int lines = LinesOnScreen() + 1; + Sci::Line lines = LinesOnScreen() + 1; while ((lineToWrapEnd < cs.LinesInDoc()) && (lines>0)) { if (cs.GetVisible(lineToWrapEnd)) lines--; @@ -1521,7 +1521,7 @@ bool Editor::WrapLines(WrapScope ws) { } else if (ws == WrapScope::wsIdle) { lineToWrapEnd = lineToWrap + LinesOnScreen() + 100; } - const int lineEndNeedWrap = std::min(wrapPending.end, pdoc->LinesTotal()); + const Sci::Line lineEndNeedWrap = std::min(wrapPending.end, pdoc->LinesTotal()); lineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap); // Ensure all lines being wrapped are styled. @@ -1569,13 +1569,13 @@ void Editor::LinesJoin() { if (!RangeContainsProtected(targetStart, targetEnd)) { UndoGroup ug(pdoc); bool prevNonWS = true; - for (int pos = targetStart; pos < targetEnd; pos++) { + for (Sci::Position pos = targetStart; pos < targetEnd; pos++) { if (pdoc->IsPositionInLineEnd(pos)) { targetEnd -= pdoc->LenChar(pos); pdoc->DelChar(pos); if (prevNonWS) { // Ensure at least one space separating previous lines - const int lengthInserted = pdoc->InsertString(pos, " ", 1); + const Sci::Position lengthInserted = pdoc->InsertString(pos, " ", 1); targetEnd += lengthInserted; } } else { @@ -1601,19 +1601,19 @@ void Editor::LinesSplit(int pixelWidth) { PRectangle rcText = GetTextRectangle(); pixelWidth = static_cast<int>(rcText.Width()); } - int lineStart = pdoc->LineFromPosition(targetStart); - int lineEnd = pdoc->LineFromPosition(targetEnd); + Sci::Line lineStart = pdoc->LineFromPosition(targetStart); + Sci::Line lineEnd = pdoc->LineFromPosition(targetEnd); const char *eol = StringFromEOLMode(pdoc->eolMode); UndoGroup ug(pdoc); - for (int line = lineStart; line <= lineEnd; line++) { + for (Sci::Line line = lineStart; line <= lineEnd; line++) { AutoSurface surface(this); AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this)); if (surface && ll) { - unsigned int posLineStart = pdoc->LineStart(line); + Sci::Position posLineStart = pdoc->LineStart(line); view.LayoutLine(*this, line, surface, vs, ll, pixelWidth); - int lengthInsertedTotal = 0; + Sci::Position lengthInsertedTotal = 0; for (int subLine = 1; subLine < ll->lines; subLine++) { - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( static_cast<int>(posLineStart + lengthInsertedTotal + ll->LineStart(subLine)), eol, istrlen(eol)); @@ -1803,8 +1803,8 @@ void Editor::ReconfigureScrollBars() {} void Editor::SetScrollBars() { RefreshStyleData(); - int nMax = MaxScrollPos(); - int nPage = LinesOnScreen(); + Sci::Line nMax = MaxScrollPos(); + Sci::Line nPage = LinesOnScreen(); bool modified = ModifyScrollBars(nMax + nPage - 1, nPage); if (modified) { DwellEnd(true); @@ -1838,15 +1838,15 @@ void Editor::ChangeSize() { } } -int Editor::RealizeVirtualSpace(int position, unsigned int virtualSpace) { +Sci::Position Editor::RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace) { if (virtualSpace > 0) { - const int line = pdoc->LineFromPosition(position); - const int indent = pdoc->GetLineIndentPosition(line); + const Sci::Line line = pdoc->LineFromPosition(position); + const Sci::Position indent = pdoc->GetLineIndentPosition(line); if (indent == position) { return pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace); } else { std::string spaceText(virtualSpace, ' '); - const int lengthInserted = pdoc->InsertString(position, spaceText.c_str(), virtualSpace); + const Sci::Position lengthInserted = pdoc->InsertString(position, spaceText.c_str(), virtualSpace); position += lengthInserted; } } @@ -1893,7 +1893,7 @@ void Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) { SelectionRange *currentSel = *rit; if (!RangeContainsProtected(currentSel->Start().Position(), currentSel->End().Position())) { - int positionInsert = currentSel->Start().Position(); + Sci::Position positionInsert = currentSel->Start().Position(); if (!currentSel->Empty()) { if (currentSel->Length()) { pdoc->DeleteChars(positionInsert, currentSel->Length()); @@ -1911,7 +1911,7 @@ void Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) { } } positionInsert = RealizeVirtualSpace(positionInsert, currentSel->caret.VirtualSpace()); - const int lengthInserted = pdoc->InsertString(positionInsert, s, len); + const Sci::Position lengthInserted = pdoc->InsertString(positionInsert, s, len); if (lengthInserted > 0) { currentSel->caret.SetPosition(positionInsert + lengthInserted); currentSel->anchor.SetPosition(positionInsert + lengthInserted); @@ -1974,7 +1974,7 @@ void Editor::ClearBeforeTentativeStart() { for (size_t r = 0; r<sel.Count(); r++) { if (!RangeContainsProtected(sel.Range(r).Start().Position(), sel.Range(r).End().Position())) { - int positionInsert = sel.Range(r).Start().Position(); + Sci::Position positionInsert = sel.Range(r).Start().Position(); if (!sel.Range(r).Empty()) { if (sel.Range(r).Length()) { pdoc->DeleteChars(positionInsert, sel.Range(r).Length()); @@ -1994,7 +1994,7 @@ void Editor::InsertPaste(const char *text, int len) { if (multiPasteMode == SC_MULTIPASTE_ONCE) { SelectionPosition selStart = sel.Start(); selStart = RealizeVirtualSpace(selStart); - const int lengthInserted = pdoc->InsertString(selStart.Position(), text, len); + const Sci::Position lengthInserted = pdoc->InsertString(selStart.Position(), text, len); if (lengthInserted > 0) { SetEmptySelection(selStart.Position() + lengthInserted); } @@ -2003,7 +2003,7 @@ void Editor::InsertPaste(const char *text, int len) { for (size_t r=0; r<sel.Count(); r++) { if (!RangeContainsProtected(sel.Range(r).Start().Position(), sel.Range(r).End().Position())) { - int positionInsert = sel.Range(r).Start().Position(); + Sci::Position positionInsert = sel.Range(r).Start().Position(); if (!sel.Range(r).Empty()) { if (sel.Range(r).Length()) { pdoc->DeleteChars(positionInsert, sel.Range(r).Length()); @@ -2014,7 +2014,7 @@ void Editor::InsertPaste(const char *text, int len) { } } positionInsert = RealizeVirtualSpace(positionInsert, sel.Range(r).caret.VirtualSpace()); - const int lengthInserted = pdoc->InsertString(positionInsert, text, len); + const Sci::Position lengthInserted = pdoc->InsertString(positionInsert, text, len); if (lengthInserted > 0) { sel.Range(r).caret.SetPosition(positionInsert + lengthInserted); sel.Range(r).anchor.SetPosition(positionInsert + lengthInserted); @@ -2037,8 +2037,8 @@ void Editor::InsertPasteShape(const char *text, int len, PasteShape shape) { PasteRectangular(sel.Start(), text, len); } else { if (shape == pasteLine) { - int insertPos = pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret())); - int lengthInserted = pdoc->InsertString(insertPos, text, len); + Sci::Position insertPos = 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')) { const char *endline = StringFromEOLMode(pdoc->eolMode); @@ -2127,20 +2127,20 @@ void Editor::Cut() { } } -void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, int len) { +void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Position len) { if (pdoc->IsReadOnly() || SelectionContainsProtected()) { return; } sel.Clear(); sel.RangeMain() = SelectionRange(pos); - int line = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Line line = pdoc->LineFromPosition(sel.MainCaret()); UndoGroup ug(pdoc); sel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret); int xInsert = XFromPosition(sel.RangeMain().caret); bool prevCr = false; while ((len > 0) && IsEOLChar(ptr[len-1])) len--; - for (int i = 0; i < len; i++) { + for (Sci::Position i = 0; i < len; i++) { if (IsEOLChar(ptr[i])) { if ((ptr[i] == '\r') || (!prevCr)) line++; @@ -2155,13 +2155,13 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, int len) { if ((XFromPosition(sel.MainCaret()) < xInsert) && (i + 1 < len)) { while (XFromPosition(sel.MainCaret()) < xInsert) { assert(pdoc); - const int lengthInserted = pdoc->InsertString(sel.MainCaret(), " ", 1); + const Sci::Position lengthInserted = pdoc->InsertString(sel.MainCaret(), " ", 1); sel.RangeMain().caret.Add(lengthInserted); } } prevCr = ptr[i] == '\r'; } else { - const int lengthInserted = pdoc->InsertString(sel.MainCaret(), ptr + i, 1); + const Sci::Position lengthInserted = pdoc->InsertString(sel.MainCaret(), ptr + i, 1); sel.RangeMain().caret.Add(lengthInserted); prevCr = false; } @@ -2215,7 +2215,7 @@ void Editor::SelectAll() { void Editor::Undo() { if (pdoc->CanUndo()) { InvalidateCaret(); - int newPos = pdoc->Undo(); + Sci::Position newPos = pdoc->Undo(); if (newPos >= 0) SetEmptySelection(newPos); EnsureCaretVisible(); @@ -2224,7 +2224,7 @@ void Editor::Undo() { void Editor::Redo() { if (pdoc->CanRedo()) { - int newPos = pdoc->Redo(); + Sci::Position newPos = pdoc->Redo(); if (newPos >= 0) SetEmptySelection(newPos); EnsureCaretVisible(); @@ -2245,7 +2245,7 @@ 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 { - int lineCurrentPos = pdoc->LineFromPosition(sel.Range(r).caret.Position()); + Sci::Line lineCurrentPos = 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) { @@ -2255,7 +2255,7 @@ void Editor::DelCharBack(bool allowLineStartDeletion) { int indentationChange = indentation % indentationStep; if (indentationChange == 0) indentationChange = indentationStep; - const int posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationChange); + const Sci::Position posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationChange); // SetEmptySelection sel.Range(r) = SelectionRange(posSelect); } else { @@ -2296,14 +2296,14 @@ void Editor::SetCtrlID(int identifier) { ctrlID = identifier; } -void Editor::NotifyStyleToNeeded(int endStyleNeeded) { +void Editor::NotifyStyleToNeeded(Sci::Position endStyleNeeded) { SCNotification scn = {}; scn.nmhdr.code = SCN_STYLENEEDED; scn.position = endStyleNeeded; NotifyParent(scn); } -void Editor::NotifyStyleNeeded(Document *, void *, int endStyleNeeded) { +void Editor::NotifyStyleNeeded(Document *, void *, Sci::Position endStyleNeeded) { NotifyStyleToNeeded(endStyleNeeded); } @@ -2350,7 +2350,7 @@ void Editor::NotifyDoubleClick(Point pt, bool shift, bool ctrl, bool alt) { NotifyDoubleClick(pt, ModifierFlags(shift, ctrl, alt)); } -void Editor::NotifyHotSpotDoubleClicked(int position, int modifiers) { +void Editor::NotifyHotSpotDoubleClicked(Sci::Position position, int modifiers) { SCNotification scn = {}; scn.nmhdr.code = SCN_HOTSPOTDOUBLECLICK; scn.position = position; @@ -2358,11 +2358,11 @@ void Editor::NotifyHotSpotDoubleClicked(int position, int modifiers) { NotifyParent(scn); } -void Editor::NotifyHotSpotDoubleClicked(int position, bool shift, bool ctrl, bool alt) { +void Editor::NotifyHotSpotDoubleClicked(Sci::Position position, bool shift, bool ctrl, bool alt) { NotifyHotSpotDoubleClicked(position, ModifierFlags(shift, ctrl, alt)); } -void Editor::NotifyHotSpotClicked(int position, int modifiers) { +void Editor::NotifyHotSpotClicked(Sci::Position position, int modifiers) { SCNotification scn = {}; scn.nmhdr.code = SCN_HOTSPOTCLICK; scn.position = position; @@ -2370,11 +2370,11 @@ void Editor::NotifyHotSpotClicked(int position, int modifiers) { NotifyParent(scn); } -void Editor::NotifyHotSpotClicked(int position, bool shift, bool ctrl, bool alt) { +void Editor::NotifyHotSpotClicked(Sci::Position position, bool shift, bool ctrl, bool alt) { NotifyHotSpotClicked(position, ModifierFlags(shift, ctrl, alt)); } -void Editor::NotifyHotSpotReleaseClick(int position, int modifiers) { +void Editor::NotifyHotSpotReleaseClick(Sci::Position position, int modifiers) { SCNotification scn = {}; scn.nmhdr.code = SCN_HOTSPOTRELEASECLICK; scn.position = position; @@ -2382,7 +2382,7 @@ void Editor::NotifyHotSpotReleaseClick(int position, int modifiers) { NotifyParent(scn); } -void Editor::NotifyHotSpotReleaseClick(int position, bool shift, bool ctrl, bool alt) { +void Editor::NotifyHotSpotReleaseClick(Sci::Position position, bool shift, bool ctrl, bool alt) { NotifyHotSpotReleaseClick(position, ModifierFlags(shift, ctrl, alt)); } @@ -2404,7 +2404,7 @@ void Editor::NotifyPainted() { NotifyParent(scn); } -void Editor::NotifyIndicatorClick(bool click, int position, int modifiers) { +void Editor::NotifyIndicatorClick(bool click, Sci::Position position, int modifiers) { int mask = pdoc->decorations.AllOnFor(position); if ((click && mask) || pdoc->decorations.clickNotified) { SCNotification scn = {}; @@ -2416,18 +2416,18 @@ void Editor::NotifyIndicatorClick(bool click, int position, int modifiers) { } } -void Editor::NotifyIndicatorClick(bool click, int position, bool shift, bool ctrl, bool alt) { +void Editor::NotifyIndicatorClick(bool click, Sci::Position position, bool shift, bool ctrl, bool alt) { NotifyIndicatorClick(click, position, ModifierFlags(shift, ctrl, alt)); } bool Editor::NotifyMarginClick(Point pt, int modifiers) { const int marginClicked = vs.MarginFromLocation(pt); if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) { - int position = pdoc->LineStart(LineFromLocation(pt)); + Sci::Position 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; - int lineClick = pdoc->LineFromPosition(position); + Sci::Line lineClick = pdoc->LineFromPosition(position); if (shift && ctrl) { FoldAll(SC_FOLDACTION_TOGGLE); } else { @@ -2465,7 +2465,7 @@ bool Editor::NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt) { bool Editor::NotifyMarginRightClick(Point pt, int modifiers) { int marginRightClicked = vs.MarginFromLocation(pt); if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) { - int position = pdoc->LineStart(LineFromLocation(pt)); + Sci::Position position = pdoc->LineStart(LineFromLocation(pt)); SCNotification scn = {}; scn.nmhdr.code = SCN_MARGINRIGHTCLICK; scn.modifiers = modifiers; @@ -2478,7 +2478,7 @@ bool Editor::NotifyMarginRightClick(Point pt, int modifiers) { } } -void Editor::NotifyNeedShown(int pos, int len) { +void Editor::NotifyNeedShown(Sci::Position pos, Sci::Position len) { SCNotification scn = {}; scn.nmhdr.code = SCN_NEEDSHOWN; scn.position = pos; @@ -2515,8 +2515,8 @@ 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); - int lineDoc = pdoc->LineFromPosition(mh.position); - int lines = Platform::Maximum(0, mh.linesAdded); + Sci::Line lineDoc = pdoc->LineFromPosition(mh.position); + Sci::Line lines = std::max(static_cast<Sci::Line>(0), mh.linesAdded); if (Wrapping()) { NeedWrapping(lineDoc, lineDoc + lines + 1); } @@ -2527,7 +2527,7 @@ void Editor::CheckModificationForWrap(DocModification mh) { } // Move a position so it is still after the same character as before the insertion. -static inline int MovePositionForInsertion(int position, int startInsertion, int length) { +static inline Sci::Position MovePositionForInsertion(Sci::Position position, Sci::Position startInsertion, Sci::Position length) { if (position > startInsertion) { return position + length; } @@ -2536,9 +2536,9 @@ static inline int MovePositionForInsertion(int position, int startInsertion, int // Move a position so it is still after the same character as before the deletion if that // character is still present else after the previous surviving character. -static inline int MovePositionForDeletion(int position, int startDeletion, int length) { +static inline Sci::Position MovePositionForDeletion(Sci::Position position, Sci::Position startDeletion, Sci::Position length) { if (position > startDeletion) { - int endDeletion = startDeletion + length; + Sci::Position endDeletion = startDeletion + length; if (position > endDeletion) { return position - length; } else { @@ -2602,17 +2602,17 @@ 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 int lineOfPos = pdoc->LineFromPosition(mh.position); - int endNeedShown = mh.position; + const Sci::Line lineOfPos = 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); } 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; - int lineLast = pdoc->LineFromPosition(mh.position+mh.length); - for (int line = lineOfPos + 1; line <= lineLast; line++) { - const int lineMaxSubord = pdoc->GetLastChild(line, -1, -1); + Sci::Line lineLast = 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); @@ -2624,7 +2624,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 - int lineOfPos = pdoc->LineFromPosition(mh.position); + Sci::Line lineOfPos = pdoc->LineFromPosition(mh.position); if (mh.position > pdoc->LineStart(lineOfPos)) lineOfPos++; // Affecting subsequent lines if (mh.linesAdded > 0) { @@ -2635,7 +2635,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { view.LinesAddedOrRemoved(lineOfPos, mh.linesAdded); } if (mh.modificationType & SC_MOD_CHANGEANNOTATION) { - int lineDoc = pdoc->LineFromPosition(mh.position); + Sci::Line lineDoc = pdoc->LineFromPosition(mh.position); if (vs.annotationVisible) { cs.SetHeight(lineDoc, cs.GetHeight(lineDoc) + mh.annotationLinesAdded); Redraw(); @@ -2645,7 +2645,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { if (mh.linesAdded != 0) { // Avoid scrolling of display if change before current display if (mh.position < posTopLine && !CanDeferToLastStep(mh)) { - int newTop = Platform::Clamp(topLine + mh.linesAdded, 0, MaxScrollPos()); + Sci::Line newTop = Platform::Clamp(topLine + mh.linesAdded, 0, MaxScrollPos()); if (newTop != topLine) { SetTopLine(newTop); SetVerticalScrollPos(); @@ -2857,12 +2857,12 @@ void Editor::ContainerNeedsUpdate(int flags) { * If stuttered = true and already at first/last row, scroll as normal. */ void Editor::PageMove(int direction, Selection::selTypes selt, bool stuttered) { - int topLineNew; + Sci::Line topLineNew; SelectionPosition newPos; - int currentLine = pdoc->LineFromPosition(sel.MainCaret()); - int topStutterLine = topLine + caretYSlop; - int bottomStutterLine = + Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Line topStutterLine = topLine + caretYSlop; + Sci::Line bottomStutterLine = pdoc->LineFromPosition(PositionFromLocation( Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * LinesToScroll()))) - caretYSlop - 1; @@ -2921,15 +2921,15 @@ void Editor::ChangeCaseOfSelection(int caseMapping) { } size_t endDifferenceText = sText.size() - 1 - lastDifferenceText; pdoc->DeleteChars( - static_cast<int>(currentNoVS.Start().Position() + firstDifference), - static_cast<int>(rangeBytes - firstDifference - endDifferenceText)); - const int lengthChange = static_cast<int>(lastDifferenceMapped - firstDifference + 1); - const int lengthInserted = pdoc->InsertString( + static_cast<Sci::Position>(currentNoVS.Start().Position() + firstDifference), + static_cast<Sci::Position>(rangeBytes - firstDifference - endDifferenceText)); + const Sci::Position lengthChange = static_cast<Sci::Position>(lastDifferenceMapped - firstDifference + 1); + const Sci::Position lengthInserted = pdoc->InsertString( static_cast<int>(currentNoVS.Start().Position() + firstDifference), sMapped.c_str() + firstDifference, lengthChange); // Automatic movement changes selection so reset to exactly the same as it was. - int diffSizes = static_cast<int>(sMapped.size() - sText.size()) + lengthInserted - lengthChange; + Sci::Position diffSizes = static_cast<Sci::Position>(sMapped.size() - sText.size()) + lengthInserted - lengthChange; if (diffSizes != 0) { if (current.anchor > current.caret) current.anchor.Add(diffSizes); @@ -2943,24 +2943,24 @@ void Editor::ChangeCaseOfSelection(int caseMapping) { } void Editor::LineTranspose() { - int line = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Line line = pdoc->LineFromPosition(sel.MainCaret()); if (line > 0) { UndoGroup ug(pdoc); - const int startPrevious = pdoc->LineStart(line - 1); + const Sci::Position startPrevious = pdoc->LineStart(line - 1); const std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1)); - int startCurrent = pdoc->LineStart(line); + Sci::Position startCurrent = pdoc->LineStart(line); const std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line)); - pdoc->DeleteChars(startCurrent, static_cast<int>(lineCurrent.length())); - pdoc->DeleteChars(startPrevious, static_cast<int>(linePrevious.length())); - startCurrent -= static_cast<int>(linePrevious.length()); + pdoc->DeleteChars(startCurrent, static_cast<Sci::Position>(lineCurrent.length())); + pdoc->DeleteChars(startPrevious, static_cast<Sci::Position>(linePrevious.length())); + startCurrent -= static_cast<Sci::Position>(linePrevious.length()); startCurrent += pdoc->InsertString(startPrevious, lineCurrent.c_str(), - static_cast<int>(lineCurrent.length())); + static_cast<Sci::Position>(lineCurrent.length())); pdoc->InsertString(startCurrent, linePrevious.c_str(), - static_cast<int>(linePrevious.length())); + static_cast<Sci::Position>(linePrevious.length())); // Move caret to start of current line MovePositionTo(SelectionPosition(startCurrent)); } @@ -2981,20 +2981,20 @@ void Editor::Duplicate(bool forLine) { SelectionPosition start = sel.Range(r).Start(); SelectionPosition end = sel.Range(r).End(); if (forLine) { - int line = pdoc->LineFromPosition(sel.Range(r).caret.Position()); + Sci::Line line = pdoc->LineFromPosition(sel.Range(r).caret.Position()); start = SelectionPosition(pdoc->LineStart(line)); end = SelectionPosition(pdoc->LineEnd(line)); } std::string text = RangeText(start.Position(), end.Position()); - int lengthInserted = eolLen; + Sci::Position lengthInserted = eolLen; if (forLine) lengthInserted = pdoc->InsertString(end.Position(), eol, eolLen); - pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), static_cast<int>(text.length())); + pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), static_cast<Sci::Position>(text.length())); } if (sel.Count() && sel.IsRectangular()) { SelectionPosition last = sel.Last(); if (forLine) { - int line = pdoc->LineFromPosition(last.Position()); + Sci::Line line = pdoc->LineFromPosition(last.Position()); last = SelectionPosition(last.Position() + pdoc->LineStart(line+1) - pdoc->LineStart(line)); } if (sel.Rectangular().anchor > sel.Rectangular().caret) @@ -3028,8 +3028,8 @@ void Editor::NewLine() { for (size_t r = 0; r < sel.Count(); r++) { sel.Range(r).ClearVirtualSpace(); const char *eol = StringFromEOLMode(pdoc->eolMode); - const int positionInsert = sel.Range(r).caret.Position(); - const int insertLength = pdoc->InsertString(positionInsert, eol, istrlen(eol)); + const Sci::Position positionInsert = sel.Range(r).caret.Position(); + const Sci::Position insertLength = pdoc->InsertString(positionInsert, eol, istrlen(eol)); if (insertLength > 0) { sel.Range(r) = SelectionRange(positionInsert + insertLength); countInsertions++; @@ -3064,12 +3064,12 @@ SelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direct int skipLines = 0; if (vs.annotationVisible) { - const int lineDoc = pdoc->LineFromPosition(spStart.Position()); + const Sci::Line lineDoc = pdoc->LineFromPosition(spStart.Position()); const Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc)); const int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight; if (direction < 0 && subLine == 0) { - const int lineDisplay = cs.DisplayFromDoc(lineDoc); + const Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc); if (lineDisplay > 0) { skipLines = pdoc->AnnotationLines(cs.DocFromDisplay(lineDisplay - 1)); } @@ -3078,9 +3078,9 @@ SelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direct } } - const int newY = static_cast<int>(pt.y) + (1 + skipLines) * direction * vs.lineHeight; + const Sci::Line newY = static_cast<Sci::Line>(pt.y) + (1 + skipLines) * direction * vs.lineHeight; if (lastX < 0) { - lastX = static_cast<int>(pt.x) + xOffset; + lastX = static_cast<Sci::Position>(pt.x) + xOffset; } SelectionPosition posNew = SPositionFromLocation( Point::FromInts(lastX - xOffset, newY), false, false, UserVirtualSpace()); @@ -3151,7 +3151,8 @@ void Editor::CursorUpOrDown(int direction, Selection::selTypes selt) { } void Editor::ParaUpOrDown(int direction, Selection::selTypes selt) { - int lineDoc, savedPos = sel.MainCaret(); + Sci::Line lineDoc; + Sci::Position savedPos = sel.MainCaret(); do { MovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt); lineDoc = pdoc->LineFromPosition(sel.MainCaret()); @@ -3166,16 +3167,16 @@ void Editor::ParaUpOrDown(int direction, Selection::selTypes selt) { } while (!cs.GetVisible(lineDoc)); } -Range Editor::RangeDisplayLine(int lineVisible) { +Range Editor::RangeDisplayLine(Sci::Line lineVisible) { RefreshStyleData(); AutoSurface surface(this); return view.RangeDisplayLine(surface, *this, lineVisible, vs); } -int Editor::StartEndDisplayLine(int pos, bool start) { +Sci::Position Editor::StartEndDisplayLine(Sci::Position pos, bool start) { RefreshStyleData(); AutoSurface surface(this); - int posRet = view.StartEndDisplayLine(surface, *this, pos, start, vs); + Sci::Position posRet = view.StartEndDisplayLine(surface, *this, pos, start, vs); if (posRet == INVALID_POSITION) { return pos; } else { @@ -3258,27 +3259,27 @@ bool IsRectExtend(unsigned int iMessage) { } -int Editor::VCHomeDisplayPosition(int position) { - const int homePos = pdoc->VCHomePosition(position); - const int viewLineStart = StartEndDisplayLine(position, true); +Sci::Position Editor::VCHomeDisplayPosition(Sci::Position position) { + const Sci::Position homePos = pdoc->VCHomePosition(position); + const Sci::Position viewLineStart = StartEndDisplayLine(position, true); if (viewLineStart > homePos) return viewLineStart; else return homePos; } -int Editor::VCHomeWrapPosition(int position) { - const int homePos = pdoc->VCHomePosition(position); - const int viewLineStart = StartEndDisplayLine(position, true); +Sci::Position Editor::VCHomeWrapPosition(Sci::Position position) { + const Sci::Position homePos = pdoc->VCHomePosition(position); + const Sci::Position viewLineStart = StartEndDisplayLine(position, true); if ((viewLineStart < position) && (viewLineStart > homePos)) return viewLineStart; else return homePos; } -int Editor::LineEndWrapPosition(int position) { - const int endPos = StartEndDisplayLine(position, false); - const int realEndPos = pdoc->LineEndPosition(position); +Sci::Position Editor::LineEndWrapPosition(Sci::Position position) { + const Sci::Position endPos = StartEndDisplayLine(position, false); + const Sci::Position realEndPos = pdoc->LineEndPosition(position); if (endPos > realEndPos // if moved past visible EOLs || position >= endPos) // if at end of display line already return realEndPos; @@ -3781,26 +3782,26 @@ int Editor::KeyCommand(unsigned int iMessage) { return DelWordOrLine(iMessage); case SCI_LINECOPY: { - int lineStart = pdoc->LineFromPosition(SelectionStart().Position()); - int lineEnd = pdoc->LineFromPosition(SelectionEnd().Position()); + Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position()); + Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position()); CopyRangeToClipboard(pdoc->LineStart(lineStart), pdoc->LineStart(lineEnd + 1)); } break; case SCI_LINECUT: { - int lineStart = pdoc->LineFromPosition(SelectionStart().Position()); - int lineEnd = pdoc->LineFromPosition(SelectionEnd().Position()); - int start = pdoc->LineStart(lineStart); - int end = pdoc->LineStart(lineEnd + 1); + Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position()); + Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position()); + Sci::Position start = pdoc->LineStart(lineStart); + Sci::Position end = pdoc->LineStart(lineEnd + 1); SetSelection(start, end); Cut(); SetLastXChosen(); } break; case SCI_LINEDELETE: { - int line = pdoc->LineFromPosition(sel.MainCaret()); - int start = pdoc->LineStart(line); - int end = pdoc->LineStart(line + 1); + Sci::Line line = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Position start = pdoc->LineStart(line); + Sci::Position end = pdoc->LineStart(line + 1); pdoc->DeleteChars(start, end - start); } break; @@ -3854,9 +3855,9 @@ int Editor::KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed) { void Editor::Indent(bool forwards) { UndoGroup ug(pdoc); for (size_t r=0; r<sel.Count(); r++) { - int lineOfAnchor = pdoc->LineFromPosition(sel.Range(r).anchor.Position()); - int caretPosition = sel.Range(r).caret.Position(); - int lineCurrentPos = pdoc->LineFromPosition(caretPosition); + Sci::Line lineOfAnchor = pdoc->LineFromPosition(sel.Range(r).anchor.Position()); + Sci::Position caretPosition = sel.Range(r).caret.Position(); + Sci::Line lineCurrentPos = pdoc->LineFromPosition(caretPosition); if (lineOfAnchor == lineCurrentPos) { if (forwards) { pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length()); @@ -3865,12 +3866,12 @@ void Editor::Indent(bool forwards) { pdoc->tabIndents) { int indentation = pdoc->GetLineIndentation(lineCurrentPos); int indentationStep = pdoc->IndentSize(); - const int posSelect = pdoc->SetLineIndentation( + const Sci::Position posSelect = pdoc->SetLineIndentation( lineCurrentPos, indentation + indentationStep - indentation % indentationStep); sel.Range(r) = SelectionRange(posSelect); } else { if (pdoc->useTabs) { - const int lengthInserted = pdoc->InsertString(caretPosition, "\t", 1); + const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, "\t", 1); sel.Range(r) = SelectionRange(caretPosition + lengthInserted); } else { int numSpaces = (pdoc->tabInChars) - @@ -3878,8 +3879,8 @@ void Editor::Indent(bool forwards) { if (numSpaces < 1) numSpaces = pdoc->tabInChars; const std::string spaceText(numSpaces, ' '); - const int lengthInserted = pdoc->InsertString(caretPosition, spaceText.c_str(), - static_cast<int>(spaceText.length())); + const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, spaceText.c_str(), + static_cast<Sci::Position>(spaceText.length())); sel.Range(r) = SelectionRange(caretPosition + lengthInserted); } } @@ -3888,25 +3889,25 @@ void Editor::Indent(bool forwards) { pdoc->tabIndents) { int indentation = pdoc->GetLineIndentation(lineCurrentPos); int indentationStep = pdoc->IndentSize(); - const int posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep); + const Sci::Position posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep); sel.Range(r) = SelectionRange(posSelect); } else { - int newColumn = ((pdoc->GetColumn(caretPosition) - 1) / pdoc->tabInChars) * + Sci::Position newColumn = ((pdoc->GetColumn(caretPosition) - 1) / pdoc->tabInChars) * pdoc->tabInChars; if (newColumn < 0) newColumn = 0; - int newPos = caretPosition; + Sci::Position newPos = caretPosition; while (pdoc->GetColumn(newPos) > newColumn) newPos--; sel.Range(r) = SelectionRange(newPos); } } } else { // Multiline - int anchorPosOnLine = sel.Range(r).anchor.Position() - pdoc->LineStart(lineOfAnchor); - int currentPosPosOnLine = caretPosition - pdoc->LineStart(lineCurrentPos); + Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() - pdoc->LineStart(lineOfAnchor); + Sci::Position currentPosPosOnLine = caretPosition - pdoc->LineStart(lineCurrentPos); // Multiple lines selected so indent / dedent - int lineTopSel = Platform::Minimum(lineOfAnchor, lineCurrentPos); - int lineBottomSel = Platform::Maximum(lineOfAnchor, lineCurrentPos); + Sci::Line lineTopSel = Platform::Minimum(lineOfAnchor, lineCurrentPos); + Sci::Line lineBottomSel = Platform::Maximum(lineOfAnchor, lineCurrentPos); if (pdoc->LineStart(lineBottomSel) == sel.Range(r).anchor.Position() || pdoc->LineStart(lineBottomSel) == caretPosition) lineBottomSel--; // If not selecting any characters on a line, do not indent pdoc->Indent(forwards, lineBottomSel, lineTopSel); @@ -3951,13 +3952,13 @@ long Editor::FindText( sptr_t lParam) { ///< @c Sci_TextToFind structure: The text to search for in the given range. Sci_TextToFind *ft = reinterpret_cast<Sci_TextToFind *>(lParam); - int lengthFound = istrlen(ft->lpstrText); + Sci::Position lengthFound = istrlen(ft->lpstrText); if (!pdoc->HasCaseFolder()) pdoc->SetCaseFolder(CaseFolderForEncoding()); try { long pos = pdoc->FindText( - static_cast<int>(ft->chrg.cpMin), - static_cast<int>(ft->chrg.cpMax), + static_cast<Sci::Position>(ft->chrg.cpMin), + static_cast<Sci::Position>(ft->chrg.cpMax), ft->lpstrText, static_cast<int>(wParam), &lengthFound); @@ -4000,7 +4001,7 @@ long Editor::SearchText( const char *txt = reinterpret_cast<char *>(lParam); long pos; - int lengthFound = istrlen(txt); + Sci::Position lengthFound = istrlen(txt); if (!pdoc->HasCaseFolder()) pdoc->SetCaseFolder(CaseFolderForEncoding()); try { @@ -4045,8 +4046,8 @@ std::string Editor::CaseMapString(const std::string &s, int caseMapping) { * Search for text in the target range of the document. * @return The position of the found text, -1 if not found. */ -long Editor::SearchInTarget(const char *text, int length) { - int lengthFound = length; +long Editor::SearchInTarget(const char *text, Sci::Position length) { + Sci::Position lengthFound = length; if (!pdoc->HasCaseFolder()) pdoc->SetCaseFolder(CaseFolderForEncoding()); @@ -4065,7 +4066,7 @@ long Editor::SearchInTarget(const char *text, int length) { } } -void Editor::GoToLine(int lineNo) { +void Editor::GoToLine(Sci::Line lineNo) { if (lineNo > pdoc->LinesTotal()) lineNo = pdoc->LinesTotal(); if (lineNo < 0) @@ -4083,9 +4084,9 @@ static bool Close(Point pt1, Point pt2, Point threshold) { return true; } -std::string Editor::RangeText(int start, int end) const { +std::string Editor::RangeText(Sci::Position start, Sci::Position end) const { if (start < end) { - int len = end - start; + Sci::Position len = end - start; std::string ret(len, '\0'); for (int i = 0; i < len; i++) { ret[i] = pdoc->CharAt(start + i); @@ -4098,9 +4099,9 @@ std::string Editor::RangeText(int start, int end) const { void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) { if (sel.Empty()) { if (allowLineCopy) { - int currentLine = pdoc->LineFromPosition(sel.MainCaret()); - int start = pdoc->LineStart(currentLine); - int end = pdoc->LineEnd(currentLine); + Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Position start = pdoc->LineStart(currentLine); + Sci::Position end = pdoc->LineEnd(currentLine); std::string text = RangeText(start, end); if (pdoc->eolMode != SC_EOL_LF) @@ -4130,7 +4131,7 @@ void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) { } } -void Editor::CopyRangeToClipboard(int start, int end) { +void Editor::CopyRangeToClipboard(Sci::Position start, Sci::Position end) { start = pdoc->ClampPositionIntoDocument(start); end = pdoc->ClampPositionIntoDocument(end); SelectionText selectedText; @@ -4230,13 +4231,13 @@ void Editor::DropAt(SelectionPosition position, const char *value, size_t length std::string convertedText = Document::TransformLineEnds(value, lengthValue, pdoc->eolMode); if (rectangular) { - PasteRectangular(position, convertedText.c_str(), static_cast<int>(convertedText.length())); + PasteRectangular(position, convertedText.c_str(), static_cast<Sci::Position>(convertedText.length())); // Should try to select new rectangle but it may not be a rectangle now so just select the drop position SetEmptySelection(position); } else { position = MovePositionOutsideChar(position, sel.MainCaret() - position.Position()); position = RealizeVirtualSpace(position); - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( position.Position(), convertedText.c_str(), static_cast<int>(convertedText.length())); if (lengthInserted > 0) { SelectionPosition posAfterInsertion = position; @@ -4256,7 +4257,7 @@ void Editor::DropAt(SelectionPosition position, const char *value, bool moving, /** * @return true if given position is inside the selection, */ -bool Editor::PositionInSelection(int pos) { +bool Editor::PositionInSelection(Sci::Position pos) { pos = MovePositionOutsideChar(pos, sel.MainCaret() - pos); for (size_t r=0; r<sel.Count(); r++) { if (sel.Range(r).Contains(pos)) @@ -4313,16 +4314,16 @@ Window::Cursor Editor::GetMarginCursor(Point pt) const { return Window::cursorReverseArrow; } -void Editor::TrimAndSetSelection(int currentPos_, int anchor_) { +void Editor::TrimAndSetSelection(Sci::Position currentPos_, Sci::Position anchor_) { sel.TrimSelection(SelectionRange(currentPos_, anchor_)); SetSelection(currentPos_, anchor_); } -void Editor::LineSelection(int lineCurrentPos_, int lineAnchorPos_, bool wholeLine) { - int selCurrentPos, selAnchorPos; +void Editor::LineSelection(Sci::Position lineCurrentPos_, Sci::Position lineAnchorPos_, bool wholeLine) { + Sci::Position selCurrentPos, selAnchorPos; if (wholeLine) { - int lineCurrent_ = pdoc->LineFromPosition(lineCurrentPos_); - int lineAnchor_ = pdoc->LineFromPosition(lineAnchorPos_); + Sci::Line lineCurrent_ = pdoc->LineFromPosition(lineCurrentPos_); + Sci::Line lineAnchor_ = pdoc->LineFromPosition(lineAnchorPos_); if (lineAnchorPos_ < lineCurrentPos_) { selCurrentPos = pdoc->LineStart(lineCurrent_ + 1); selAnchorPos = pdoc->LineStart(lineAnchor_); @@ -4351,7 +4352,7 @@ void Editor::LineSelection(int lineCurrentPos_, int lineAnchorPos_, bool wholeLi TrimAndSetSelection(selCurrentPos, selAnchorPos); } -void Editor::WordSelection(int pos) { +void Editor::WordSelection(Sci::Position pos) { if (pos < wordSelectAnchorStartPos) { // Extend backward to the word containing pos. // Skip ExtendWordSelect if the line is empty or if pos is after the last character. @@ -4472,13 +4473,13 @@ void Editor::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifie } if (selectionType == selWord) { - int charPos = originalAnchorPos; + Sci::Position charPos = originalAnchorPos; if (sel.MainCaret() == originalAnchorPos) { charPos = PositionFromLocation(pt, false, true); charPos = MovePositionOutsideChar(charPos, -1); } - int startWord, endWord; + Sci::Position startWord, endWord; if ((sel.MainCaret() >= originalAnchorPos) && !pdoc->IsLineEndPosition(charPos)) { startWord = pdoc->ExtendWordSelect(pdoc->MovePositionOutsideChar(charPos + 1, 1), -1); endWord = pdoc->ExtendWordSelect(charPos, 1); @@ -4539,7 +4540,7 @@ void Editor::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifie LineSelection(newPos.Position(), lineAnchorPos, selectionType == selWholeLine); } - SetDragPosition(SelectionPosition(invalidPosition)); + SetDragPosition(SelectionPosition(Sci::invalidPosition)); SetMouseCapture(true); if (FineTickerAvailable()) { FineTickerStart(tickScroll, 100, 10); @@ -4560,7 +4561,7 @@ void Editor::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifie FineTickerStart(tickScroll, 100, 10); } if (inDragDrop != ddInitial) { - SetDragPosition(SelectionPosition(invalidPosition)); + SetDragPosition(SelectionPosition(Sci::invalidPosition)); if (!shift) { if (ctrl && multipleSelection) { SelectionRange range(newPos); @@ -4603,19 +4604,19 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b return ButtonDownWithModifiers(pt, curTime, ModifierFlags(shift, ctrl, alt)); } -bool Editor::PositionIsHotspot(int position) const { +bool Editor::PositionIsHotspot(Sci::Position position) const { return vs.styles[pdoc->StyleIndexAt(position)].hotspot; } bool Editor::PointIsHotspot(Point pt) { - int pos = PositionFromLocation(pt, true, true); + Sci::Position pos = PositionFromLocation(pt, true, true); if (pos == INVALID_POSITION) return false; return PositionIsHotspot(pos); } -void Editor::SetHoverIndicatorPosition(int position) { - int hoverIndicatorPosPrev = hoverIndicatorPos; +void Editor::SetHoverIndicatorPosition(Sci::Position position) { + Sci::Position hoverIndicatorPosPrev = hoverIndicatorPos; hoverIndicatorPos = INVALID_POSITION; if (vs.indicatorsDynamic == 0) return; @@ -4643,7 +4644,7 @@ void Editor::SetHoverIndicatorPoint(Point pt) { void Editor::SetHotSpotRange(Point *pt) { if (pt) { - int pos = PositionFromLocation(*pt, false, true); + Sci::Position pos = PositionFromLocation(*pt, false, true); // If we don't limit this to word characters then the // range can encompass more than the run range and then @@ -4664,7 +4665,7 @@ void Editor::SetHotSpotRange(Point *pt) { if (hotspot.Valid()) { InvalidateRange(hotspot.start, hotspot.end); } - hotspot = Range(invalidPosition); + hotspot = Range(Sci::invalidPosition); } } @@ -4752,7 +4753,7 @@ void Editor::ButtonMoveWithModifiers(Point pt, int modifiers) { } // Autoscroll - int lineMove = DisplayFromPosition(movePos.Position()); + Sci::Line lineMove = DisplayFromPosition(movePos.Position()); if (pt.y > rcClient.bottom) { ScrollTo(lineMove - LinesOnScreen() + 1); Redraw(); @@ -4789,7 +4790,7 @@ void Editor::ButtonMoveWithModifiers(Point pt, int modifiers) { DisplayCursor(Window::cursorHand); SetHotSpotRange(&pt); } else { - if (hoverIndicatorPos != invalidPosition) + if (hoverIndicatorPos != Sci::invalidPosition) DisplayCursor(Window::cursorHand); else DisplayCursor(Window::cursorText); @@ -4842,14 +4843,14 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) { if (drag.Length()) { const int length = static_cast<int>(drag.Length()); if (ctrl) { - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); if (lengthInserted > 0) { SetSelection(newPos.Position(), newPos.Position() + lengthInserted); } } else if (newPos < selStart) { pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length())); - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); if (lengthInserted > 0) { SetSelection(newPos.Position(), newPos.Position() + lengthInserted); @@ -4857,7 +4858,7 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) { } else if (newPos > selEnd) { pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length())); newPos.Add(-static_cast<int>(drag.Length())); - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( newPos.Position(), drag.Data(), length); if (lengthInserted > 0) { SetSelection(newPos.Position(), newPos.Position() + lengthInserted); @@ -5017,11 +5018,11 @@ void Editor::SetFocusState(bool focusState) { ShowCaretAtCurrentPosition(); } -int Editor::PositionAfterArea(PRectangle rcArea) const { +Sci::Position Editor::PositionAfterArea(PRectangle rcArea) const { // The start of the document line after the display line after the area // This often means that the line after a modification is restyled which helps // detect multiline comment additions and heals single line comments - int lineAfter = TopLineOfMain() + static_cast<int>(rcArea.bottom - 1) / vs.lineHeight + 1; + 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); else @@ -5030,8 +5031,8 @@ int Editor::PositionAfterArea(PRectangle rcArea) const { // Style to a position within the view. If this causes a change at end of last line then // affects later lines so style all the viewed text. -void Editor::StyleToPositionInView(Position pos) { - int endWindow = PositionAfterArea(GetClientDrawingRectangle()); +void Editor::StyleToPositionInView(Sci::Position pos) { + Sci::Position endWindow = PositionAfterArea(GetClientDrawingRectangle()); if (pos > endWindow) pos = endWindow; const int styleAtEnd = pdoc->StyleIndexAt(pos-1); @@ -5046,7 +5047,7 @@ void Editor::StyleToPositionInView(Position pos) { } } -int Editor::PositionAfterMaxStyling(int posMax, bool scrolling) const { +Sci::Position Editor::PositionAfterMaxStyling(Sci::Position posMax, bool scrolling) const { if ((idleStyling == SC_IDLESTYLING_NONE) || (idleStyling == SC_IDLESTYLING_AFTERVISIBLE)) { // Both states do not limit styling return posMax; @@ -5056,12 +5057,12 @@ int Editor::PositionAfterMaxStyling(int posMax, bool scrolling) const { // When scrolling, allow less time to ensure responsive const double secondsAllowed = scrolling ? 0.005 : 0.02; - const int linesToStyle = Platform::Clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine), + const Sci::Line linesToStyle = Platform::Clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine), 10, 0x10000); - const int stylingMaxLine = std::min( - static_cast<int>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle), + const Sci::Line stylingMaxLine = std::min( + static_cast<Sci::Line>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle), pdoc->LinesTotal()); - return std::min(static_cast<int>(pdoc->LineStart(stylingMaxLine)), posMax); + return std::min(static_cast<Sci::Position>(pdoc->LineStart(stylingMaxLine)), posMax); } void Editor::StartIdleStyling(bool truncatedLastStyling) { @@ -5081,8 +5082,8 @@ void Editor::StartIdleStyling(bool truncatedLastStyling) { // Style for an area but bound the amount of styling to remain responsive void Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) { - const int posAfterArea = PositionAfterArea(rcArea); - const int posAfterMax = PositionAfterMaxStyling(posAfterArea, scrolling); + const Sci::Position posAfterArea = PositionAfterArea(rcArea); + const Sci::Position posAfterMax = PositionAfterMaxStyling(posAfterArea, scrolling); if (posAfterMax < posAfterArea) { // Idle styling may be performed before current visible area // Style a bit now then style further in idle time @@ -5095,10 +5096,10 @@ void Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) { } void Editor::IdleStyling() { - const int posAfterArea = PositionAfterArea(GetClientRectangle()); - const int endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ? + const Sci::Position posAfterArea = PositionAfterArea(GetClientRectangle()); + const Sci::Position endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ? pdoc->Length() : posAfterArea; - const int posAfterMax = PositionAfterMaxStyling(endGoal, false); + const Sci::Position posAfterMax = PositionAfterMaxStyling(endGoal, false); pdoc->StyleToAdjustingLineDuration(posAfterMax); if (pdoc->GetEndStyled() >= endGoal) { needIdleStyling = false; @@ -5115,7 +5116,7 @@ void Editor::IdleWork() { workNeeded.Reset(); } -void Editor::QueueIdleWork(WorkNeeded::workItems items, int upTo) { +void Editor::QueueIdleWork(WorkNeeded::workItems items, Sci::Position upTo) { workNeeded.Need(items, upTo); } @@ -5160,7 +5161,7 @@ void Editor::CheckForChangeOutsidePaint(Range r) { } } -void Editor::SetBraceHighlight(Position pos0, Position pos1, int matchStyle) { +void Editor::SetBraceHighlight(Sci::Position pos0, Sci::Position pos1, int matchStyle) { if ((pos0 != braces[0]) || (pos1 != braces[1]) || (matchStyle != bracesMatchStyle)) { if ((braces[0] != pos0) || (matchStyle != bracesMatchStyle)) { CheckForChangeOutsidePaint(Range(braces[0])); @@ -5179,11 +5180,11 @@ void Editor::SetBraceHighlight(Position pos0, Position pos1, int matchStyle) { } } -void Editor::SetAnnotationHeights(int start, int end) { +void Editor::SetAnnotationHeights(Sci::Line start, Sci::Line end) { if (vs.annotationVisible) { RefreshStyleData(); bool changedHeight = false; - for (int line=start; line<end && line<pdoc->LinesTotal(); line++) { + for (Sci::Line line=start; line<end && line<pdoc->LinesTotal(); line++) { int linesWrapped = 1; if (Wrapping()) { AutoSurface surface(this); @@ -5218,8 +5219,8 @@ void Editor::SetDocPointer(Document *document) { targetStart = 0; targetEnd = 0; - braces[0] = invalidPosition; - braces[1] = invalidPosition; + braces[0] = Sci::invalidPosition; + braces[1] = Sci::invalidPosition; vs.ReleaseAllExtendedStyles(); @@ -5232,8 +5233,8 @@ void Editor::SetDocPointer(Document *document) { view.llc.Deallocate(); NeedWrapping(); - hotspot = Range(invalidPosition); - hoverIndicatorPos = invalidPosition; + hotspot = Range(Sci::invalidPosition); + hoverIndicatorPos = Sci::invalidPosition; view.ClearAllTabstops(); @@ -5248,7 +5249,7 @@ void Editor::SetAnnotationVisible(int visible) { vs.annotationVisible = visible; if (changedFromOrToHidden) { int dir = vs.annotationVisible ? 1 : -1; - for (int line=0; line<pdoc->LinesTotal(); line++) { + for (Sci::Line line=0; line<pdoc->LinesTotal(); line++) { int annotationLines = pdoc->AnnotationLines(line); if (annotationLines > 0) { cs.SetHeight(line, cs.GetHeight(line) + annotationLines * dir); @@ -5262,8 +5263,8 @@ void Editor::SetAnnotationVisible(int visible) { /** * Recursively expand a fold, making lines visible except where they have an unexpanded parent. */ -int Editor::ExpandLine(int line) { - int lineMaxSubord = pdoc->GetLastChild(line); +Sci::Line Editor::ExpandLine(Sci::Line line) { + Sci::Line lineMaxSubord = pdoc->GetLastChild(line); line++; while (line <= lineMaxSubord) { cs.SetVisible(line, line, true); @@ -5280,13 +5281,13 @@ int Editor::ExpandLine(int line) { return lineMaxSubord; } -void Editor::SetFoldExpanded(int lineDoc, bool expanded) { +void Editor::SetFoldExpanded(Sci::Line lineDoc, bool expanded) { if (cs.SetExpanded(lineDoc, expanded)) { RedrawSelMargin(); } } -void Editor::FoldLine(int line, int action) { +void Editor::FoldLine(Sci::Line line, int action) { if (line >= 0) { if (action == SC_FOLDACTION_TOGGLE) { if ((pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) == 0) { @@ -5298,12 +5299,12 @@ void Editor::FoldLine(int line, int action) { } if (action == SC_FOLDACTION_CONTRACT) { - int lineMaxSubord = pdoc->GetLastChild(line); + Sci::Line lineMaxSubord = pdoc->GetLastChild(line); if (lineMaxSubord > line) { cs.SetExpanded(line, 0); cs.SetVisible(line + 1, lineMaxSubord, false); - int lineCurrent = pdoc->LineFromPosition(sel.MainCaret()); + Sci::Line lineCurrent = pdoc->LineFromPosition(sel.MainCaret()); if (lineCurrent > line && lineCurrent <= lineMaxSubord) { // This does not re-expand the fold EnsureCaretVisible(); @@ -5324,7 +5325,7 @@ void Editor::FoldLine(int line, int action) { } } -void Editor::FoldExpand(int line, int action, int level) { +void Editor::FoldExpand(Sci::Line line, int action, int level) { bool expanding = action == SC_FOLDACTION_EXPAND; if (action == SC_FOLDACTION_TOGGLE) { expanding = !cs.GetExpanded(line); @@ -5336,7 +5337,7 @@ void Editor::FoldExpand(int line, int action, int level) { if (expanding && (cs.HiddenLines() == 0)) // Nothing to do return; - int lineMaxSubord = pdoc->GetLastChild(line, LevelNumber(level)); + Sci::Line lineMaxSubord = pdoc->GetLastChild(line, LevelNumber(level)); line++; cs.SetVisible(line, lineMaxSubord, expanding); while (line <= lineMaxSubord) { @@ -5350,8 +5351,8 @@ void Editor::FoldExpand(int line, int action, int level) { Redraw(); } -int Editor::ContractedFoldNext(int lineStart) const { - for (int line = lineStart; line<pdoc->LinesTotal();) { +Sci::Line Editor::ContractedFoldNext(Sci::Line lineStart) const { + for (Sci::Line line = lineStart; line<pdoc->LinesTotal();) { if (!cs.GetExpanded(line) && (pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG)) return line; line = cs.ContractedNext(line+1); @@ -5366,7 +5367,7 @@ int Editor::ContractedFoldNext(int lineStart) const { * Recurse up from this line to find any folds that prevent this line from being visible * and unfold them all. */ -void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) { +void Editor::EnsureLineVisible(Sci::Line lineDoc, bool enforcePolicy) { // In case in need of wrapping to ensure DisplayFromDoc works. if (lineDoc >= wrapPending.start) @@ -5374,12 +5375,12 @@ void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) { if (!cs.GetVisible(lineDoc)) { // Back up to find a non-blank line - int lookLine = lineDoc; + Sci::Line lookLine = lineDoc; int lookLineLevel = pdoc->GetLevel(lookLine); while ((lookLine > 0) && (lookLineLevel & SC_FOLDLEVELWHITEFLAG)) { lookLineLevel = pdoc->GetLevel(--lookLine); } - int lineParent = pdoc->GetFoldParent(lookLine); + Sci::Line lineParent = pdoc->GetFoldParent(lookLine); if (lineParent < 0) { // Backed up to a top level line, so try to find parent of initial line lineParent = pdoc->GetFoldParent(lineDoc); @@ -5396,7 +5397,7 @@ void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) { Redraw(); } if (enforcePolicy) { - int lineDisplay = cs.DisplayFromDoc(lineDoc); + Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc); if (visiblePolicy & VISIBLE_SLOP) { if ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) { SetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos())); @@ -5420,7 +5421,7 @@ void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) { void Editor::FoldAll(int action) { pdoc->EnsureStyledTo(pdoc->Length()); - int maxLine = pdoc->LinesTotal(); + Sci::Line maxLine = pdoc->LinesTotal(); bool expanding = action == SC_FOLDACTION_EXPAND; if (action == SC_FOLDACTION_TOGGLE) { // Discover current state @@ -5445,7 +5446,7 @@ void Editor::FoldAll(int action) { if ((level & SC_FOLDLEVELHEADERFLAG) && (SC_FOLDLEVELBASE == LevelNumber(level))) { SetFoldExpanded(line, false); - int lineMaxSubord = pdoc->GetLastChild(line, -1); + Sci::Line lineMaxSubord = pdoc->GetLastChild(line, -1); if (lineMaxSubord > line) { cs.SetVisible(line + 1, lineMaxSubord, false); } @@ -5456,7 +5457,7 @@ void Editor::FoldAll(int action) { Redraw(); } -void Editor::FoldChanged(int line, int levelNow, int levelPrev) { +void Editor::FoldChanged(Sci::Line line, int levelNow, int levelPrev) { if (levelNow & SC_FOLDLEVELHEADERFLAG) { if (!(levelPrev & SC_FOLDLEVELHEADERFLAG)) { // Adding a fold point. @@ -5466,7 +5467,7 @@ void Editor::FoldChanged(int line, int levelNow, int levelPrev) { FoldExpand(line, SC_FOLDACTION_EXPAND, levelPrev); } } else if (levelPrev & SC_FOLDLEVELHEADERFLAG) { - const int prevLine = line - 1; + const Sci::Line prevLine = line - 1; const int prevLineLevel = pdoc->GetLevel(prevLine); // Combining two blocks where the first block is collapsed (e.g. by deleting the line(s) which separate(s) the two blocks) @@ -5487,7 +5488,7 @@ void Editor::FoldChanged(int line, int levelNow, int levelPrev) { (LevelNumber(levelPrev) > LevelNumber(levelNow))) { if (cs.HiddenLines()) { // See if should still be hidden - int parentLine = pdoc->GetFoldParent(line); + Sci::Line parentLine = pdoc->GetFoldParent(line); if ((parentLine < 0) || (cs.GetExpanded(parentLine) && cs.GetVisible(parentLine))) { cs.SetVisible(line, line, true); SetScrollBars(); @@ -5499,18 +5500,18 @@ void Editor::FoldChanged(int line, int levelNow, int levelPrev) { // Combining two blocks where the first one is collapsed (e.g. by adding characters in the line which separates the two blocks) if (!(levelNow & SC_FOLDLEVELWHITEFLAG) && (LevelNumber(levelPrev) < LevelNumber(levelNow))) { if (cs.HiddenLines()) { - const int parentLine = pdoc->GetFoldParent(line); + const Sci::Line parentLine = pdoc->GetFoldParent(line); if (!cs.GetExpanded(parentLine) && cs.GetVisible(line)) FoldLine(parentLine, SC_FOLDACTION_EXPAND); } } } -void Editor::NeedShown(int pos, int len) { +void Editor::NeedShown(Sci::Position pos, Sci::Position len) { if (foldAutomatic & SC_AUTOMATICFOLD_SHOW) { - int lineStart = pdoc->LineFromPosition(pos); - int lineEnd = pdoc->LineFromPosition(pos+len); - for (int line = lineStart; line <= lineEnd; line++) { + Sci::Line lineStart = pdoc->LineFromPosition(pos); + Sci::Line lineEnd = pdoc->LineFromPosition(pos+len); + for (Sci::Line line = lineStart; line <= lineEnd; line++) { EnsureLineVisible(line, false); } } else { @@ -5518,9 +5519,9 @@ void Editor::NeedShown(int pos, int len) { } } -int Editor::GetTag(char *tagValue, int tagNumber) { +Sci::Position Editor::GetTag(char *tagValue, int tagNumber) { const char *text = 0; - int length = 0; + Sci::Position length = 0; if ((tagNumber >= 1) && (tagNumber <= 9)) { char name[3] = "\\?"; name[1] = static_cast<char>(tagNumber + '0'); @@ -5536,7 +5537,7 @@ int Editor::GetTag(char *tagValue, int tagNumber) { return length; } -int Editor::ReplaceTarget(bool replacePatterns, const char *text, int length) { +Sci::Position Editor::ReplaceTarget(bool replacePatterns, const char *text, Sci::Position length) { UndoGroup ug(pdoc); if (length == -1) length = istrlen(text); @@ -5549,7 +5550,7 @@ int Editor::ReplaceTarget(bool replacePatterns, const char *text, int length) { if (targetStart != targetEnd) pdoc->DeleteChars(targetStart, targetEnd - targetStart); targetEnd = targetStart; - const int lengthInserted = pdoc->InsertString(targetStart, text, length); + const Sci::Position lengthInserted = pdoc->InsertString(targetStart, text, length); targetEnd = targetStart + lengthInserted; return length; } @@ -5577,15 +5578,15 @@ int Editor::WrapCount(int line) { } } -void Editor::AddStyledText(char *buffer, int appendLength) { +void Editor::AddStyledText(char *buffer, Sci::Position appendLength) { // The buffer consists of alternating character bytes and style bytes - int textLength = appendLength / 2; + Sci::Position textLength = appendLength / 2; std::string text(textLength, '\0'); - int i; + Sci::Position i; for (i = 0; i < textLength; i++) { text[i] = buffer[i*2]; } - const int lengthInserted = pdoc->InsertString(CurrentPosition(), text.c_str(), textLength); + const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition(), text.c_str(), textLength); for (i = 0; i < textLength; i++) { text[i] = buffer[i*2+1]; } @@ -5854,14 +5855,14 @@ 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 - int lineStart = pdoc->LineStart(static_cast<int>(wParam)); - int lineEnd = pdoc->LineStart(static_cast<int>(wParam + 1)); + Sci::Position lineStart = pdoc->LineStart(static_cast<Sci::Line>(wParam)); + Sci::Position lineEnd = pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)); if (lParam == 0) { return lineEnd - lineStart; } char *ptr = CharPtrFromSPtr(lParam); - int iPlace = 0; - for (int iChar = lineStart; iChar < lineEnd; iChar++) { + Sci::Position iPlace = 0; + for (Sci::Position iChar = lineStart; iChar < lineEnd; iChar++) { ptr[iPlace++] = pdoc->CharAt(iChar); } return iPlace; @@ -5877,8 +5878,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return !pdoc->IsSavePoint(); case SCI_SETSEL: { - int nStart = static_cast<int>(wParam); - int nEnd = static_cast<int>(lParam); + Sci::Position nStart = static_cast<Sci::Position>(wParam); + Sci::Position nEnd = static_cast<Sci::Position>(lParam); if (nEnd < 0) nEnd = pdoc->Length(); if (nStart < 0) @@ -5919,7 +5920,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { wParam = pdoc->LineFromPosition(SelectionStart().Position()); if (wParam == 0) return 0; // Even if there is no text, there is a first line that starts at 0 - if (static_cast<int>(wParam) > pdoc->LinesTotal()) + if (static_cast<Sci::Line>(wParam) > pdoc->LinesTotal()) return -1; //if (wParam > pdoc->LineFromPosition(pdoc->Length())) // Useful test, anyway... // return -1; @@ -5938,7 +5939,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { UndoGroup ug(pdoc); ClearSelection(); char *replacement = CharPtrFromSPtr(lParam); - const int lengthInserted = pdoc->InsertString( + const Sci::Position lengthInserted = pdoc->InsertString( sel.MainCaret(), replacement, istrlen(replacement)); SetEmptySelection(sel.MainCaret() + lengthInserted); EnsureCaretVisible(); @@ -5986,15 +5987,15 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_REPLACETARGET: PLATFORM_ASSERT(lParam); - return ReplaceTarget(false, CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + return ReplaceTarget(false, CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); case SCI_REPLACETARGETRE: PLATFORM_ASSERT(lParam); - return ReplaceTarget(true, CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + return ReplaceTarget(true, CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); case SCI_SEARCHINTARGET: PLATFORM_ASSERT(lParam); - return SearchInTarget(CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + return SearchInTarget(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); case SCI_SETSEARCHFLAGS: searchFlags = static_cast<int>(wParam); @@ -6016,8 +6017,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return Platform::Clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length()); case SCI_LINESCROLL: - ScrollTo(topLine + static_cast<int>(lParam)); - HorizontalScrollTo(xOffset + static_cast<int>(wParam)* static_cast<int>(vs.spaceWidth)); + ScrollTo(topLine + static_cast<Sci::Line>(lParam)); + HorizontalScrollTo(xOffset + static_cast<int>(wParam) * static_cast<int>(vs.spaceWidth)); return 1; case SCI_SETXOFFSET: @@ -6072,7 +6073,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { if (lParam == 0) return 0; Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam); - int cpMax = static_cast<int>(tr->chrg.cpMax); + Sci::Position cpMax = static_cast<Sci::Position>(tr->chrg.cpMax); if (cpMax == -1) cpMax = pdoc->Length(); PLATFORM_ASSERT(cpMax <= pdoc->Length()); @@ -6113,26 +6114,26 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_ADDTEXT: { if (lParam == 0) return 0; - const int lengthInserted = pdoc->InsertString( - CurrentPosition(), CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + const Sci::Position lengthInserted = pdoc->InsertString( + CurrentPosition(), CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); SetEmptySelection(sel.MainCaret() + lengthInserted); return 0; } case SCI_ADDSTYLEDTEXT: if (lParam) - AddStyledText(CharPtrFromSPtr(lParam), static_cast<int>(wParam)); + AddStyledText(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam)); return 0; case SCI_INSERTTEXT: { if (lParam == 0) return 0; - int insertPos = static_cast<int>(wParam); + Sci::Position insertPos = static_cast<Sci::Position>(wParam); if (static_cast<int>(wParam) == -1) insertPos = CurrentPosition(); - int newCurrent = CurrentPosition(); + Sci::Position newCurrent = CurrentPosition(); char *sz = CharPtrFromSPtr(lParam); - const int lengthInserted = pdoc->InsertString(insertPos, sz, istrlen(sz)); + const Sci::Position lengthInserted = pdoc->InsertString(insertPos, sz, istrlen(sz)); if (newCurrent > insertPos) newCurrent += lengthInserted; SetEmptySelection(newCurrent); @@ -6221,11 +6222,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->Length(); case SCI_ALLOCATE: - pdoc->Allocate(static_cast<int>(wParam)); + pdoc->Allocate(static_cast<Sci::Position>(wParam)); break; case SCI_GETCHARAT: - return pdoc->CharAt(static_cast<int>(wParam)); + return pdoc->CharAt(static_cast<Sci::Position>(wParam)); case SCI_SETCURRENTPOS: if (sel.IsRectangular()) { @@ -6233,7 +6234,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { SetRectangularRange(); Redraw(); } else { - SetSelection(static_cast<int>(wParam), sel.MainAnchor()); + SetSelection(static_cast<Sci::Position>(wParam), sel.MainAnchor()); } break; @@ -6242,11 +6243,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_SETANCHOR: if (sel.IsRectangular()) { - sel.Rectangular().anchor.SetPosition(static_cast<int>(wParam)); + sel.Rectangular().anchor.SetPosition(static_cast<Sci::Position>(wParam)); SetRectangularRange(); Redraw(); } else { - SetSelection(sel.MainCaret(), static_cast<int>(wParam)); + SetSelection(sel.MainCaret(), static_cast<Sci::Position>(wParam)); } break; @@ -6254,14 +6255,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { return sel.IsRectangular() ? sel.Rectangular().anchor.Position() : sel.MainAnchor(); case SCI_SETSELECTIONSTART: - SetSelection(Platform::Maximum(sel.MainCaret(), static_cast<int>(wParam)), static_cast<int>(wParam)); + SetSelection(std::max(sel.MainCaret(), static_cast<Sci::Position>(wParam)), static_cast<Sci::Position>(wParam)); break; case SCI_GETSELECTIONSTART: return sel.LimitsForRectangularElseMain().start.Position(); case SCI_SETSELECTIONEND: - SetSelection(static_cast<int>(wParam), Platform::Minimum(sel.MainAnchor(), static_cast<int>(wParam))); + SetSelection(static_cast<Sci::Position>(wParam), Platform::Minimum(sel.MainAnchor(), static_cast<Sci::Position>(wParam))); break; case SCI_GETSELECTIONEND: @@ -6384,16 +6385,16 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_GETCURLINE: { - int lineCurrentPos = pdoc->LineFromPosition(sel.MainCaret()); - int lineStart = pdoc->LineStart(lineCurrentPos); - unsigned int lineEnd = pdoc->LineStart(lineCurrentPos + 1); + const Sci::Line lineCurrentPos = pdoc->LineFromPosition(sel.MainCaret()); + const Sci::Position lineStart = pdoc->LineStart(lineCurrentPos); + const Sci::Position lineEnd = pdoc->LineStart(lineCurrentPos + 1); if (lParam == 0) { return 1 + lineEnd - lineStart; } PLATFORM_ASSERT(wParam > 0); char *ptr = CharPtrFromSPtr(lParam); unsigned int iPlace = 0; - for (unsigned int iChar = lineStart; iChar < lineEnd && iPlace < wParam - 1; iChar++) { + for (Sci::Position iChar = lineStart; iChar < lineEnd && iPlace < wParam - 1; iChar++) { ptr[iPlace++] = pdoc->CharAt(iChar); } ptr[iPlace] = '\0'; |