aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-12-28 09:09:28 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-12-28 09:09:28 +0400
commitf3e5e13c4503978d47934fb4828bb12fbe606220 (patch)
treef4d4a99499c2705b2fb704b66585e2c7cae3545e /src/layout
parentb13892ca637cccfb496e3204b2793c069af17ccb (diff)
downloadniri-f3e5e13c4503978d47934fb4828bb12fbe606220.tar.gz
niri-f3e5e13c4503978d47934fb4828bb12fbe606220.tar.bz2
niri-f3e5e13c4503978d47934fb4828bb12fbe606220.zip
Activate windows only on active monitors
This matches what we do in advance_animations().
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/mod.rs13
-rw-r--r--src/layout/workspace.rs6
2 files changed, 13 insertions, 6 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs
index 1a9b5076..c60211a3 100644
--- a/src/layout/mod.rs
+++ b/src/layout/mod.rs
@@ -1341,16 +1341,21 @@ impl Layout<Window> {
let _span = tracy_client::span!("MonitorSet::refresh");
match &self.monitor_set {
- MonitorSet::Normal { monitors, .. } => {
- for mon in monitors {
+ MonitorSet::Normal {
+ monitors,
+ active_monitor_idx,
+ ..
+ } => {
+ for (idx, mon) in monitors.iter().enumerate() {
+ let is_active = idx == *active_monitor_idx;
for ws in &mon.workspaces {
- ws.refresh();
+ ws.refresh(is_active);
}
}
}
MonitorSet::NoOutputs { workspaces, .. } => {
for ws in workspaces {
- ws.refresh();
+ ws.refresh(false);
}
}
}
diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs
index 090e27dd..4a029fba 100644
--- a/src/layout/workspace.rs
+++ b/src/layout/workspace.rs
@@ -909,13 +909,15 @@ impl<W: LayoutElement> Workspace<W> {
}
impl Workspace<Window> {
- pub fn refresh(&self) {
+ pub fn refresh(&self, is_active: bool) {
let bounds = self.toplevel_bounds();
for (col_idx, col) in self.columns.iter().enumerate() {
for (tile_idx, tile) in col.tiles.iter().enumerate() {
let win = tile.window();
- let active = self.active_column_idx == col_idx && col.active_tile_idx == tile_idx;
+ let active = is_active
+ && self.active_column_idx == col_idx
+ && col.active_tile_idx == tile_idx;
win.set_activated(active);
win.toplevel().with_pending_state(|state| {