diff --git a/src/renderer/Metal.zig b/src/renderer/Metal.zig index ef6f329d9..b2a47f2f6 100644 --- a/src/renderer/Metal.zig +++ b/src/renderer/Metal.zig @@ -932,6 +932,7 @@ pub fn updateFrame( // success and reset while we hold the lock. This is much easier // than coordinating row by row or as changes are persisted. state.terminal.flags.dirty = .{}; + state.terminal.screen.dirty = .{}; { var it = state.terminal.screen.pages.pageIterator( .right_down, diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index 304bc7cce..3ab434048 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -1344,9 +1344,11 @@ pub fn select(self: *Screen, sel_: ?Selection) !void { /// Same as select(null) but can't fail. pub fn clearSelection(self: *Screen) void { - if (self.selection) |*sel| sel.deinit(self); + if (self.selection) |*sel| { + sel.deinit(self); + self.dirty.selection = true; + } self.selection = null; - self.dirty.selection = true; } pub const SelectionString = struct {