aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/EditView.cxx2
-rw-r--r--src/ViewStyle.cxx4
-rw-r--r--src/ViewStyle.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/src/EditView.cxx b/src/EditView.cxx
index 9418cf597..f2b4e6c03 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -1353,7 +1353,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) &&
+ if ((xposCaret >= 0) && vsDraw.IsCaretVisible() &&
(drawDrag || (caretBlinkState && caretVisibleState))) {
bool caretAtEOF = false;
bool caretAtEOL = false;
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 6ec980af4..43b48544c 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -549,6 +549,10 @@ bool ViewStyle::IsBlockCaretStyle() const noexcept {
(caretStyle & CARETSTYLE_OVERSTRIKE_BLOCK) != 0;
}
+bool ViewStyle::IsCaretVisible() const noexcept {
+ return caretWidth > 0 && caretStyle != CARETSTYLE_INVISIBLE;
+}
+
bool ViewStyle::DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOverride) const noexcept {
if (caretStyle & CARETSTYLE_BLOCK_AFTER)
return false;
diff --git a/src/ViewStyle.h b/src/ViewStyle.h
index 0235b3651..7f6853f13 100644
--- a/src/ViewStyle.h
+++ b/src/ViewStyle.h
@@ -201,6 +201,7 @@ public:
enum class CaretShape { invisible, line, block, bar };
bool IsBlockCaretStyle() const noexcept;
+ bool IsCaretVisible() const noexcept;
bool DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOverride) const noexcept;
CaretShape CaretShapeForMode(bool inOverstrike) const noexcept;