diff --git a/src/Surface.zig b/src/Surface.zig index 1fe23ae32..857055c77 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -2298,9 +2298,10 @@ pub fn mouseButtonCallback( if (distance > max_distance) self.mouse.left_click_count = 0; } - // TODO(paged-terminal): untrack previous pin across screens if (self.mouse.left_click_pin) |prev| { - screen.pages.untrackPin(prev); + const pin_screen = t.getScreen(self.mouse.left_click_screen); + pin_screen.pages.untrackPin(prev); + self.mouse.left_click_pin = null; } // Store it diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index f78d5ca97..f7e2b333f 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -2105,6 +2105,14 @@ pub fn getPwd(self: *const Terminal) ?[]const u8 { return self.pwd.items; } +/// Get the screen pointer for the given type. +pub fn getScreen(self: *Terminal, t: ScreenType) *Screen { + return if (self.active_screen == t) + &self.screen + else + &self.secondary_screen; +} + /// Options for switching to the alternate screen. pub const AlternateScreenOptions = struct { cursor_save: bool = false,