From baad2c01b45d08110d7d2b51c06705f907eeb396 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 3 Aug 2023 16:17:03 -0700 Subject: [PATCH] Fix output filtering of override-redirect windows `or.geometry()` was actually calling a different method in `filter` than in `.flat_map`. Apparently since `or` in `filter` is an `&&X11Surface` instead of `&X11Surface`, that invoked the trait method on `SpaceElement`... Smithay should be changed in some way so that can't happen, but this improves some of the behavior in cosmic-comp for now, at least. There may be other issues related to this. The `SpaceElement::geometry` was also returning a `loc` of `(0, 0)`, which presumably isn't correct either. --- src/shell/workspace.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index a482f502..696a5ed4 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -35,7 +35,7 @@ use smithay::{ glow::{GlowFrame, GlowRenderer}, ImportAll, ImportMem, Renderer, }, - desktop::{layer_map_for_output, space::SpaceElement}, + desktop::layer_map_for_output, input::{pointer::GrabStartData as PointerGrabStartData, Seat}, output::Output, reexports::wayland_server::{protocol::wl_surface::WlSurface, Client}, @@ -521,7 +521,7 @@ impl Workspace { popup_elements.extend( override_redirect_windows .iter() - .filter(|or| or.geometry().intersection(output.geometry()).is_some()) + .filter(|or| (*or).geometry().intersection(output.geometry()).is_some()) .flat_map(|or| { AsRenderElements::::render_elements::>( or, @@ -569,7 +569,7 @@ impl Workspace { popup_elements.extend( override_redirect_windows .iter() - .filter(|or| or.geometry().intersection(output.geometry()).is_some()) + .filter(|or| (*or).geometry().intersection(output.geometry()).is_some()) .flat_map(|or| { AsRenderElements::::render_elements::>( or,