server: raise windows to top on tablet proximity_in

Fixes #238
This commit is contained in:
Shawn Wallace 2025-09-21 22:52:20 -04:00
parent 970728d0d9
commit 03368548ba

View file

@ -1373,34 +1373,37 @@ impl Event for zwp_tablet_tool_v2::Event {
} => { } => {
let mut cmd = CommandBuffer::new(); let mut cmd = CommandBuffer::new();
{ {
let connection = &mut state.connection;
let world = &mut state.inner.world;
let Some(mut query) = surface.data().copied().and_then(|key| { let Some(mut query) = surface.data().copied().and_then(|key| {
state world
.world .query_one::<(&WlSurface, &SurfaceScaleFactor, &x::Window)>(key)
.query_one::<(&WlSurface, &SurfaceScaleFactor)>(key)
.ok() .ok()
}) else { }) else {
warn!("tablet tool proximity_in failed: stale surface"); warn!("tablet tool proximity_in failed: stale surface");
return; return;
}; };
let (surface, scale) = query.get().unwrap(); let (surface, scale, window) = query.get().unwrap();
cmd.insert(target, (*scale,)); cmd.insert(target, (*scale,));
let Some(s_tablet) = let Some(s_tablet) =
tablet tablet
.data() .data()
.and_then(|key: &LateInitObjectKey<TabletClient>| { .and_then(|key: &LateInitObjectKey<TabletClient>| {
state.world.get::<&TabletServer>(key.get()).ok() world.get::<&TabletServer>(key.get()).ok()
}) })
else { else {
warn!("tablet tool proximity_in failed: stale tablet"); warn!("tablet tool proximity_in failed: stale tablet");
return; return;
}; };
state world
.world
.get::<&TabletToolServer>(target) .get::<&TabletToolServer>(target)
.unwrap() .unwrap()
.proximity_in(serial, &s_tablet, surface); .proximity_in(serial, &s_tablet, surface);
connection.raise_to_top(*window);
} }
cmd.run_on(&mut state.world); cmd.run_on(&mut state.world);
} }