aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/session_serialization.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-12-16 16:03:20 +0100
committerGitHub <noreply@github.com>2024-12-16 16:03:20 +0100
commitdd291e2a1f9b4ee3eb1a947e1501a54b10663ea7 (patch)
tree0ae41e8175d2a3fd260b3c510a30502f6386ac7f /zellij-utils/src/session_serialization.rs
parentdocs(changelog): multiplayer cursor fix (diff)
downloadsl0ppij-dd291e2a1f9b4ee3eb1a947e1501a54b10663ea7.tar.gz
sl0ppij-dd291e2a1f9b4ee3eb1a947e1501a54b10663ea7.tar.xz
sl0ppij-dd291e2a1f9b4ee3eb1a947e1501a54b10663ea7.zip
feat(ux): pin floating panes (#3876)
* working * ui indication * add keybinding * add to plugin panes * fix with multiple cursors * toggle with the mouse * fix e2e tests and add new one * some cleanups * add to layouts * make mouse click more lenient * allow setting a new floating pane as pinned * make toggle work throughthe command line * add to plugin api * get tests to pass * style(fmt): rustfmt
Diffstat (limited to 'zellij-utils/src/session_serialization.rs')
-rw-r--r--zellij-utils/src/session_serialization.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/zellij-utils/src/session_serialization.rs b/zellij-utils/src/session_serialization.rs
index 68a9c2da..3cb7c5eb 100644
--- a/zellij-utils/src/session_serialization.rs
+++ b/zellij-utils/src/session_serialization.rs
@@ -453,6 +453,14 @@ fn serialize_floating_layout_attributes(
},
None => {},
}
+ match layout.pinned {
+ Some(true) => {
+ let mut node = KdlNode::new("pinned");
+ node.entries_mut().push(KdlEntry::new(KdlValue::Bool(true)));
+ pane_node_children.nodes_mut().push(node);
+ },
+ _ => {},
+ }
}
fn serialize_start_suspended(command: &Option<String>, pane_node_children: &mut KdlDocument) {
@@ -774,6 +782,7 @@ fn get_floating_panes_layout_from_panegeoms(
width: Some(m.geom.cols.into()),
x: Some(PercentOrFixed::Fixed(m.geom.x)),
y: Some(PercentOrFixed::Fixed(m.geom.y)),
+ pinned: Some(m.geom.is_pinned),
run,
focus: Some(m.is_focused),
already_running: false,
@@ -1275,6 +1284,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1286,6 +1296,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1301,6 +1312,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1315,6 +1327,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1334,6 +1347,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1347,6 +1361,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1362,6 +1377,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1373,6 +1389,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1386,6 +1403,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1415,6 +1433,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1426,6 +1445,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1441,6 +1461,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1455,6 +1476,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1474,6 +1496,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1487,6 +1510,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1502,6 +1526,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1515,6 +1540,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1528,6 +1554,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1555,6 +1582,7 @@ mod tests {
rows: Dimension::fixed(1),
cols: Dimension::fixed(10),
is_stacked: true,
+ is_pinned: false,
},
..Default::default()
},
@@ -1565,6 +1593,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: true,
+ is_pinned: false,
},
..Default::default()
},
@@ -1575,6 +1604,7 @@ mod tests {
rows: Dimension::fixed(1),
cols: Dimension::fixed(10),
is_stacked: true,
+ is_pinned: false,
},
..Default::default()
},
@@ -1598,6 +1628,7 @@ mod tests {
rows: Dimension::percent(100.0),
cols: Dimension::percent(100.0),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
}],
@@ -1612,6 +1643,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1622,6 +1654,7 @@ mod tests {
rows: Dimension::fixed(10),
cols: Dimension::fixed(10),
is_stacked: false,
+ is_pinned: false,
},
..Default::default()
},
@@ -1753,6 +1786,7 @@ mod tests {
rows: get_dim(&data["rows"]),
cols: get_dim(&data["cols"]),
is_stacked: data["is_stacked"].to_string().parse().unwrap(),
+ is_pinned: false,
}
}