From 8f5325e4ed2943a06de6ce5ffa1b69a612c1e440 Mon Sep 17 00:00:00 2001 From: dswij <44697459+dswij@users.noreply.github.com> Date: Mon, 3 Jan 2022 21:58:15 +0800 Subject: [PATCH] fix(ui): left click on tabs when pane is on fullscreen mode (#977) * Fix left click on tabs when pane is on fullscreen mode * run fmt --- zellij-server/src/tab.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/zellij-server/src/tab.rs b/zellij-server/src/tab.rs index 77beba73..9aceafd6 100644 --- a/zellij-server/src/tab.rs +++ b/zellij-server/src/tab.rs @@ -1,6 +1,7 @@ //! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size, //! as well as how they should be resized +use zellij_utils::position::{Column, Line}; use zellij_utils::{position::Position, serde, zellij_tile}; use crate::ui::pane_boundaries_frame::FrameParams; @@ -3350,7 +3351,7 @@ impl Tab { } fn get_pane_id_at(&self, point: &Position, search_selectable: bool) -> Option { - if self.fullscreen_is_active { + if self.fullscreen_is_active && self.is_position_inside_viewport(point) { let first_client_id = self.connected_clients.iter().next().unwrap(); // TODO: instead of doing this, record the pane that is in fullscreen return self.get_active_pane_id(*first_client_id); } @@ -3526,6 +3527,19 @@ impl Tab { active_terminal.update_name(s); } } + + pub fn is_position_inside_viewport(&self, point: &Position) -> bool { + let Position { + line: Line(line), + column: Column(column), + } = *point; + let line: usize = line.try_into().unwrap(); + + line >= self.viewport.y + && column >= self.viewport.x + && line <= self.viewport.y + self.viewport.rows + && column <= self.viewport.x + self.viewport.cols + } } #[allow(clippy::borrowed_box)]