diff options
Diffstat (limited to 'runtime/src')
-rw-r--r-- | runtime/src/multi_window/program.rs | 5 | ||||
-rw-r--r-- | runtime/src/multi_window/state.rs | 6 | ||||
-rw-r--r-- | runtime/src/overlay/nested.rs | 38 | ||||
-rw-r--r-- | runtime/src/program.rs | 5 | ||||
-rw-r--r-- | runtime/src/program/state.rs | 4 | ||||
-rw-r--r-- | runtime/src/user_interface.rs | 16 |
6 files changed, 41 insertions, 33 deletions
diff --git a/runtime/src/multi_window/program.rs b/runtime/src/multi_window/program.rs index 591b3e9a..963a09d7 100644 --- a/runtime/src/multi_window/program.rs +++ b/runtime/src/multi_window/program.rs @@ -12,6 +12,9 @@ pub trait Program: Sized { /// The type of __messages__ your [`Program`] will produce. type Message: std::fmt::Debug + Send; + /// The theme used to draw the [`Program`]. + type Theme; + /// Handles a __message__ and updates the state of the [`Program`]. /// /// This is where you define your __update logic__. All the __messages__, @@ -28,5 +31,5 @@ pub trait Program: Sized { fn view( &self, window: window::Id, - ) -> Element<'_, Self::Message, Self::Renderer>; + ) -> Element<'_, Self::Message, Self::Theme, Self::Renderer>; } diff --git a/runtime/src/multi_window/state.rs b/runtime/src/multi_window/state.rs index 49f72c39..afd04519 100644 --- a/runtime/src/multi_window/state.rs +++ b/runtime/src/multi_window/state.rs @@ -92,7 +92,7 @@ where bounds: Size, cursor: mouse::Cursor, renderer: &mut P::Renderer, - theme: &<P::Renderer as iced_core::Renderer>::Theme, + theme: &P::Theme, style: &renderer::Style, clipboard: &mut dyn Clipboard, debug: &mut Debug, @@ -252,7 +252,7 @@ fn build_user_interfaces<'a, P: Program>( renderer: &mut P::Renderer, size: Size, debug: &mut Debug, -) -> Vec<UserInterface<'a, P::Message, P::Renderer>> { +) -> Vec<UserInterface<'a, P::Message, P::Theme, P::Renderer>> { caches .drain(..) .map(|cache| { @@ -267,7 +267,7 @@ fn build_user_interface<'a, P: Program>( renderer: &mut P::Renderer, size: Size, debug: &mut Debug, -) -> UserInterface<'a, P::Message, P::Renderer> { +) -> UserInterface<'a, P::Message, P::Theme, P::Renderer> { debug.view_started(); let view = program.view(); debug.view_finished(); diff --git a/runtime/src/overlay/nested.rs b/runtime/src/overlay/nested.rs index 4256efb7..60e2eb87 100644 --- a/runtime/src/overlay/nested.rs +++ b/runtime/src/overlay/nested.rs @@ -10,16 +10,18 @@ use crate::core::{ /// An overlay container that displays nested overlays #[allow(missing_debug_implementations)] -pub struct Nested<'a, Message, Renderer> { - overlay: overlay::Element<'a, Message, Renderer>, +pub struct Nested<'a, Message, Theme, Renderer> { + overlay: overlay::Element<'a, Message, Theme, Renderer>, } -impl<'a, Message, Renderer> Nested<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> Nested<'a, Message, Theme, Renderer> where Renderer: renderer::Renderer, { /// Creates a nested overlay from the provided [`overlay::Element`] - pub fn new(element: overlay::Element<'a, Message, Renderer>) -> Self { + pub fn new( + element: overlay::Element<'a, Message, Theme, Renderer>, + ) -> Self { Self { overlay: element } } @@ -38,8 +40,8 @@ where _position: Point, translation: Vector, ) -> layout::Node { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, renderer: &Renderer, bounds: Size, translation: Vector, @@ -71,16 +73,16 @@ where pub fn draw( &mut self, renderer: &mut Renderer, - theme: &<Renderer as renderer::Renderer>::Theme, + theme: &Theme, style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, ) { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, layout: Layout<'_>, renderer: &mut Renderer, - theme: &<Renderer as renderer::Renderer>::Theme, + theme: &Theme, style: &renderer::Style, cursor: mouse::Cursor, ) where @@ -144,8 +146,8 @@ where renderer: &Renderer, operation: &mut dyn widget::Operation<Message>, ) { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, layout: Layout<'_>, renderer: &Renderer, operation: &mut dyn widget::Operation<Message>, @@ -178,8 +180,8 @@ where clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, ) -> event::Status { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, layout: Layout<'_>, event: Event, cursor: mouse::Cursor, @@ -267,8 +269,8 @@ where viewport: &Rectangle, renderer: &Renderer, ) -> mouse::Interaction { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, layout: Layout<'_>, cursor: mouse::Cursor, viewport: &Rectangle, @@ -318,8 +320,8 @@ where renderer: &Renderer, cursor_position: Point, ) -> bool { - fn recurse<Message, Renderer>( - element: &mut overlay::Element<'_, Message, Renderer>, + fn recurse<Message, Theme, Renderer>( + element: &mut overlay::Element<'_, Message, Theme, Renderer>, layout: Layout<'_>, renderer: &Renderer, cursor_position: Point, diff --git a/runtime/src/program.rs b/runtime/src/program.rs index 44585cc5..6c1b8f07 100644 --- a/runtime/src/program.rs +++ b/runtime/src/program.rs @@ -13,6 +13,9 @@ pub trait Program: Sized { /// The graphics backend to use to draw the [`Program`]. type Renderer: Renderer + text::Renderer; + /// The theme used to draw the [`Program`]. + type Theme; + /// The type of __messages__ your [`Program`] will produce. type Message: std::fmt::Debug + Send; @@ -29,5 +32,5 @@ pub trait Program: Sized { /// Returns the widgets to display in the [`Program`]. /// /// These widgets can produce __messages__ based on user interaction. - fn view(&self) -> Element<'_, Self::Message, Self::Renderer>; + fn view(&self) -> Element<'_, Self::Message, Self::Theme, Self::Renderer>; } diff --git a/runtime/src/program/state.rs b/runtime/src/program/state.rs index 6f8f4063..d685b07c 100644 --- a/runtime/src/program/state.rs +++ b/runtime/src/program/state.rs @@ -91,7 +91,7 @@ where bounds: Size, cursor: mouse::Cursor, renderer: &mut P::Renderer, - theme: &<P::Renderer as iced_core::Renderer>::Theme, + theme: &P::Theme, style: &renderer::Style, clipboard: &mut dyn Clipboard, debug: &mut Debug, @@ -219,7 +219,7 @@ fn build_user_interface<'a, P: Program>( renderer: &mut P::Renderer, size: Size, debug: &mut Debug, -) -> UserInterface<'a, P::Message, P::Renderer> { +) -> UserInterface<'a, P::Message, P::Theme, P::Renderer> { debug.view_started(); let view = program.view(); debug.view_finished(); diff --git a/runtime/src/user_interface.rs b/runtime/src/user_interface.rs index 3594ac18..054d56b7 100644 --- a/runtime/src/user_interface.rs +++ b/runtime/src/user_interface.rs @@ -23,15 +23,15 @@ use crate::overlay; /// /// [`integration`]: https://github.com/iced-rs/iced/tree/0.10/examples/integration #[allow(missing_debug_implementations)] -pub struct UserInterface<'a, Message, Renderer> { - root: Element<'a, Message, Renderer>, +pub struct UserInterface<'a, Message, Theme, Renderer> { + root: Element<'a, Message, Theme, Renderer>, base: layout::Node, state: widget::Tree, overlay: Option<layout::Node>, bounds: Size, } -impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> UserInterface<'a, Message, Theme, Renderer> where Renderer: crate::core::Renderer, { @@ -54,7 +54,7 @@ where /// # /// # impl Counter { /// # pub fn new() -> Self { Counter } - /// # pub fn view(&self) -> iced_core::Element<(), Renderer> { unimplemented!() } + /// # pub fn view(&self) -> iced_core::Element<(), (), Renderer> { unimplemented!() } /// # pub fn update(&mut self, _: ()) {} /// # } /// use iced_runtime::core::Size; @@ -86,7 +86,7 @@ where /// cache = user_interface.into_cache(); /// } /// ``` - pub fn build<E: Into<Element<'a, Message, Renderer>>>( + pub fn build<E: Into<Element<'a, Message, Theme, Renderer>>>( root: E, bounds: Size, cache: Cache, @@ -130,7 +130,7 @@ where /// # /// # impl Counter { /// # pub fn new() -> Self { Counter } - /// # pub fn view(&self) -> iced_core::Element<(), Renderer> { unimplemented!() } + /// # pub fn view(&self) -> iced_core::Element<(), (), Renderer> { unimplemented!() } /// # pub fn update(&mut self, _: ()) {} /// # } /// use iced_runtime::core::clipboard; @@ -384,7 +384,7 @@ where /// # /// # impl Counter { /// # pub fn new() -> Self { Counter } - /// # pub fn view(&self) -> Element<(), Renderer> { unimplemented!() } + /// # pub fn view(&self) -> Element<(), (), Renderer> { unimplemented!() } /// # pub fn update(&mut self, _: ()) {} /// # } /// use iced_runtime::core::clipboard; @@ -439,7 +439,7 @@ where pub fn draw( &mut self, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, style: &renderer::Style, cursor: mouse::Cursor, ) -> mouse::Interaction { |