diff --git a/TODO.md b/TODO.md index aef8aa94d..08a428000 100644 --- a/TODO.md +++ b/TODO.md @@ -25,3 +25,4 @@ paged-terminal branch: - tests and logic for overflowing page capacities: * graphemes +- there is some bug around adjusting selection up out of viewport diff --git a/src/Surface.zig b/src/Surface.zig index 857055c77..2418a535c 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -1360,6 +1360,11 @@ pub fn keyCallback( defer self.renderer_state.mutex.unlock(); var screen = self.io.terminal.screen; const sel = if (screen.selection) |*sel| sel else break :adjust_selection; + + // Silently consume key releases. We only want to process selection + // adjust on press. + if (event.action != .press and event.action != .repeat) return .consumed; + sel.adjust(&screen, switch (event.key) { .left => .left, .right => .right, @@ -1372,9 +1377,6 @@ pub fn keyCallback( else => break :adjust_selection, }); - // Silently consume key releases. - if (event.action != .press and event.action != .repeat) return .consumed; - // If the selection endpoint is outside of the current viewpoint, // scroll it in to view. // TODO(paged-terminal)