From 0e22e2a8ddd631665f3febfebd0b481f62b4254b Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 9 Oct 2023 10:53:47 -0700 Subject: [PATCH] terminal: SD should also work if cursor outside of left/right region --- src/terminal/Terminal.zig | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index e845c6e46..4945270f6 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -1711,6 +1711,7 @@ pub fn scrollDown(self: *Terminal, count: usize) !void { // Move to the top of the scroll region self.screen.cursor.y = self.scrolling_region.top; + self.screen.cursor.x = self.scrolling_region.left; try self.insertLines(count); } @@ -5441,6 +5442,32 @@ test "Terminal: scrollDown left/right scroll region" { } } +test "Terminal: scrollDown outside of left/right scroll region" { + const alloc = testing.allocator; + var t = try init(alloc, 10, 10); + defer t.deinit(alloc); + + try t.printString("ABC123"); + t.carriageReturn(); + try t.linefeed(); + try t.printString("DEF456"); + t.carriageReturn(); + try t.linefeed(); + try t.printString("GHI789"); + t.scrolling_region.left = 1; + t.scrolling_region.right = 3; + t.setCursorPos(1, 1); + const cursor = t.screen.cursor; + try t.scrollDown(1); + try testing.expectEqual(cursor, t.screen.cursor); + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("A 23\nDBC156\nGEF489\n HI7", str); + } +} + test "Terminal: tabClear single" { const alloc = testing.allocator; var t = try init(alloc, 30, 5);