From 6e97595d953811fe3f5877e13022c3b5d3b070a6 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Fri, 24 Nov 2023 16:08:03 +0800 Subject: feat: somewhere to place extra actions by platform I have view iced-sckt forked iced, and add the extra actions. and there do are some extra actions, like set margin for layer-shell, set lock for ext-session-shell. I think add an any will be of help maybe --- runtime/src/command/action.rs | 6 ++++++ winit/src/application.rs | 1 + 2 files changed, 7 insertions(+) diff --git a/runtime/src/command/action.rs b/runtime/src/command/action.rs index cb0936df..d119141b 100644 --- a/runtime/src/command/action.rs +++ b/runtime/src/command/action.rs @@ -5,6 +5,7 @@ use crate::system; use crate::window; use iced_futures::MaybeSend; +use std::any::Any; use std::borrow::Cow; use std::fmt; @@ -43,6 +44,9 @@ pub enum Action { /// The message to produce when the font has been loaded. tagger: Box) -> T>, }, + + /// Pass PlatformSpecific action, for some special platform + PlatformSpecific(Box) } impl Action { @@ -72,6 +76,7 @@ impl Action { bytes, tagger: Box::new(move |result| f(tagger(result))), }, + Self::PlatformSpecific(special) => Action::PlatformSpecific(special) } } } @@ -90,6 +95,7 @@ impl fmt::Debug for Action { Self::System(action) => write!(f, "Action::System({action:?})"), Self::Widget(_action) => write!(f, "Action::Widget"), Self::LoadFont { .. } => write!(f, "Action::LoadFont"), + Self::PlatformSpecific(_) => write!(f, "Action::PlatformSpecific") } } } diff --git a/winit/src/application.rs b/winit/src/application.rs index 21a985e8..e44b3ca5 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -861,6 +861,7 @@ pub fn run_command( .send_event(tagger(Ok(()))) .expect("Send message to event loop"); } + command::Action::PlatformSpecific(_) => unimplemented!(), } } } -- cgit