Convert Renderer::Theme to generic Widget type
This commit is contained in:
parent
545cc909c9
commit
7a50e9e8fb
88 changed files with 1219 additions and 1153 deletions
|
|
@ -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>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue