From b362a3873710a42f7ac2d8ba03772d8290733934 Mon Sep 17 00:00:00 2001 From: Shawn Wallace Date: Fri, 28 Nov 2025 16:52:16 -0500 Subject: [PATCH] server: raise windows to top on touch --- src/server/event.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/server/event.rs b/src/server/event.rs index 8221208..fb82da9 100644 --- a/src/server/event.rs +++ b/src/server/event.rs @@ -934,16 +934,20 @@ impl Event for client::wl_touch::Event { } => { let mut cmd = CommandBuffer::new(); { + let connection = &mut state.connection; + let world = &mut state.inner.world; let s_entity = surface.data().copied(); let mut s_query = s_entity.and_then(|key| { - state - .world - .query_one::<(&WlSurface, &SurfaceScaleFactor)>(key) + world + .query_one::<(&WlSurface, &SurfaceScaleFactor, &x::Window)>(key) .ok() }); - if let Some((s_surface, s_factor)) = s_query.as_mut().and_then(|q| q.get()) { + if let Some((s_surface, s_factor, window)) = + s_query.as_mut().and_then(|q| q.get()) + { cmd.insert_one(target, *s_factor); - let touch = state.world.get::<&WlTouch>(target).unwrap(); + connection.raise_to_top(*window); + let touch = world.get::<&WlTouch>(target).unwrap(); touch.down(serial, time, s_surface, id, x * s_factor.0, y * s_factor.0); } else if let Some(&DecorationMarker { parent }) = surface.data() { drop(s_query);