diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/layout/mod.rs | 13 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 6 |
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| { |
