diff options
| author | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-11-16 11:10:32 +0100 |
|---|---|---|
| committer | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-11-16 11:10:32 +0100 |
| commit | 06d2c22c59fe07334f0a7643a73cff94ce418f49 (patch) | |
| tree | aeb6337c7cc5a76ccdd7b9f61802949b3cbb1bda /src/frames.rs | |
| parent | chore: bump version to v0.18.1 (diff) | |
| download | sl0pstatus-06d2c22c59fe07334f0a7643a73cff94ce418f49.tar.gz sl0pstatus-06d2c22c59fe07334f0a7643a73cff94ce418f49.tar.xz sl0pstatus-06d2c22c59fe07334f0a7643a73cff94ce418f49.zip | |
feat: add hide_frame_except_for_fullscreen
Diffstat (limited to 'src/frames.rs')
| -rw-r--r-- | src/frames.rs | 65 |
1 files changed, 25 insertions, 40 deletions
diff --git a/src/frames.rs b/src/frames.rs index 40e8caf..19f6d5d 100644 --- a/src/frames.rs +++ b/src/frames.rs @@ -4,6 +4,7 @@ use zellij_tile::prelude::*; pub fn hide_frames_conditionally( cfg_hide_frames_for_single_pane: bool, cfg_hide_frames_except_for_search: bool, + cfg_hide_frames_except_for_fullscreen: bool, tabs: &[TabInfo], pane_info: &PaneManifest, mode_info: &ModeInfo, @@ -28,62 +29,46 @@ pub fn hide_frames_conditionally( 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); + let frames_for_search = + cfg_hide_frames_except_for_search && should_show_frames_for_search(mode_info); + let frames_for_fullscreen = + cfg_hide_frames_except_for_fullscreen && should_show_frames_for_fullscreen(&panes); + let frames_for_single_pane = + cfg_hide_frames_for_single_pane && should_show_frames_for_multiple_panes(mode_info, &panes); - return; + if (frames_for_search || frames_for_fullscreen || frames_for_single_pane) && !frame_enabled { + toggle_pane_frames(); } - if cfg_hide_frames_for_single_pane { - hide_frames_on_single_pane(frame_enabled, mode_info, panes); + if (!frames_for_search && !frames_for_fullscreen && !frames_for_single_pane) && frame_enabled { + toggle_pane_frames(); } } -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(); - } - } - } +pub fn should_show_frames_for_search(mode_info: &ModeInfo) -> bool { + mode_info.mode == InputMode::EnterSearch +} + +pub fn should_show_frames_for_fullscreen(panes: &[&PaneInfo]) -> bool { + let active_pane = match panes.iter().find(|p| p.is_focused) { + Some(p) => p, + None => return false, + }; + + active_pane.is_fullscreen } #[tracing::instrument(skip_all)] -pub fn hide_frames_on_single_pane( - frame_enabled: bool, - mode_info: &ModeInfo, - panes: Vec<&PaneInfo>, -) { +pub fn should_show_frames_for_multiple_panes(mode_info: &ModeInfo, panes: &[&PaneInfo]) -> bool { 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(); - } - - return; - } - - if panes.len() == 1 && frame_enabled { - tracing::debug!("toggle enabled"); - toggle_pane_frames(); + return true; } - if panes.len() > 1 && !frame_enabled { - tracing::debug!("toggle not enabled"); - toggle_pane_frames(); - } + panes.len() > 1 } fn is_plugin_for_current_tab(panes: &[PaneInfo], plugin_pane_id: PluginIds) -> bool { |
