diff options
| author | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-10-05 17:19:41 +0200 |
|---|---|---|
| committer | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-10-05 17:19:41 +0200 |
| commit | 6d13e481aceacd3efe583fb6c442f30e8909f555 (patch) | |
| tree | 6dd791834a35a4977bc6ce96a70fa589b805c990 /src/frames.rs | |
| parent | chore: update cargo deps (diff) | |
| download | sl0pstatus-6d13e481aceacd3efe583fb6c442f30e8909f555.tar.gz sl0pstatus-6d13e481aceacd3efe583fb6c442f30e8909f555.tar.xz sl0pstatus-6d13e481aceacd3efe583fb6c442f30e8909f555.zip | |
feat: hide frames except on search
Diffstat (limited to 'src/frames.rs')
| -rw-r--r-- | src/frames.rs | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/src/frames.rs b/src/frames.rs index 7954755..40e8caf 100644 --- a/src/frames.rs +++ b/src/frames.rs @@ -1,13 +1,15 @@ use zellij_tile::prelude::*; #[tracing::instrument(skip_all)] -pub fn hide_frames_on_single_pane( - tabs: Vec<TabInfo>, +pub fn hide_frames_conditionally( + cfg_hide_frames_for_single_pane: bool, + cfg_hide_frames_except_for_search: bool, + tabs: &[TabInfo], pane_info: &PaneManifest, mode_info: &ModeInfo, plugin_pane_id: PluginIds, ) { - let panes = match get_current_panes(&tabs, pane_info) { + let panes = match get_current_panes(tabs, pane_info) { Some(panes) => panes, None => return, }; @@ -19,23 +21,54 @@ pub fn hide_frames_on_single_pane( return; } - tracing::debug!("panes {:?}", panes); - let panes: Vec<&PaneInfo> = panes .iter() .filter(|p| !p.is_plugin && !p.is_floating) .collect(); - // frame is enabled, when content does no start at [0, 0]. With default frames - // it's [1, 1] let frame_enabled = panes.iter().any(|p| p.pane_content_x - p.pane_x > 0); + if cfg_hide_frames_except_for_search { + hide_frames_except_for_search(frame_enabled, mode_info); + + return; + } + + if cfg_hide_frames_for_single_pane { + hide_frames_on_single_pane(frame_enabled, mode_info, panes); + } +} + +pub fn hide_frames_except_for_search(frame_enabled: bool, mode_info: &ModeInfo) { + match mode_info.mode { + InputMode::EnterSearch => { + if !frame_enabled { + tracing::debug!("toggle cause search"); + toggle_pane_frames(); + } + } + _ => { + if frame_enabled { + tracing::debug!("toggle cause not search"); + toggle_pane_frames(); + } + } + } +} + +#[tracing::instrument(skip_all)] +pub fn hide_frames_on_single_pane( + frame_enabled: bool, + mode_info: &ModeInfo, + panes: Vec<&PaneInfo>, +) { tracing::debug!("mode: {:?}", mode_info.mode); if mode_info.mode == InputMode::RenamePane || mode_info.mode == InputMode::Search || mode_info.mode == InputMode::EnterSearch { if !frame_enabled { + tracing::debug!("toggle cause of mode"); toggle_pane_frames(); } @@ -43,10 +76,12 @@ pub fn hide_frames_on_single_pane( } if panes.len() == 1 && frame_enabled { + tracing::debug!("toggle enabled"); toggle_pane_frames(); } if panes.len() > 1 && !frame_enabled { + tracing::debug!("toggle not enabled"); toggle_pane_frames(); } } |
