diff --git a/src/wayland/xdg/backend.rs b/src/wayland/xdg/backend.rs index 889e3e7..5aed2a2 100644 --- a/src/wayland/xdg/backend.rs +++ b/src/wayland/xdg/backend.rs @@ -34,7 +34,7 @@ impl XdgBackend { fn surface_from_id(&self, id: SurfaceId) -> Option> { match id { - SurfaceId::Toplevel(_) => Some(self.toplevel().surface()), + SurfaceId::Toplevel(_) => Some(self.toplevel().wl_surface()), SurfaceId::Child(_) => None, } } @@ -42,7 +42,7 @@ impl XdgBackend { impl Backend for XdgBackend { fn start_data(&self) -> Result { - let surface_state = self.toplevel().surface().current_state(); + let surface_state = self.toplevel().wl_surface().current_state(); let size = surface_state .buffer @@ -84,7 +84,7 @@ impl Backend for XdgBackend { fn close_toplevel(&self) { let _ = self .toplevel() - .surface() + .wl_surface() .message_sink .send(Message::CloseToplevel(self.toplevel().clone())); } @@ -92,7 +92,7 @@ impl Backend for XdgBackend { fn auto_size_toplevel(&self) { let _ = self .toplevel() - .surface() + .wl_surface() .message_sink .send(Message::ResizeToplevel { toplevel: self.toplevel().clone(), @@ -103,7 +103,7 @@ impl Backend for XdgBackend { fn set_toplevel_size(&self, size: Vector2) { let _ = self .toplevel() - .surface() + .wl_surface() .message_sink .send(Message::ResizeToplevel { toplevel: self.toplevel().clone(), @@ -114,7 +114,7 @@ impl Backend for XdgBackend { fn set_toplevel_focused_visuals(&self, focused: bool) { let _ = self .toplevel() - .surface() + .wl_surface() .message_sink .send(Message::SetToplevelVisualActive { toplevel: self.toplevel().clone(), @@ -124,21 +124,29 @@ impl Backend for XdgBackend { fn pointer_motion(&self, surface: &SurfaceId, position: Vector2) { if let Some(surface) = self.surface_from_id(surface.clone()) { - let _ = self.toplevel().surface().message_sink.send(Message::Seat( - crate::wayland::core::seat::SeatMessage::PointerMotion { surface, position }, - )); + let _ = self + .toplevel() + .wl_surface() + .message_sink + .send(Message::Seat( + crate::wayland::core::seat::SeatMessage::PointerMotion { surface, position }, + )); } } fn pointer_button(&self, surface: &SurfaceId, button: u32, pressed: bool) { if let Some(surface) = self.surface_from_id(surface.clone()) { - let _ = self.toplevel().surface().message_sink.send(Message::Seat( - crate::wayland::core::seat::SeatMessage::PointerButton { - surface, - button, - pressed, - }, - )); + let _ = self + .toplevel() + .wl_surface() + .message_sink + .send(Message::Seat( + crate::wayland::core::seat::SeatMessage::PointerButton { + surface, + button, + pressed, + }, + )); } } @@ -149,13 +157,17 @@ impl Backend for XdgBackend { scroll_steps: Option>, ) { if let Some(surface) = self.surface_from_id(surface.clone()) { - let _ = self.toplevel().surface().message_sink.send(Message::Seat( - crate::wayland::core::seat::SeatMessage::PointerScroll { - surface, - scroll_distance, - scroll_steps, - }, - )); + let _ = self + .toplevel() + .wl_surface() + .message_sink + .send(Message::Seat( + crate::wayland::core::seat::SeatMessage::PointerScroll { + surface, + scroll_distance, + scroll_steps, + }, + )); } } @@ -166,14 +178,18 @@ impl Backend for XdgBackend { if pressed { "pressed" } else { "released" } ); if let Some(surface) = self.surface_from_id(surface.clone()) { - let _ = self.toplevel().surface().message_sink.send(Message::Seat( - crate::wayland::core::seat::SeatMessage::KeyboardKey { - surface, - keymap_id, - key, - pressed, - }, - )); + let _ = self + .toplevel() + .wl_surface() + .message_sink + .send(Message::Seat( + crate::wayland::core::seat::SeatMessage::KeyboardKey { + surface, + keymap_id, + key, + pressed, + }, + )); } } @@ -185,13 +201,17 @@ impl Backend for XdgBackend { position.y ); if let Some(surface) = self.surface_from_id(surface.clone()) { - let _ = self.toplevel().surface().message_sink.send(Message::Seat( - crate::wayland::core::seat::SeatMessage::TouchDown { - surface, - id, - position, - }, - )); + let _ = self + .toplevel() + .wl_surface() + .message_sink + .send(Message::Seat( + crate::wayland::core::seat::SeatMessage::TouchDown { + surface, + id, + position, + }, + )); } } @@ -202,7 +222,7 @@ impl Backend for XdgBackend { position.x, position.y ); - let surface = self.toplevel().surface(); + let surface = self.toplevel().wl_surface(); let _ = surface.message_sink.send(Message::Seat( crate::wayland::core::seat::SeatMessage::TouchMove { id, position }, )); @@ -210,7 +230,7 @@ impl Backend for XdgBackend { fn touch_up(&self, id: u32) { tracing::debug!("Backend: Touch up {}", id); - let surface = self.toplevel().surface(); + let surface = self.toplevel().wl_surface(); let _ = surface.message_sink.send(Message::Seat( crate::wayland::core::seat::SeatMessage::TouchUp { id }, )); @@ -218,7 +238,7 @@ impl Backend for XdgBackend { fn reset_input(&self) { tracing::debug!("Backend: Reset input"); - let surface = self.toplevel().surface(); + let surface = self.toplevel().wl_surface(); let _ = surface.message_sink.send(Message::Seat( crate::wayland::core::seat::SeatMessage::Reset, )); diff --git a/src/wayland/xdg/surface.rs b/src/wayland/xdg/surface.rs index da06bba..7cebe84 100644 --- a/src/wayland/xdg/surface.rs +++ b/src/wayland/xdg/surface.rs @@ -1,4 +1,4 @@ -use super::{popup::Popup, positioner::Positioner, toplevel::Mapped}; +use super::{popup::Popup, positioner::Positioner, toplevel::MappedInner}; use crate::wayland::util::ClientExt; use crate::wayland::{ core::surface::SurfaceRole, @@ -152,7 +152,7 @@ impl XdgSurface for Surface { && configured.load(std::sync::atomic::Ordering::SeqCst) && has_valid_buffer { - mapped_lock.replace(Mapped::create(toplevel.clone(), pid)); + mapped_lock.replace(MappedInner::create(toplevel.clone(), pid)); return false; } true diff --git a/src/wayland/xdg/toplevel.rs b/src/wayland/xdg/toplevel.rs index fd01613..b957490 100644 --- a/src/wayland/xdg/toplevel.rs +++ b/src/wayland/xdg/toplevel.rs @@ -17,11 +17,11 @@ use waynest::{ }; #[derive(Debug)] -pub struct Mapped { +pub struct MappedInner { pub panel_item_node: Arc, pub _panel_item: Arc>, } -impl Mapped { +impl MappedInner { pub fn create(toplevel: Arc, pid: Option) -> Self { let (panel_item_node, _panel_item) = PanelItem::create(Box::new(XdgBackend::new(toplevel)), pid); @@ -60,7 +60,7 @@ pub struct Toplevel { pub id: ObjectId, wl_surface: Weak, xdg_surface: Weak, - pub mapped: Mutex>, + pub mapped: Mutex>, data: Mutex, } impl Toplevel { @@ -80,7 +80,7 @@ impl Toplevel { } } - pub fn surface(&self) -> Arc { + pub fn wl_surface(&self) -> Arc { // We can safely unwrap as the surface must exist for the lifetime of the toplevel self.wl_surface .upgrade() @@ -107,7 +107,7 @@ impl Toplevel { // Helper to clamp size against constraints fn clamp_size(&self, size: Vector2) -> Vector2 { - let state = self.surface().current_state(); + let state = self.wl_surface().current_state(); let mut clamped = size; if let Some(min_size) = state.min_size { @@ -254,7 +254,7 @@ impl XdgToplevel for Toplevel { width: i32, height: i32, ) -> Result<()> { - self.surface().pending_state().pending.max_size = if width == 0 && height == 0 { + self.wl_surface().pending_state().pending.max_size = if width == 0 && height == 0 { None } else { Some([width as u32, height as u32].into()) @@ -269,7 +269,7 @@ impl XdgToplevel for Toplevel { width: i32, height: i32, ) -> Result<()> { - self.surface().pending_state().pending.min_size = if width == 0 && height == 0 { + self.wl_surface().pending_state().pending.min_size = if width == 0 && height == 0 { None } else { Some([width as u32, height as u32].into())