Add Style variant support to application::StyleSheet

This commit is contained in:
Héctor Ramón Jiménez 2022-07-08 20:07:33 +02:00
parent fa55dff61d
commit bb07d017e8
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
11 changed files with 148 additions and 43 deletions

View file

@ -1,5 +1,6 @@
use crate::application;
use crate::mouse;
use crate::renderer;
use crate::user_interface::{self, UserInterface};
use crate::{Clipboard, Command, Debug, Event, Point, Program, Size};
@ -89,6 +90,7 @@ where
cursor_position: Point,
renderer: &mut P::Renderer,
theme: &<P::Renderer as crate::Renderer>::Theme,
style: &renderer::Style,
clipboard: &mut dyn Clipboard,
debug: &mut Debug,
) -> Option<Command<P::Message>> {
@ -118,7 +120,7 @@ where
if messages.is_empty() {
debug.draw_started();
self.mouse_interaction =
user_interface.draw(renderer, theme, cursor_position);
user_interface.draw(renderer, theme, style, cursor_position);
debug.draw_finished();
self.cache = Some(user_interface.into_cache());
@ -150,7 +152,7 @@ where
debug.draw_started();
self.mouse_interaction =
user_interface.draw(renderer, theme, cursor_position);
user_interface.draw(renderer, theme, style, cursor_position);
debug.draw_finished();
self.cache = Some(user_interface.into_cache());

View file

@ -303,8 +303,10 @@ where
/// [completing the last example](#example-1):
///
/// ```no_run
/// use iced_native::{clipboard, Size, Point, Theme};
/// use iced_native::clipboard;
/// use iced_native::renderer;
/// use iced_native::user_interface::{self, UserInterface};
/// use iced_native::{Size, Point, Theme};
/// use iced_wgpu::Renderer;
///
/// # mod iced_wgpu {
@ -351,7 +353,7 @@ where
/// );
///
/// // Draw the user interface
/// let mouse_cursor = user_interface.draw(&mut renderer, &Theme::default(), cursor_position);
/// let mouse_cursor = user_interface.draw(&mut renderer, &Theme::default(), &renderer::Style::default(), cursor_position);
///
/// cache = user_interface.into_cache();
///
@ -367,6 +369,7 @@ where
&mut self,
renderer: &mut Renderer,
theme: &Renderer::Theme,
style: &renderer::Style,
cursor_position: Point,
) -> mouse::Interaction {
// TODO: Move to shell level (?)
@ -399,12 +402,7 @@ where
self.root.widget.draw(
renderer,
theme,
&renderer::Style {
text_color: {
use application::StyleSheet;
theme.text_color()
},
},
style,
Layout::new(&self.base),
base_cursor,
&viewport,
@ -446,7 +444,7 @@ where
overlay.draw(
renderer,
theme,
&renderer::Style::default(),
style,
Layout::new(layout),
cursor_position,
);