summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-26 01:10:26 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-26 01:10:26 +0200
commit822a3cd04f9edeb887d85164b0b3e556c3fde6bb (patch)
treea9696674d844af5892f46daef6d36407fb076383 /native
parent3a820b45f336398c48f8bedf7b8c4b8af876efff (diff)
downloadiced-822a3cd04f9edeb887d85164b0b3e556c3fde6bb.tar.gz
iced-822a3cd04f9edeb887d85164b0b3e556c3fde6bb.tar.bz2
iced-822a3cd04f9edeb887d85164b0b3e556c3fde6bb.zip
Let a `Theme` control the `text_color` of an application
Diffstat (limited to 'native')
-rw-r--r--native/src/program/state.rs7
-rw-r--r--native/src/user_interface.rs6
2 files changed, 11 insertions, 2 deletions
diff --git a/native/src/program/state.rs b/native/src/program/state.rs
index 6ab6051b..0c133484 100644
--- a/native/src/program/state.rs
+++ b/native/src/program/state.rs
@@ -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();
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs
index 12f9827d..c8496112 100644
--- a/native/src/user_interface.rs
+++ b/native/src/user_interface.rs
@@ -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,