From f597fb89c62df16b9ffac7cca065f33d3cf97919 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Mon, 23 Jan 2023 22:52:51 +0100 Subject: [PATCH] xwm: Add output_enter/leave events for OR windows --- src/xwayland.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/xwayland.rs b/src/xwayland.rs index 679a051c..61467fe6 100644 --- a/src/xwayland.rs +++ b/src/xwayland.rs @@ -2,11 +2,12 @@ use crate::{ backend::render::cursor::Cursor, shell::{CosmicSurface, Ordering, Shell}, state::{Data, State}, - utils::prelude::SeatExt, + utils::prelude::*, wayland::{handlers::screencopy::PendingScreencopyBuffers, protocols::screencopy::SessionType}, }; use smithay::{ backend::{drm::DrmNode, renderer::element::Id}, + desktop::space::SpaceElement, reexports::x11rb::protocol::xproto::Window as X11Window, utils::{Logical, Point, Rectangle, Size}, xwayland::{ @@ -349,6 +350,17 @@ impl XwmHandler for Data { { or.above = ordering; } + let geo = window.geometry(); + for (output, overlap) in self.state.common.shell.outputs().cloned().map(|o| { + let intersection = o.geometry().intersection(geo); + (o, intersection) + }) { + if let Some(overlap) = overlap { + window.output_enter(&output, overlap); + } else { + window.output_leave(&output); + } + } } }