diff options
Diffstat (limited to '')
| -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 { | 
