aboutsummaryrefslogtreecommitdiff
path: root/src/layout/scrolling.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-02-06 08:42:09 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-02-10 07:29:33 -0800
commit8f9e0d029c84f6a15c842c3bccd694fac0516c0a (patch)
tree0d26dac9ac4b9519b6a0f3f39010f56a354e67a7 /src/layout/scrolling.rs
parent90f24da6317dea022fff89d538c9ba21a580e97b (diff)
downloadniri-8f9e0d029c84f6a15c842c3bccd694fac0516c0a.tar.gz
niri-8f9e0d029c84f6a15c842c3bccd694fac0516c0a.tar.bz2
niri-8f9e0d029c84f6a15c842c3bccd694fac0516c0a.zip
Add set-column-display action
Diffstat (limited to 'src/layout/scrolling.rs')
-rw-r--r--src/layout/scrolling.rs31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/layout/scrolling.rs b/src/layout/scrolling.rs
index b7e240c2..9be308e6 100644
--- a/src/layout/scrolling.rs
+++ b/src/layout/scrolling.rs
@@ -1968,8 +1968,26 @@ impl<W: LayoutElement> ScrollingSpace<W> {
}
let col = &mut self.columns[self.active_column_idx];
+ let display = match col.display_mode {
+ ColumnDisplay::Normal => ColumnDisplay::Tabbed,
+ ColumnDisplay::Tabbed => ColumnDisplay::Normal,
+ };
+
+ self.set_column_display(display);
+ }
+
+ pub fn set_column_display(&mut self, display: ColumnDisplay) {
+ if self.columns.is_empty() {
+ return;
+ }
+
+ let col = &mut self.columns[self.active_column_idx];
+ if col.display_mode == display {
+ return;
+ }
+
cancel_resize_for_column(&mut self.interactive_resize, col);
- col.toggle_tabbed_display();
+ col.set_column_display(display);
// Disable fullscreen if needed.
if col.display_mode != ColumnDisplay::Tabbed && col.tiles.len() > 1 {
@@ -4101,11 +4119,12 @@ impl<W: LayoutElement> Column<W> {
self.update_tile_sizes(false);
}
- fn toggle_tabbed_display(&mut self) {
- self.display_mode = match self.display_mode {
- ColumnDisplay::Normal => ColumnDisplay::Tabbed,
- ColumnDisplay::Tabbed => ColumnDisplay::Normal,
- };
+ fn set_column_display(&mut self, display: ColumnDisplay) {
+ if self.display_mode == display {
+ return;
+ }
+
+ self.display_mode = display;
self.update_tile_sizes(true);
}