diff options
Diffstat (limited to 'src/ScintillaBase.cxx')
-rw-r--r-- | src/ScintillaBase.cxx | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index 31e580336..b47986ff0 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -36,6 +36,7 @@ #include "CharClassify.h" #include "Decoration.h" #include "Document.h" +#include "Selection.h" #include "PositionCache.h" #include "Editor.h" #include "ScintillaBase.h" @@ -190,7 +191,7 @@ int ScintillaBase::KeyCommand(unsigned int iMessage) { ct.CallTipCancel(); } if ((iMessage == SCI_DELETEBACK) || (iMessage == SCI_DELETEBACKNOTLINE)) { - if (currentPos <= ct.posStartCallTip) { + if (sel.MainCaret() <= ct.posStartCallTip) { ct.CallTipCancel(); } } @@ -212,24 +213,24 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) { const char *typeSep = strchr(list, ac.GetTypesep()); size_t lenInsert = (typeSep) ? (typeSep-list) : strlen(list); if (ac.ignoreCase) { - SetEmptySelection(currentPos - lenEntered); - pdoc->DeleteChars(currentPos, lenEntered); - SetEmptySelection(currentPos); - pdoc->InsertString(currentPos, list, lenInsert); - SetEmptySelection(currentPos + lenInsert); + SetEmptySelection(sel.MainCaret() - lenEntered); + pdoc->DeleteChars(sel.MainCaret(), lenEntered); + SetEmptySelection(sel.MainCaret()); + pdoc->InsertString(sel.MainCaret(), list, lenInsert); + SetEmptySelection(sel.MainCaret() + lenInsert); } else { - SetEmptySelection(currentPos); - pdoc->InsertString(currentPos, list + lenEntered, lenInsert - lenEntered); - SetEmptySelection(currentPos + lenInsert - lenEntered); + SetEmptySelection(sel.MainCaret()); + pdoc->InsertString(sel.MainCaret(), list + lenEntered, lenInsert - lenEntered); + SetEmptySelection(sel.MainCaret() + lenInsert - lenEntered); } return; } } - ac.Start(wMain, idAutoComplete, currentPos, LocationFromPosition(currentPos), + ac.Start(wMain, idAutoComplete, sel.MainCaret(), LocationFromPosition(sel.MainCaret()), lenEntered, vs.lineHeight, IsUnicodeMode()); PRectangle rcClient = GetClientRectangle(); - Point pt = LocationFromPosition(currentPos - lenEntered); + Point pt = LocationFromPosition(sel.MainCaret() - lenEntered); PRectangle rcPopupBounds = wMain.GetMonitorRect(pt); if (rcPopupBounds.Height() == 0) rcPopupBounds = rcClient; @@ -239,7 +240,7 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) { if (pt.x >= rcClient.right - widthLB) { HorizontalScrollTo(xOffset + pt.x - rcClient.right + widthLB); Redraw(); - pt = LocationFromPosition(currentPos); + pt = LocationFromPosition(sel.MainCaret()); } PRectangle rcac; rcac.left = pt.x - ac.lb->CaretFromEdge(); @@ -305,7 +306,7 @@ void ScintillaBase::AutoCompleteMoveToCurrentWord() { char wordCurrent[1000]; int i; int startWord = ac.posStart - ac.startLen; - for (i = startWord; i < currentPos && i - startWord < 1000; i++) + for (i = startWord; i < sel.MainCaret() && i - startWord < 1000; i++) wordCurrent[i - startWord] = pdoc->CharAt(i); wordCurrent[Platform::Minimum(i - startWord, 999)] = '\0'; ac.Select(wordCurrent); @@ -322,9 +323,9 @@ void ScintillaBase::AutoCompleteCharacterAdded(char ch) { } void ScintillaBase::AutoCompleteCharacterDeleted() { - if (currentPos < ac.posStart - ac.startLen) { + if (sel.MainCaret() < ac.posStart - ac.startLen) { AutoCompleteCancel(); - } else if (ac.cancelAtStartPos && (currentPos <= ac.posStart)) { + } else if (ac.cancelAtStartPos && (sel.MainCaret() <= ac.posStart)) { AutoCompleteCancel(); } else { AutoCompleteMoveToCurrentWord(); @@ -367,7 +368,7 @@ void ScintillaBase::AutoCompleteCompleted() { if (listType > 0) return; - Position endPos = currentPos; + Position endPos = sel.MainCaret(); if (ac.dropRestOfWord) endPos = pdoc->ExtendWordSelect(endPos, 1, true); if (endPos < firstPos) @@ -401,7 +402,7 @@ void ScintillaBase::CallTipShow(Point pt, const char *defn) { if (ct.UseStyleCallTip()) { ct.SetForeBack(vs.styles[STYLE_CALLTIP].fore, vs.styles[STYLE_CALLTIP].back); } - PRectangle rc = ct.CallTipStart(currentPos, pt, + PRectangle rc = ct.CallTipStart(sel.MainCaret(), pt, defn, vs.styles[ctStyle].fontName, vs.styles[ctStyle].sizeZoomed, @@ -436,10 +437,10 @@ void ScintillaBase::ContextMenu(Point pt) { AddToPopUp("Undo", idcmdUndo, writable && pdoc->CanUndo()); AddToPopUp("Redo", idcmdRedo, writable && pdoc->CanRedo()); AddToPopUp(""); - AddToPopUp("Cut", idcmdCut, writable && currentPos != anchor); - AddToPopUp("Copy", idcmdCopy, currentPos != anchor); + AddToPopUp("Cut", idcmdCut, writable && !sel.Empty()); + AddToPopUp("Copy", idcmdCopy, !sel.Empty()); AddToPopUp("Paste", idcmdPaste, writable && WndProc(SCI_CANPASTE, 0, 0)); - AddToPopUp("Delete", idcmdDelete, writable && currentPos != anchor); + AddToPopUp("Delete", idcmdDelete, writable && !sel.Empty()); AddToPopUp(""); AddToPopUp("Select All", idcmdSelectAll); popup.Show(pt, wMain); |