diff options
Diffstat (limited to 'src/EditView.cxx')
| -rw-r--r-- | src/EditView.cxx | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/src/EditView.cxx b/src/EditView.cxx index b5dce037b..4417525b8 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -1421,7 +1421,7 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt  	for (size_t r = 0; (r<model.sel.Count()) || drawDrag; r++) {  		const bool mainCaret = r == model.sel.Main();  		SelectionPosition posCaret = (drawDrag ? model.posDrag : model.sel.Range(r).caret); -		if ((vsDraw.caretStyle == CARETSTYLE_BLOCK || vsDraw.caretStyle == CARETSTYLE_BLOCK_ALWAYS) && !drawDrag && posCaret > model.sel.Range(r).anchor) { +		if ((vsDraw.IsBlockCaretStyle() || imeCaretBlockOverride) && !drawDrag && posCaret > model.sel.Range(r).anchor) {  			if (posCaret.VirtualSpace() > 0)  				posCaret.SetVirtualSpace(posCaret.VirtualSpace() - 1);  			else @@ -1452,7 +1452,7 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt  			const bool caretBlinkState = (model.caret.active && model.caret.on) || (!additionalCaretsBlink && !mainCaret);  			const bool caretVisibleState = additionalCaretsVisible || mainCaret;  			if ((xposCaret >= 0) && (vsDraw.caretWidth > 0) && (vsDraw.caretStyle != CARETSTYLE_INVISIBLE) && -				((model.posDrag.IsValid()) || (caretBlinkState && caretVisibleState))) { +				(drawDrag || (caretBlinkState && caretVisibleState))) {  				bool caretAtEOF = false;  				bool caretAtEOL = false;  				bool drawBlockCaret = false; @@ -1476,16 +1476,17 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt  				if (xposCaret > 0)  					caretWidthOffset = 0.51f;	// Move back so overlaps both character cells.  				xposCaret += xStart; -				if (model.posDrag.IsValid()) { +				const ViewStyle::CaretShape caretShape = drawDrag ? ViewStyle::CaretShape::line : vsDraw.CaretShapeForMode(model.inOverstrike); +				if (drawDrag) {  					/* Dragging text, use a line caret */  					rcCaret.left = round(xposCaret - caretWidthOffset);  					rcCaret.right = rcCaret.left + vsDraw.caretWidth; -				} else if ((model.inOverstrike && vsDraw.caretStyle != CARETSTYLE_BLOCK_ALWAYS) && drawOverstrikeCaret) { +				} else if ((caretShape == ViewStyle::CaretShape::bar) && drawOverstrikeCaret) {  					/* Overstrike (insert mode), use a modified bar caret */  					rcCaret.top = rcCaret.bottom - 2;  					rcCaret.left = xposCaret + 1;  					rcCaret.right = rcCaret.left + widthOverstrikeCaret - 1; -				} else if ((vsDraw.caretStyle == CARETSTYLE_BLOCK || vsDraw.caretStyle == CARETSTYLE_BLOCK_ALWAYS) || imeCaretBlockOverride) { +				} else if ((caretShape == ViewStyle::CaretShape::block) || imeCaretBlockOverride) {  					/* Block caret */  					rcCaret.left = xposCaret;  					if (!caretAtEOL && !caretAtEOF && (ll->chars[offset] != '\t') && !(IsControlCharacter(ll->chars[offset]))) { | 
