aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/action.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-02-25 09:48:47 +0100
committerGitHub <noreply@github.com>2026-02-25 09:48:47 +0100
commit6e0dd8e51cae440c1453c983740abc6869c46029 (patch)
tree7b7a4aaef1fc5df6ad7c56e572aad50f19858f46 /zellij-utils/src/plugin_api/action.rs
parentfix: respect user's cursor choice in web client even when terminal overrides ... (diff)
downloadsl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.tar.gz
sl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.tar.xz
sl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.zip
Atomic show hide floating panes (#4764)
* atomic show/hide floating panes (cli, plugin API, keybinding) * rustfmt * add pr
Diffstat (limited to '')
-rw-r--r--zellij-utils/src/plugin_api/action.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs
index 1a8ab956..5bb58db3 100644
--- a/zellij-utils/src/plugin_api/action.rs
+++ b/zellij-utils/src/plugin_api/action.rs
@@ -16,6 +16,7 @@ pub use super::generated_api::api::{
FloatingPaneLayout as ProtobufFloatingPaneLayout,
FloatingPlacement as ProtobufFloatingPlacement,
GoToTabNamePayload,
+ HideFloatingPanesPayload,
IdAndName,
InPlaceConfig as ProtobufInPlaceConfig,
KeyModifier as ProtobufKeyModifier,
@@ -56,12 +57,14 @@ pub use super::generated_api::api::{
ScrollAtPayload,
SearchDirection as ProtobufSearchDirection,
SearchOption as ProtobufSearchOption,
+ ShowFloatingPanesPayload,
SplitDirection as ProtobufSplitDirection,
SplitSize as ProtobufSplitSize,
StackedPlacement as ProtobufStackedPlacement,
SwapFloatingLayout as ProtobufSwapFloatingLayout,
SwapTiledLayout as ProtobufSwapTiledLayout,
SwitchToModePayload,
+ TabIdAndName,
TabLayoutInfo as ProtobufTabLayoutInfo,
TiledPaneLayout as ProtobufTiledPaneLayout,
TiledPlacement as ProtobufTiledPlacement,
@@ -396,6 +399,24 @@ impl TryFrom<ProtobufAction> for Action {
None => Ok(Action::ToggleFloatingPanes),
}
},
+ Some(ProtobufActionName::ShowFloatingPanes) => match protobuf_action.optional_payload {
+ Some(OptionalPayload::ShowFloatingPanesPayload(payload)) => {
+ Ok(Action::ShowFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(Action::ShowFloatingPanes { tab_id: None }),
+ _ => Err("Wrong payload for ShowFloatingPanes"),
+ },
+ Some(ProtobufActionName::HideFloatingPanes) => match protobuf_action.optional_payload {
+ Some(OptionalPayload::HideFloatingPanesPayload(payload)) => {
+ Ok(Action::HideFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(Action::HideFloatingPanes { tab_id: None }),
+ _ => Err("Wrong payload for HideFloatingPanes"),
+ },
Some(ProtobufActionName::CloseFocus) => match protobuf_action.optional_payload {
Some(_) => Err("CloseFocus should not have a payload"),
None => Ok(Action::CloseFocus),
@@ -1306,6 +1327,22 @@ impl TryFrom<Action> for ProtobufAction {
name: ProtobufActionName::ToggleFloatingPanes as i32,
optional_payload: None,
}),
+ Action::ShowFloatingPanes { tab_id } => Ok(ProtobufAction {
+ name: ProtobufActionName::ShowFloatingPanes as i32,
+ optional_payload: Some(OptionalPayload::ShowFloatingPanesPayload(
+ ShowFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
+ Action::HideFloatingPanes { tab_id } => Ok(ProtobufAction {
+ name: ProtobufActionName::HideFloatingPanes as i32,
+ optional_payload: Some(OptionalPayload::HideFloatingPanesPayload(
+ HideFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
Action::CloseFocus => Ok(ProtobufAction {
name: ProtobufActionName::CloseFocus as i32,
optional_payload: None,