aboutsummaryrefslogtreecommitdiff
path: root/src/layout/monitor.rs
diff options
context:
space:
mode:
authornyx <nnyyxxxx@protonmail.com>2025-03-29 02:40:08 -0400
committerGitHub <noreply@github.com>2025-03-29 06:40:08 +0000
commit0db48e2f1bf001bfd05c686002ff1998d0f1205b (patch)
treeafc86c3f1652675750f3c6d0db0c6e0d932d4438 /src/layout/monitor.rs
parent7cfecf4b1b9b8c11c80061fb31926f888228499d (diff)
downloadniri-0db48e2f1bf001bfd05c686002ff1998d0f1205b.tar.gz
niri-0db48e2f1bf001bfd05c686002ff1998d0f1205b.tar.bz2
niri-0db48e2f1bf001bfd05c686002ff1998d0f1205b.zip
Add focus argument to move-window-to-workspace (#1332)
* layout: add focus flag to move-window-to-workspace * lib: update comment * misc: minor dup refactor * input: format code * layout: minor nit * layout: update comment * input: remove unnecessary conditionals * misc: replace boolean * tests: fix the failing one * layout: change to smart * ipc: Option<bool> -> bool * lib: format code * Rewrite focus doc comment --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Diffstat (limited to 'src/layout/monitor.rs')
-rw-r--r--src/layout/monitor.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs
index 851bffbd..b0879606 100644
--- a/src/layout/monitor.rs
+++ b/src/layout/monitor.rs
@@ -474,7 +474,12 @@ impl<W: LayoutElement> Monitor<W> {
);
}
- pub fn move_to_workspace(&mut self, window: Option<&W::Id>, idx: usize) {
+ pub fn move_to_workspace(
+ &mut self,
+ window: Option<&W::Id>,
+ idx: usize,
+ activate: ActivateWindow,
+ ) {
let source_workspace_idx = if let Some(window) = window {
self.workspaces
.iter()
@@ -490,14 +495,11 @@ impl<W: LayoutElement> Monitor<W> {
}
let new_id = self.workspaces[new_idx].id();
- let activate = window.map_or(true, |win| {
- self.active_window().map(|win| win.id()) == Some(win)
+ let activate = activate.map_smart(|| {
+ window.map_or(true, |win| {
+ self.active_window().map(|win| win.id()) == Some(win)
+ })
});
- let activate = if activate {
- ActivateWindow::Yes
- } else {
- ActivateWindow::No
- };
let workspace = &mut self.workspaces[source_workspace_idx];
let transaction = Transaction::new();
@@ -515,7 +517,11 @@ impl<W: LayoutElement> Monitor<W> {
id: new_id,
column_idx: None,
},
- activate,
+ if activate {
+ ActivateWindow::Yes
+ } else {
+ ActivateWindow::No
+ },
removed.width,
removed.is_full_width,
removed.is_floating,
@@ -578,7 +584,7 @@ impl<W: LayoutElement> Monitor<W> {
let workspace = &mut self.workspaces[source_workspace_idx];
if workspace.floating_is_active() {
- self.move_to_workspace(None, idx);
+ self.move_to_workspace(None, idx, ActivateWindow::Smart);
return;
}