aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/ScintillaHistory.html4
-rw-r--r--src/EditView.cxx8
2 files changed, 11 insertions, 1 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index 0972070d6..fd62d8376 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -525,6 +525,10 @@
Released 30 December 2016.
</li>
<li>
+ Display block caret over the character at the end of a selection to be similar
+ to other editors.
+ </li>
+ <li>
The Diff lexer recognizes deleted lines that start with "--- ".
</li>
<li>
diff --git a/src/EditView.cxx b/src/EditView.cxx
index a35a46b54..48991e480 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -1288,7 +1288,13 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt
// For each selection draw
for (size_t r = 0; (r<model.sel.Count()) || drawDrag; r++) {
const bool mainCaret = r == model.sel.Main();
- const SelectionPosition posCaret = (drawDrag ? model.posDrag : model.sel.Range(r).caret);
+ SelectionPosition posCaret = (drawDrag ? model.posDrag : model.sel.Range(r).caret);
+ if (vsDraw.caretStyle == CARETSTYLE_BLOCK && !drawDrag && posCaret > model.sel.Range(r).anchor) {
+ if (posCaret.VirtualSpace() > 0)
+ posCaret.SetVirtualSpace(posCaret.VirtualSpace() - 1);
+ else
+ posCaret.SetPosition(model.pdoc->MovePositionOutsideChar(posCaret.Position()-1, -1));
+ }
const int offset = posCaret.Position() - posLineStart;
const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;
const XYPOSITION virtualOffset = posCaret.VirtualSpace() * spaceWidth;