aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/input.rs7
-rw-r--r--src/layout.rs30
2 files changed, 36 insertions, 1 deletions
diff --git a/src/input.rs b/src/input.rs
index 7ea2e457..ec25b22c 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -33,6 +33,7 @@ enum Action {
MoveToWorkspaceDown,
MoveToWorkspaceUp,
ToggleWidth,
+ ToggleFullWidth,
}
pub enum CompositorMod {
@@ -74,7 +75,7 @@ fn action(comp_mod: CompositorMod, keysym: KeysymHandle, mods: ModifiersState) -
KEY_E => Action::Quit,
KEY_t => Action::SpawnTerminal,
KEY_q => Action::CloseWindow,
- KEY_f => Action::ToggleFullscreen,
+ KEY_F => Action::ToggleFullscreen,
KEY_h | KEY_Left if mods.ctrl => Action::MoveLeft,
KEY_l | KEY_Right if mods.ctrl => Action::MoveRight,
KEY_j | KEY_Down if mods.ctrl => Action::MoveDown,
@@ -90,6 +91,7 @@ fn action(comp_mod: CompositorMod, keysym: KeysymHandle, mods: ModifiersState) -
KEY_comma => Action::ConsumeIntoColumn,
KEY_period => Action::ExpelFromColumn,
KEY_r => Action::ToggleWidth,
+ KEY_f => Action::ToggleFullWidth,
_ => Action::None,
}
}
@@ -230,6 +232,9 @@ impl Niri {
Action::ToggleWidth => {
self.monitor_set.toggle_width();
}
+ Action::ToggleFullWidth => {
+ self.monitor_set.toggle_full_width();
+ }
}
}
}
diff --git a/src/layout.rs b/src/layout.rs
index 6e4d9306..c4ab517b 100644
--- a/src/layout.rs
+++ b/src/layout.rs
@@ -759,6 +759,13 @@ impl<W: LayoutElement> MonitorSet<W> {
};
monitor.toggle_width();
}
+
+ pub fn toggle_full_width(&mut self) {
+ let Some(monitor) = self.active_monitor() else {
+ return;
+ };
+ monitor.toggle_full_width();
+ }
}
impl MonitorSet<Window> {
@@ -976,6 +983,10 @@ impl<W: LayoutElement> Monitor<W> {
fn toggle_width(&mut self) {
self.active_workspace().toggle_width();
}
+
+ fn toggle_full_width(&mut self) {
+ self.active_workspace().toggle_full_width();
+ }
}
impl Monitor<Window> {
@@ -1392,6 +1403,14 @@ impl<W: LayoutElement> Workspace<W> {
self.columns[self.active_column_idx].toggle_width(self.view_size);
}
+
+ fn toggle_full_width(&mut self) {
+ if self.columns.is_empty() {
+ return;
+ }
+
+ self.columns[self.active_column_idx].toggle_full_width(self.view_size);
+ }
}
impl Workspace<Window> {
@@ -1555,6 +1574,17 @@ impl<W: LayoutElement> Column<W> {
let width = ColumnWidth::PresetProportion(idx);
self.set_width(view_size, width);
}
+
+ fn toggle_full_width(&mut self, view_size: Size<i32, Logical>) {
+ let width = match self.width {
+ ColumnWidth::Proportion(1.) => {
+ // FIXME: would be good to restore to previous width here.
+ ColumnWidth::default()
+ }
+ _ => ColumnWidth::Proportion(1.),
+ };
+ self.set_width(view_size, width);
+ }
}
pub fn output_size(output: &Output) -> Size<i32, Logical> {