summaryrefslogtreecommitdiffstats
path: root/runtime/src
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src')
-rw-r--r--runtime/src/multi_window/program.rs5
-rw-r--r--runtime/src/multi_window/state.rs6
-rw-r--r--runtime/src/overlay/nested.rs38
-rw-r--r--runtime/src/program.rs5
-rw-r--r--runtime/src/program/state.rs4
-rw-r--r--runtime/src/user_interface.rs16
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 {