diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-06 08:42:09 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-10 07:29:33 -0800 |
| commit | 8f9e0d029c84f6a15c842c3bccd694fac0516c0a (patch) | |
| tree | 0d26dac9ac4b9519b6a0f3f39010f56a354e67a7 /src/layout/scrolling.rs | |
| parent | 90f24da6317dea022fff89d538c9ba21a580e97b (diff) | |
| download | niri-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.rs | 31 |
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); } |
