Let a Theme control the text_color of an application

This commit is contained in:
Héctor Ramón Jiménez 2022-05-26 01:10:26 +02:00
parent 3a820b45f3
commit 822a3cd04f
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
5 changed files with 49 additions and 19 deletions

View file

@ -1,4 +1,5 @@
use crate::mouse;
use crate::theme;
use crate::user_interface::{self, UserInterface};
use crate::{Clipboard, Command, Debug, Event, Point, Program, Size};
@ -19,6 +20,7 @@ where
impl<P> State<P>
where
P: Program + 'static,
<P::Renderer as crate::Renderer>::Theme: theme::Definition,
{
/// Creates a new [`State`] with the provided [`Program`], initializing its
/// primitive with the given logical bounds and renderer.
@ -164,7 +166,10 @@ 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::Renderer>
where
<P::Renderer as crate::Renderer>::Theme: theme::Definition,
{
debug.view_started();
let view = program.view();
debug.view_finished();

View file

@ -3,6 +3,7 @@ use crate::event::{self, Event};
use crate::layout;
use crate::mouse;
use crate::renderer;
use crate::theme::{self, Definition as _};
use crate::{Clipboard, Element, Layout, Point, Rectangle, Shell, Size};
/// A set of interactive graphical elements with a specific [`Layout`].
@ -28,6 +29,7 @@ pub struct UserInterface<'a, Message, Renderer> {
impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer>
where
Renderer: crate::Renderer,
Renderer::Theme: theme::Definition,
{
/// Builds a user interface for an [`Element`].
///
@ -370,7 +372,9 @@ where
self.root.widget.draw(
renderer,
theme,
&renderer::Style::default(),
&renderer::Style {
text_color: theme.text_color(),
},
Layout::new(&self.base),
base_cursor,
&viewport,