diff options
author | Benjamin Barenblat <bbarenblat@gmail.com> | 2021-12-26 14:17:19 -0500 |
---|---|---|
committer | Benjamin Barenblat <bbarenblat@gmail.com> | 2021-12-26 14:55:35 -0500 |
commit | b819388acc4faa46e296f4e1f173b2cf2be8799f (patch) | |
tree | 5d70c7c64f978055ec4e0ecba38bf7cd85af5a7f /goldfishterm/simple.cc | |
parent | 4e2e8f87f9ee7d22d1d1dfcf581694cc9d912afc (diff) |
Hide cursor during redraws
Diffstat (limited to 'goldfishterm/simple.cc')
-rw-r--r-- | goldfishterm/simple.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/goldfishterm/simple.cc b/goldfishterm/simple.cc index 9c4c9a9..88ceef0 100644 --- a/goldfishterm/simple.cc +++ b/goldfishterm/simple.cc @@ -23,6 +23,7 @@ #include "goldfishterm/internal/emit.h" #include "goldfishterm/terminfo.h" +#include "third_party/abseil/absl/strings/str_cat.h" #include "third_party/abseil/absl/strings/string_view.h" namespace goldfishterm { @@ -48,6 +49,19 @@ absl::string_view TerminalNameFromEnvironment() { return name; } +StringCapability CursorVisibilityCapability(CursorVisibility v) { + switch (v) { + case CursorVisibility::kInvisible: + return StringCapability::kCursorInvisible; + case CursorVisibility::kNormal: + return StringCapability::kCursorNormal; + case CursorVisibility::kVeryVisible: + return StringCapability::kCursorVisible; + default: + throw std::invalid_argument(absl::StrCat("invalid CursorVisibility ", v)); + } +} + } // namespace SimpleTerminalOutput::SimpleTerminalOutput() @@ -59,6 +73,10 @@ SimpleTerminalOutput::SimpleTerminalOutput(const termios& tty) baud_ = cfgetospeed(&tty); } +void SimpleTerminalOutput::SetCursorVisibility(CursorVisibility v) { + return Emit(CursorVisibilityCapability(v)); +} + void SimpleTerminalOutput::Emit( StringCapability cap, std::vector<goldfishterm_internal::StringCapabilityParameter> parameters) { |