From c96cedcf220390ea0c23532591397212591513b9 Mon Sep 17 00:00:00 2001 From: Tim Culverhouse Date: Mon, 2 Oct 2023 16:50:39 -0500 Subject: [PATCH] mouse: set mouse as text only when not reporting mouse events The selection mode is only valid when mouse reporting events are on. If we have any mouse reporting events turned on, reset the mouse shape back to default (a pointer). --- src/termio/Exec.zig | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/termio/Exec.zig b/src/termio/Exec.zig index bcd76ed41..b89e9a64c 100644 --- a/src/termio/Exec.zig +++ b/src/termio/Exec.zig @@ -1698,10 +1698,42 @@ const StreamHandler = struct { self.messageWriter(.{ .linefeed_mode = enabled }); }, - .mouse_event_x10 => self.terminal.flags.mouse_event = if (enabled) .x10 else .none, - .mouse_event_normal => self.terminal.flags.mouse_event = if (enabled) .normal else .none, - .mouse_event_button => self.terminal.flags.mouse_event = if (enabled) .button else .none, - .mouse_event_any => self.terminal.flags.mouse_event = if (enabled) .any else .none, + .mouse_event_x10 => { + if (enabled) { + self.terminal.flags.mouse_event = .x10; + try self.setMouseShape(.default); + } else { + self.terminal.flags.mouse_event = .none; + try self.setMouseShape(.text); + } + }, + .mouse_event_normal => { + if (enabled) { + self.terminal.flags.mouse_event = .normal; + try self.setMouseShape(.default); + } else { + self.terminal.flags.mouse_event = .none; + try self.setMouseShape(.text); + } + }, + .mouse_event_button => { + if (enabled) { + self.terminal.flags.mouse_event = .button; + try self.setMouseShape(.default); + } else { + self.terminal.flags.mouse_event = .none; + try self.setMouseShape(.text); + } + }, + .mouse_event_any => { + if (enabled) { + self.terminal.flags.mouse_event = .any; + try self.setMouseShape(.default); + } else { + self.terminal.flags.mouse_event = .none; + try self.setMouseShape(.text); + } + }, .mouse_format_utf8 => self.terminal.flags.mouse_format = if (enabled) .utf8 else .x10, .mouse_format_sgr => self.terminal.flags.mouse_format = if (enabled) .sgr else .x10,