aboutsummaryrefslogtreecommitdiffstats
path: root/src/frames.rs
diff options
context:
space:
mode:
authorDaniel Jankowski <daniel.jankowski@rub.de>2024-11-16 11:10:32 +0100
committerDaniel Jankowski <daniel.jankowski@rub.de>2024-11-16 11:10:32 +0100
commit06d2c22c59fe07334f0a7643a73cff94ce418f49 (patch)
treeaeb6337c7cc5a76ccdd7b9f61802949b3cbb1bda /src/frames.rs
parentchore: bump version to v0.18.1 (diff)
downloadsl0pstatus-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.rs65
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 {