xwm: Add output_enter/leave events for OR windows

This commit is contained in:
Victoria Brekenfeld 2023-01-23 22:52:51 +01:00
parent 5dfefedb02
commit f597fb89c6

View file

@ -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);
}
}
}
}