From 5fa37f2b7e2c38a2837632d4dbc1b0b72401bd05 Mon Sep 17 00:00:00 2001 From: Daniel Kinzler Date: Fri, 19 Jun 2026 13:32:29 +0200 Subject: [PATCH] Use correct type for number of remaining rows so that PageList.scroll works with long scrollback history. --- src/terminal/PageList.zig | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/terminal/PageList.zig b/src/terminal/PageList.zig index 2888010b2..c2e50a080 100644 --- a/src/terminal/PageList.zig +++ b/src/terminal/PageList.zig @@ -2582,18 +2582,15 @@ pub fn scroll(self: *PageList, behavior: Scroll) void { if (n < midpoint) { // Iterate forward from the first node. var node_it = self.pages.first; - var rem: size.CellCountInt = std.math.cast( - size.CellCountInt, - n, - ) orelse { - self.viewport = .active; - break :row; - }; + var rem: usize = n; while (node_it) |node| : (node_it = node.next) { if (rem < node.data.size.rows) { self.viewport_pin.* = .{ .node = node, - .y = rem, + .y = std.math.cast(size.CellCountInt, rem) orelse { + self.viewport = .active; + break :row; + }, }; break :row; } @@ -2603,18 +2600,15 @@ pub fn scroll(self: *PageList, behavior: Scroll) void { } else { // Iterate backwards from the last node. var node_it = self.pages.last; - var rem: size.CellCountInt = std.math.cast( - size.CellCountInt, - self.total_rows - n, - ) orelse { - self.viewport = .active; - break :row; - }; + var rem: usize = self.total_rows - n; while (node_it) |node| : (node_it = node.prev) { if (rem <= node.data.size.rows) { self.viewport_pin.* = .{ .node = node, - .y = node.data.size.rows - rem, + .y = std.math.cast(size.CellCountInt, node.data.size.rows - rem) orelse { + self.viewport = .active; + break :row; + }, }; break :row; }