From d84447aaad96c84f1e59291f14468ba63fb79797 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Tue, 29 Oct 2024 15:22:54 -0400 Subject: [PATCH] fix: apply App::Executor to multi-window instance --- Cargo.toml | 1 + src/app/mod.rs | 4 ++-- src/app/multi_window.rs | 14 +++++++++----- src/applet/mod.rs | 6 ++---- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 93cb3fb..3f22505 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ rust-version = "1.80" name = "cosmic" [features] +default = ["multi-window"] # Accessibility support a11y = ["iced/a11y", "iced_accessibility"] # Builds support for animated images diff --git a/src/app/mod.rs b/src/app/mod.rs index eb65747..e413a22 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -154,7 +154,7 @@ pub fn run(settings: Settings, flags: App::Flags) -> iced::Res } #[cfg(feature = "multi-window")] { - let mut app = multi_window::multi_window( + let mut app = multi_window::multi_window::<_, _, _, _, App::Executor>( cosmic::Cosmic::title, cosmic::Cosmic::update, cosmic::Cosmic::view, @@ -390,7 +390,7 @@ where } #[cfg(feature = "multi-window")] { - let mut app = multi_window::multi_window( + let mut app = multi_window::multi_window::<_, _, _, _, App::Executor>( cosmic::Cosmic::title, cosmic::Cosmic::update, cosmic::Cosmic::view, diff --git a/src/app/multi_window.rs b/src/app/multi_window.rs index f3864cf..d20739b 100644 --- a/src/app/multi_window.rs +++ b/src/app/multi_window.rs @@ -13,17 +13,18 @@ use iced::{Element, Result, Settings, Subscription, Task}; use std::marker::PhantomData; -pub(crate) struct Instance { +pub(crate) struct Instance { update: Update, view: View, _state: PhantomData, _message: PhantomData, _theme: PhantomData, _renderer: PhantomData, + _executor: PhantomData, } /// Creates an iced [`MultiWindow`] given its title, update, and view logic. -pub fn multi_window( +pub fn multi_window( title: impl Title, update: impl application::Update, view: impl for<'a> self::View<'a, State, Message, Theme, Renderer>, @@ -33,23 +34,25 @@ where Message: Send + std::fmt::Debug + 'static, Theme: Default + DefaultStyle, Renderer: program::Renderer, + Executor: iced::Executor, { use std::marker::PhantomData; - impl Program - for Instance + impl Program + for Instance where Message: Send + std::fmt::Debug + 'static, Theme: Default + DefaultStyle, Renderer: program::Renderer, Update: application::Update, View: for<'a> self::View<'a, State, Message, Theme, Renderer>, + Executor: iced::Executor, { type State = State; type Message = Message; type Theme = Theme; type Renderer = Renderer; - type Executor = iced_futures::backend::default::Executor; + type Executor = Executor; fn update(&self, state: &mut Self::State, message: Self::Message) -> Task { self.update.update(state, message).into() @@ -72,6 +75,7 @@ where _message: PhantomData, _theme: PhantomData, _renderer: PhantomData, + _executor: PhantomData::, }, settings: Settings::default(), window: None, diff --git a/src/applet/mod.rs b/src/applet/mod.rs index b6e741f..8a0eb89 100644 --- a/src/applet/mod.rs +++ b/src/applet/mod.rs @@ -188,11 +188,9 @@ impl Context { &self, icon: widget::icon::Handle, ) -> crate::widget::Button<'a, Message> { - let mut suggested = self.suggested_size(icon.symbolic); + let suggested = self.suggested_size(icon.symbolic); let applet_padding = self.suggested_padding(icon.symbolic); - let is_horizontal = self.is_horizontal(); - let symbolic = icon.symbolic; crate::widget::button::custom( @@ -414,7 +412,7 @@ pub fn run(flags: App::Flags) -> iced::Result { // TODO make multi-window not mandatory - let mut app = super::app::multi_window::multi_window( + let mut app = super::app::multi_window::multi_window::<_, _, _, _, App::Executor>( cosmic::Cosmic::title, cosmic::Cosmic::update, cosmic::Cosmic::view,