diff --git a/core/src/event/wayland/window.rs b/core/src/event/wayland/window.rs index 70085dac..0bd21f35 100644 --- a/core/src/event/wayland/window.rs +++ b/core/src/event/wayland/window.rs @@ -1,8 +1,12 @@ #![allow(missing_docs)] +use cctk::sctk::reexports::csd_frame::WindowState; + /// window events #[derive(Debug, PartialEq, Clone)] pub enum WindowEvent { /// Window suggested bounds. SuggestedBounds(Option), + /// Window state + WindowState(WindowState), } diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 78cb62bd..0c609d37 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -199,6 +199,7 @@ pub fn window_event( event: winit::event::WindowEvent, scale_factor: f64, modifiers: winit::keyboard::ModifiersState, + window: &dyn winit::window::Window, ) -> Option { use winit::event::Ime; use winit::event::WindowEvent; @@ -436,7 +437,18 @@ pub fn window_event( ), ))) } + #[cfg(feature = "wayland")] + WindowEvent::WindowStateChanged => { + use cctk::sctk::reexports::csd_frame::WindowState; + use winit::platform::wayland::WindowExtWayland; + let s = window.window_state(); + Some(Event::PlatformSpecific(iced_futures::core::event::PlatformSpecific::Wayland( + iced_runtime::core::event::wayland::Event::Window( + iced_runtime::core::event::wayland::WindowEvent::WindowState(s.unwrap_or(WindowState::empty())) + ), + ))) + } _ => None, } } diff --git a/winit/src/lib.rs b/winit/src/lib.rs index ea056b2d..ef4653e9 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -1283,6 +1283,7 @@ async fn run_instance

( event, window.state.scale_factor(), window.state.modifiers(), + window.raw.as_ref(), ) { events.push((Some(id), event)); } diff --git a/winit/src/platform_specific/wayland/commands/corner_radius.rs b/winit/src/platform_specific/wayland/commands/corner_radius.rs index cf16961b..c5ba6016 100644 --- a/winit/src/platform_specific/wayland/commands/corner_radius.rs +++ b/winit/src/platform_specific/wayland/commands/corner_radius.rs @@ -1,4 +1,4 @@ -use iced_futures::core::{border::Radius, window}; +use iced_futures::core::window; use iced_runtime::{ self, platform_specific::{