fix: apply App::Executor to multi-window instance
This commit is contained in:
parent
fde0516484
commit
d84447aaad
4 changed files with 14 additions and 11 deletions
|
|
@ -8,6 +8,7 @@ rust-version = "1.80"
|
||||||
name = "cosmic"
|
name = "cosmic"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
default = ["multi-window"]
|
||||||
# Accessibility support
|
# Accessibility support
|
||||||
a11y = ["iced/a11y", "iced_accessibility"]
|
a11y = ["iced/a11y", "iced_accessibility"]
|
||||||
# Builds support for animated images
|
# Builds support for animated images
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@ pub fn run<App: Application>(settings: Settings, flags: App::Flags) -> iced::Res
|
||||||
}
|
}
|
||||||
#[cfg(feature = "multi-window")]
|
#[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::title,
|
||||||
cosmic::Cosmic::update,
|
cosmic::Cosmic::update,
|
||||||
cosmic::Cosmic::view,
|
cosmic::Cosmic::view,
|
||||||
|
|
@ -390,7 +390,7 @@ where
|
||||||
}
|
}
|
||||||
#[cfg(feature = "multi-window")]
|
#[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::title,
|
||||||
cosmic::Cosmic::update,
|
cosmic::Cosmic::update,
|
||||||
cosmic::Cosmic::view,
|
cosmic::Cosmic::view,
|
||||||
|
|
|
||||||
|
|
@ -13,17 +13,18 @@ use iced::{Element, Result, Settings, Subscription, Task};
|
||||||
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
pub(crate) struct Instance<State, Message, Theme, Renderer, Update, View> {
|
pub(crate) struct Instance<State, Message, Theme, Renderer, Update, View, Executor> {
|
||||||
update: Update,
|
update: Update,
|
||||||
view: View,
|
view: View,
|
||||||
_state: PhantomData<State>,
|
_state: PhantomData<State>,
|
||||||
_message: PhantomData<Message>,
|
_message: PhantomData<Message>,
|
||||||
_theme: PhantomData<Theme>,
|
_theme: PhantomData<Theme>,
|
||||||
_renderer: PhantomData<Renderer>,
|
_renderer: PhantomData<Renderer>,
|
||||||
|
_executor: PhantomData<Executor>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates an iced [`MultiWindow`] given its title, update, and view logic.
|
/// Creates an iced [`MultiWindow`] given its title, update, and view logic.
|
||||||
pub fn multi_window<State, Message, Theme, Renderer>(
|
pub fn multi_window<State, Message, Theme, Renderer, Executor>(
|
||||||
title: impl Title<State>,
|
title: impl Title<State>,
|
||||||
update: impl application::Update<State, Message>,
|
update: impl application::Update<State, Message>,
|
||||||
view: impl for<'a> self::View<'a, State, Message, Theme, Renderer>,
|
view: impl for<'a> self::View<'a, State, Message, Theme, Renderer>,
|
||||||
|
|
@ -33,23 +34,25 @@ where
|
||||||
Message: Send + std::fmt::Debug + 'static,
|
Message: Send + std::fmt::Debug + 'static,
|
||||||
Theme: Default + DefaultStyle,
|
Theme: Default + DefaultStyle,
|
||||||
Renderer: program::Renderer,
|
Renderer: program::Renderer,
|
||||||
|
Executor: iced::Executor,
|
||||||
{
|
{
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
impl<State, Message, Theme, Renderer, Update, View> Program
|
impl<State, Message, Theme, Renderer, Update, View, Executor> Program
|
||||||
for Instance<State, Message, Theme, Renderer, Update, View>
|
for Instance<State, Message, Theme, Renderer, Update, View, Executor>
|
||||||
where
|
where
|
||||||
Message: Send + std::fmt::Debug + 'static,
|
Message: Send + std::fmt::Debug + 'static,
|
||||||
Theme: Default + DefaultStyle,
|
Theme: Default + DefaultStyle,
|
||||||
Renderer: program::Renderer,
|
Renderer: program::Renderer,
|
||||||
Update: application::Update<State, Message>,
|
Update: application::Update<State, Message>,
|
||||||
View: for<'a> self::View<'a, State, Message, Theme, Renderer>,
|
View: for<'a> self::View<'a, State, Message, Theme, Renderer>,
|
||||||
|
Executor: iced::Executor,
|
||||||
{
|
{
|
||||||
type State = State;
|
type State = State;
|
||||||
type Message = Message;
|
type Message = Message;
|
||||||
type Theme = Theme;
|
type Theme = Theme;
|
||||||
type Renderer = Renderer;
|
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::Message> {
|
fn update(&self, state: &mut Self::State, message: Self::Message) -> Task<Self::Message> {
|
||||||
self.update.update(state, message).into()
|
self.update.update(state, message).into()
|
||||||
|
|
@ -72,6 +75,7 @@ where
|
||||||
_message: PhantomData,
|
_message: PhantomData,
|
||||||
_theme: PhantomData,
|
_theme: PhantomData,
|
||||||
_renderer: PhantomData,
|
_renderer: PhantomData,
|
||||||
|
_executor: PhantomData::<Executor>,
|
||||||
},
|
},
|
||||||
settings: Settings::default(),
|
settings: Settings::default(),
|
||||||
window: None,
|
window: None,
|
||||||
|
|
|
||||||
|
|
@ -188,11 +188,9 @@ impl Context {
|
||||||
&self,
|
&self,
|
||||||
icon: widget::icon::Handle,
|
icon: widget::icon::Handle,
|
||||||
) -> crate::widget::Button<'a, Message> {
|
) -> 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 applet_padding = self.suggested_padding(icon.symbolic);
|
||||||
|
|
||||||
let is_horizontal = self.is_horizontal();
|
|
||||||
|
|
||||||
let symbolic = icon.symbolic;
|
let symbolic = icon.symbolic;
|
||||||
|
|
||||||
crate::widget::button::custom(
|
crate::widget::button::custom(
|
||||||
|
|
@ -414,7 +412,7 @@ pub fn run<App: Application>(flags: App::Flags) -> iced::Result {
|
||||||
|
|
||||||
// TODO make multi-window not mandatory
|
// 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::title,
|
||||||
cosmic::Cosmic::update,
|
cosmic::Cosmic::update,
|
||||||
cosmic::Cosmic::view,
|
cosmic::Cosmic::view,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue