diff --git a/src/Surface.zig b/src/Surface.zig index 7c994ef0f..3af7b8e9d 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -3040,8 +3040,13 @@ pub fn cursorPosCallback( // Do a mouse report if (self.io.terminal.flags.mouse_event != .none) report: { // Shift overrides mouse "grabbing" in the window, taken from Kitty. - if (self.mouse.mods.shift and - !self.mouseShiftCapture(false)) break :report; + // This only applies if there is a mouse button pressed so that + // movement reports are not affected. + if (self.mouse.mods.shift and !self.mouseShiftCapture(false)) { + for (self.mouse.click_state) |state| { + if (state != .release) break :report; + } + } // We use the first mouse button we find pressed in order to report // since the spec (afaict) does not say...