@@ -924,22 +924,11 @@ impl Compositor { |
| 924 | for window_id in stacking_order { | 924 | for window_id in stacking_order { |
| 925 | if let Some(w) = self.windows.get(&window_id) { | 925 | if let Some(w) = self.windows.get(&window_id) { |
| 926 | if w.mapped && w.pixmap.is_some() { | 926 | if w.mapped && w.pixmap.is_some() { |
| 927 | - // Check workspace visibility - only render windows on current workspace, | 927 | + // Render all mapped windows - the WM manages visibility via map/unmap. |
| 928 | - // windows in transition, or windows not assigned to any workspace (docks, etc.) | 928 | + // With per-monitor workspaces, multiple workspaces are visible |
| | 929 | + // simultaneously, so we can't filter by a single "current" workspace. |
| | 930 | + // Workspace info is still used for transition animation offsets below. |
| 929 | let window_ws = self.workspaces.get_window_workspace(w.id); | 931 | let window_ws = self.workspaces.get_window_workspace(w.id); |
| 930 | - let should_render = match window_ws { | | |
| 931 | - None => true, // Not tracked by workspace (override-redirect, docks) | | |
| 932 | - Some(ws) => { | | |
| 933 | - ws == self.workspaces.current || | | |
| 934 | - self.workspaces.transition.as_ref().map_or(false, |t| { | | |
| 935 | - ws == t.from || ws == t.to | | |
| 936 | - }) | | |
| 937 | - } | | |
| 938 | - }; | | |
| 939 | - | | |
| 940 | - if !should_render { | | |
| 941 | - continue; | | |
| 942 | - } | | |
| 943 | | 932 | |
| 944 | let focused = self.is_window_focused(w.id); | 933 | let focused = self.is_window_focused(w.id); |
| 945 | // Get Lua animation transform | 934 | // Get Lua animation transform |