diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-10-10 02:02:10 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-10-10 02:02:10 +0300 |
commit | 2bcf60285e1c196bf05cd47a8e04beb150b485ef (patch) | |
tree | 1d48f8db0b5f42725998fef197bcb762a9a64fb2 /src/ViewStyle.cxx | |
parent | 371b6e510e62d7d3ca5fd5133f190ef6a7bb72ff (diff) | |
download | scintilla-mirror-2bcf60285e1c196bf05cd47a8e04beb150b485ef.tar.gz |
Added Scintilla::Curses to allow for terminal drawing of the main caret.
This is the patch from scinterm/patches/02-caretstyle_curses.patch.
Diffstat (limited to 'src/ViewStyle.cxx')
-rw-r--r-- | src/ViewStyle.cxx | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 5273841ed..92e2613bb 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -661,11 +661,18 @@ bool ViewStyle::SetWrapIndentMode(WrapIndentMode wrapIndentMode_) noexcept { bool ViewStyle::IsBlockCaretStyle() const noexcept { return ((caret.style & CaretStyle::InsMask) == CaretStyle::Block) || - FlagSet(caret.style, CaretStyle::OverstrikeBlock); + FlagSet(caret.style, CaretStyle::OverstrikeBlock) || + FlagSet(caret.style, CaretStyle::Curses); } -bool ViewStyle::IsCaretVisible() const noexcept { - return caret.width > 0 && caret.style != CaretStyle::Invisible; +bool ViewStyle::IsCaretVisible(bool isMainSelection) const noexcept { + return caret.width > 0 && + ((caret.style & CaretStyle::InsMask) != CaretStyle::Invisible || + (FlagSet(caret.style, CaretStyle::Curses) && !isMainSelection)); // only draw additional selections in curses mode +} + +bool ViewStyle::IsMainCursesCaret(bool isMainSelection) const noexcept { + return isMainSelection && FlagSet(caret.style, CaretStyle::Curses); } bool ViewStyle::DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOverride) const noexcept { @@ -673,14 +680,19 @@ bool ViewStyle::DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOv return false; return ((caret.style & CaretStyle::InsMask) == CaretStyle::Block) || (inOverstrike && FlagSet(caret.style, CaretStyle::OverstrikeBlock)) || - imeCaretBlockOverride; + imeCaretBlockOverride || + FlagSet(caret.style, CaretStyle::Curses); } -ViewStyle::CaretShape ViewStyle::CaretShapeForMode(bool inOverstrike) const noexcept { +ViewStyle::CaretShape ViewStyle::CaretShapeForMode(bool inOverstrike, bool isMainSelection) const noexcept { if (inOverstrike) { return (FlagSet(caret.style, CaretStyle::OverstrikeBlock)) ? CaretShape::block : CaretShape::bar; } + if (FlagSet(caret.style, CaretStyle::Curses) && !isMainSelection) { + return CaretShape::block; + } + const CaretStyle caretStyle = caret.style & CaretStyle::InsMask; return (caretStyle <= CaretStyle::Block) ? static_cast<CaretShape>(caretStyle) : CaretShape::line; } |