aboutsummaryrefslogtreecommitdiffstats
path: root/src/frames.rs
diff options
context:
space:
mode:
authorDaniel Jankowski <daniel.jankowski@rub.de>2024-10-05 17:19:41 +0200
committerDaniel Jankowski <daniel.jankowski@rub.de>2024-10-05 17:19:41 +0200
commit6d13e481aceacd3efe583fb6c442f30e8909f555 (patch)
tree6dd791834a35a4977bc6ce96a70fa589b805c990 /src/frames.rs
parentchore: update cargo deps (diff)
downloadsl0pstatus-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.rs49
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();
}
}