summaryrefslogtreecommitdiff
path: root/src/remote.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-04-12 10:39:17 +0100
committerMaxime Coste <mawww@kakoune.org>2017-04-12 10:39:17 +0100
commit91bfd714e4be3484e04eaadc5bbe630861fff652 (patch)
treed8b2eb554c7feaf44545d650351480b468f4886d /src/remote.cc
parent80dd9ec4cb68669df4688c621486a27dd9b33548 (diff)
Place hardware terminal cursor at the current main cursor/prompt cursor position
Fixes #1318 Also fixes https://gitlab.com/gnachman/iterm2/issues/5408
Diffstat (limited to 'src/remote.cc')
-rw-r--r--src/remote.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/remote.cc b/src/remote.cc
index 721c4759..bb577aa2 100644
--- a/src/remote.cc
+++ b/src/remote.cc
@@ -35,6 +35,7 @@ enum class MessageType : char
InfoHide,
Draw,
DrawStatus,
+ SetCursor,
Refresh,
SetOptions,
Key
@@ -335,6 +336,8 @@ public:
const DisplayLine& mode_line,
const Face& default_face) override;
+ void set_cursor(CursorMode mode, DisplayCoord coord) override;
+
void refresh(bool force) override;
DisplayCoord dimensions() override { return m_dimensions; }
@@ -483,6 +486,14 @@ void RemoteUI::draw_status(const DisplayLine& status_line,
m_socket_watcher.events() |= FdEvents::Write;
}
+void RemoteUI::set_cursor(CursorMode mode, DisplayCoord coord)
+{
+ MsgWriter msg{m_send_buffer, MessageType::SetCursor};
+ msg.write(mode);
+ msg.write(coord);
+ m_socket_watcher.events() |= FdEvents::Write;
+}
+
void RemoteUI::refresh(bool force)
{
MsgWriter msg{m_send_buffer, MessageType::Refresh};
@@ -611,6 +622,13 @@ RemoteClient::RemoteClient(StringView session, std::unique_ptr<UserInterface>&&
m_ui->draw_status(status_line, mode_line, default_face);
break;
}
+ case MessageType::SetCursor:
+ {
+ auto mode = reader.read<CursorMode>();
+ auto coord = reader.read<DisplayCoord>();
+ m_ui->set_cursor(mode, coord);
+ break;
+ }
case MessageType::Refresh:
m_ui->refresh(reader.read<bool>());
break;