diff options
Diffstat (limited to 'src/EditView.cxx')
-rw-r--r-- | src/EditView.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
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; |