diff options
author | 2021-10-31 16:13:03 +0700 | |
---|---|---|
committer | 2021-10-31 16:14:38 +0700 | |
commit | b3a01973c6c726e6539be959659f4306ef3234c6 (patch) | |
tree | 06e6ce43b5e47eb78f2707eb2c6177a2f9af91f4 | |
parent | 0aafcde0ef1533c9eeba0379de8c0082e30c7504 (diff) | |
download | iced-b3a01973c6c726e6539be959659f4306ef3234c6.tar.gz iced-b3a01973c6c726e6539be959659f4306ef3234c6.tar.bz2 iced-b3a01973c6c726e6539be959659f4306ef3234c6.zip |
Introduce first-class `text` module in `iced_native`
-rw-r--r-- | glow/src/text.rs | 2 | ||||
-rw-r--r-- | graphics/src/backend.rs | 2 | ||||
-rw-r--r-- | graphics/src/renderer.rs | 7 | ||||
-rw-r--r-- | native/src/lib.rs | 1 | ||||
-rw-r--r-- | native/src/overlay/menu.rs | 20 | ||||
-rw-r--r-- | native/src/renderer.rs | 4 | ||||
-rw-r--r-- | native/src/renderer/null.rs | 6 | ||||
-rw-r--r-- | native/src/text.rs (renamed from native/src/renderer/text.rs) | 30 | ||||
-rw-r--r-- | native/src/widget/checkbox.rs | 16 | ||||
-rw-r--r-- | native/src/widget/pick_list.rs | 14 | ||||
-rw-r--r-- | native/src/widget/radio.rs | 14 | ||||
-rw-r--r-- | native/src/widget/text.rs | 17 | ||||
-rw-r--r-- | native/src/widget/text_input.rs | 19 | ||||
-rw-r--r-- | native/src/widget/toggler.rs | 12 | ||||
-rw-r--r-- | native/src/widget/tooltip.rs | 9 | ||||
-rw-r--r-- | wgpu/src/text.rs | 2 |
16 files changed, 87 insertions, 88 deletions
diff --git a/glow/src/text.rs b/glow/src/text.rs index 6e2172ba..3b6f3bf5 100644 --- a/glow/src/text.rs +++ b/glow/src/text.rs @@ -5,7 +5,7 @@ use iced_graphics::font; use glow_glyph::ab_glyph; use std::{cell::RefCell, collections::HashMap}; -pub use iced_native::widget::text::Hit; +pub use iced_native::text::Hit; #[derive(Debug)] pub struct Pipeline { diff --git a/graphics/src/backend.rs b/graphics/src/backend.rs index 4692ced1..533ac15f 100644 --- a/graphics/src/backend.rs +++ b/graphics/src/backend.rs @@ -1,7 +1,7 @@ //! Write a graphics backend. +use iced_native::text; use iced_native::widget::image; use iced_native::widget::svg; -use iced_native::widget::text; use iced_native::{Font, Point, Size}; /// The graphics backend of a [`Renderer`]. diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index 8b6c2217..125962ba 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -2,6 +2,7 @@ use crate::backend::{self, Backend}; use crate::{Primitive, Vector}; use iced_native::layout; use iced_native::renderer; +use iced_native::text::{self, Text}; use iced_native::{Element, Font, Point, Rectangle, Size}; pub use iced_native::renderer::Style; @@ -104,7 +105,7 @@ where } } -impl<B> renderer::Text for Renderer<B> +impl<B> text::Renderer for Renderer<B> where B: Backend + backend::Text, { @@ -137,7 +138,7 @@ where bounds: Size, point: Point, nearest_only: bool, - ) -> Option<renderer::text::Hit> { + ) -> Option<text::Hit> { self.backend().hit_test( content, size, @@ -148,7 +149,7 @@ where ) } - fn fill_text(&mut self, text: renderer::text::Section<'_, Self::Font>) { + fn fill_text(&mut self, text: Text<'_, Self::Font>) { self.primitives.push(Primitive::Text { content: text.content.to_string(), bounds: text.bounds, diff --git a/native/src/lib.rs b/native/src/lib.rs index f11f7d96..6fd0d757 100644 --- a/native/src/lib.rs +++ b/native/src/lib.rs @@ -43,6 +43,7 @@ pub mod overlay; pub mod program; pub mod renderer; pub mod subscription; +pub mod text; pub mod touch; pub mod widget; pub mod window; diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index 646d5133..c4d1e171 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -5,7 +5,7 @@ use crate::layout; use crate::mouse; use crate::overlay; use crate::renderer; -use crate::renderer::text; +use crate::text::{self, Text}; use crate::touch; use crate::widget::scrollable::{self, Scrollable}; use crate::widget::Container; @@ -18,7 +18,7 @@ pub use iced_style::menu::Style; /// A list of selectable options. #[allow(missing_debug_implementations)] -pub struct Menu<'a, T, Renderer: renderer::Text> { +pub struct Menu<'a, T, Renderer: text::Renderer> { state: &'a mut State, options: &'a [T], hovered_option: &'a mut Option<usize>, @@ -33,7 +33,7 @@ pub struct Menu<'a, T, Renderer: renderer::Text> { impl<'a, T, Renderer> Menu<'a, T, Renderer> where T: ToString + Clone, - Renderer: renderer::Text + 'a, + Renderer: text::Renderer + 'a, { /// Creates a new [`Menu`] with the given [`State`], a list of options, and /// the message to produced when an option is selected. @@ -117,14 +117,14 @@ impl State { } } -struct Overlay<'a, Message, Renderer: renderer::Text> { +struct Overlay<'a, Message, Renderer: text::Renderer> { container: Container<'a, Message, Renderer>, width: u16, target_height: f32, style: Style, } -impl<'a, Message, Renderer: renderer::Text> Overlay<'a, Message, Renderer> +impl<'a, Message, Renderer: text::Renderer> Overlay<'a, Message, Renderer> where Message: 'a, Renderer: 'a, @@ -169,7 +169,7 @@ where impl<'a, Message, Renderer> crate::Overlay<Message, Renderer> for Overlay<'a, Message, Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { fn layout( &self, @@ -266,7 +266,7 @@ where } } -struct List<'a, T, Renderer: renderer::Text> { +struct List<'a, T, Renderer: text::Renderer> { options: &'a [T], hovered_option: &'a mut Option<usize>, last_selection: &'a mut Option<T>, @@ -280,7 +280,7 @@ impl<'a, T, Message, Renderer> Widget<Message, Renderer> for List<'a, T, Renderer> where T: Clone + ToString, - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { Length::Fill @@ -441,7 +441,7 @@ where }); } - renderer.fill_text(text::Section { + renderer.fill_text(Text { content: &option.to_string(), bounds: Rectangle { x: bounds.x + self.padding.left as f32, @@ -468,7 +468,7 @@ impl<'a, T, Message, Renderer> Into<Element<'a, Message, Renderer>> where T: ToString + Clone, Message: 'a, - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, { fn into(self) -> Element<'a, Message, Renderer> { Element::new(self) diff --git a/native/src/renderer.rs b/native/src/renderer.rs index 6d12edae..1e518936 100644 --- a/native/src/renderer.rs +++ b/native/src/renderer.rs @@ -19,10 +19,6 @@ //! [`text::Renderer`]: crate::widget::text::Renderer //! [`Checkbox`]: crate::widget::Checkbox //! [`checkbox::Renderer`]: crate::widget::checkbox::Renderer -pub mod text; - -pub use text::Text; - #[cfg(debug_assertions)] mod null; #[cfg(debug_assertions)] diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index e57841f4..263b38a9 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -1,5 +1,5 @@ use crate::renderer::{self, Renderer}; -use crate::widget::text; +use crate::text::{self, Text}; use crate::{Font, Point, Rectangle, Size, Vector}; /// A renderer that does nothing. @@ -30,7 +30,7 @@ impl Renderer for Null { fn fill_rectangle(&mut self, _quad: renderer::Quad) {} } -impl renderer::Text for Null { +impl text::Renderer for Null { type Font = Font; const ICON_FONT: Font = Font::Default; @@ -63,5 +63,5 @@ impl renderer::Text for Null { None } - fn fill_text(&mut self, _text: renderer::text::Section<'_, Self::Font>) {} + fn fill_text(&mut self, _text: Text<'_, Self::Font>) {} } diff --git a/native/src/renderer/text.rs b/native/src/text.rs index fc1a2c66..f112a8f3 100644 --- a/native/src/renderer/text.rs +++ b/native/src/text.rs @@ -1,9 +1,20 @@ use crate::alignment; -use crate::{Color, Point, Rectangle, Renderer, Size}; +use crate::{Color, Point, Rectangle, Size}; -pub use crate::widget::text::Hit; +pub use iced_core::text::Hit; -pub trait Text: Renderer { +#[derive(Debug, Clone, Copy)] +pub struct Text<'a, Font> { + pub content: &'a str, + pub bounds: Rectangle, + pub size: f32, + pub color: Color, + pub font: Font, + pub horizontal_alignment: alignment::Horizontal, + pub vertical_alignment: alignment::Vertical, +} + +pub trait Renderer: crate::Renderer { /// The font type used. type Font: Default + Copy; @@ -56,16 +67,5 @@ pub trait Text: Renderer { nearest_only: bool, ) -> Option<Hit>; - fn fill_text(&mut self, section: Section<'_, Self::Font>); -} - -#[derive(Debug, Clone, Copy)] -pub struct Section<'a, Font> { - pub content: &'a str, - pub bounds: Rectangle, - pub size: f32, - pub color: Color, - pub font: Font, - pub horizontal_alignment: alignment::Horizontal, - pub vertical_alignment: alignment::Vertical, + fn fill_text(&mut self, text: Text<'_, Self::Font>); } diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index b81a444e..624e01d6 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -6,9 +6,9 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::renderer; +use crate::text; use crate::touch; -use crate::widget::text; -use crate::widget::{Row, Text}; +use crate::widget::{self, Row, Text}; use crate::{ Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Widget, @@ -34,7 +34,7 @@ pub use iced_style::checkbox::{Style, StyleSheet}; /// ///  #[allow(missing_debug_implementations)] -pub struct Checkbox<'a, Message, Renderer: renderer::Text> { +pub struct Checkbox<'a, Message, Renderer: text::Renderer> { is_checked: bool, on_toggle: Box<dyn Fn(bool) -> Message>, label: String, @@ -47,7 +47,7 @@ pub struct Checkbox<'a, Message, Renderer: renderer::Text> { style_sheet: &'a dyn StyleSheet, } -impl<'a, Message, Renderer: renderer::Text> Checkbox<'a, Message, Renderer> { +impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> { /// The default size of a [`Checkbox`]. const DEFAULT_SIZE: u16 = 20; @@ -128,7 +128,7 @@ impl<'a, Message, Renderer: renderer::Text> Checkbox<'a, Message, Renderer> { impl<'a, Message, Renderer> Widget<Message, Renderer> for Checkbox<'a, Message, Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.width @@ -232,7 +232,7 @@ where }); if self.is_checked { - renderer.fill_text(renderer::text::Section { + renderer.fill_text(text::Text { content: &Renderer::CHECKMARK_ICON.to_string(), font: Renderer::ICON_FONT, size: bounds.height * 0.7, @@ -251,7 +251,7 @@ where { let label_layout = children.next().unwrap(); - text::draw( + widget::text::draw( renderer, style, label_layout, @@ -276,7 +276,7 @@ where impl<'a, Message, Renderer> From<Checkbox<'a, Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, Message: 'a, { fn from( diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index 6fe5feb7..3a393e14 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -7,7 +7,7 @@ use crate::mouse; use crate::overlay; use crate::overlay::menu::{self, Menu}; use crate::renderer; -use crate::renderer::text; +use crate::text::{self, Text}; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, @@ -19,7 +19,7 @@ pub use iced_style::pick_list::{Style, StyleSheet}; /// A widget for selecting a single value from a list of options. #[allow(missing_debug_implementations)] -pub struct PickList<'a, T, Message, Renderer: renderer::Text> +pub struct PickList<'a, T, Message, Renderer: text::Renderer> where [T]: ToOwned<Owned = Vec<T>>, { @@ -61,7 +61,7 @@ impl<T> Default for State<T> { } } -impl<'a, T: 'a, Message, Renderer: renderer::Text> +impl<'a, T: 'a, Message, Renderer: text::Renderer> PickList<'a, T, Message, Renderer> where T: ToString + Eq, @@ -151,7 +151,7 @@ where T: Clone + ToString + Eq, [T]: ToOwned<Owned = Vec<T>>, Message: 'static, - Renderer: renderer::Text + 'a, + Renderer: text::Renderer + 'a, { fn width(&self) -> Length { self.width @@ -368,7 +368,7 @@ where border_radius: style.border_radius, }); - renderer.fill_text(text::Section { + renderer.fill_text(Text { content: &Renderer::ARROW_DOWN_ICON.to_string(), font: Renderer::ICON_FONT, size: bounds.height * style.icon_size, @@ -390,7 +390,7 @@ where .as_ref() .or_else(|| self.placeholder.as_ref()) { - renderer.fill_text(text::Section { + renderer.fill_text(Text { content: label, size: f32::from( self.text_size.unwrap_or(renderer.default_size()), @@ -444,7 +444,7 @@ impl<'a, T: 'a, Message, Renderer> Into<Element<'a, Message, Renderer>> where T: Clone + ToString + Eq, [T]: ToOwned<Owned = Vec<T>>, - Renderer: renderer::Text + 'a, + Renderer: text::Renderer + 'a, Message: 'static, { fn into(self) -> Element<'a, Message, Renderer> { diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index 91de8be5..afe85b76 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -6,9 +6,9 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::renderer; +use crate::text; use crate::touch; -use crate::widget::text; -use crate::widget::{Row, Text}; +use crate::widget::{self, Row, Text}; use crate::{ Alignment, Background, Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Widget, @@ -43,7 +43,7 @@ pub use iced_style::radio::{Style, StyleSheet}; /// ///  #[allow(missing_debug_implementations)] -pub struct Radio<'a, Message, Renderer: renderer::Text> { +pub struct Radio<'a, Message, Renderer: text::Renderer> { is_selected: bool, on_click: Message, label: String, @@ -56,7 +56,7 @@ pub struct Radio<'a, Message, Renderer: renderer::Text> { style_sheet: &'a dyn StyleSheet, } -impl<'a, Message, Renderer: renderer::Text> Radio<'a, Message, Renderer> +impl<'a, Message, Renderer: text::Renderer> Radio<'a, Message, Renderer> where Message: Clone, { @@ -145,7 +145,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> for Radio<'a, Message, Renderer> where Message: Clone, - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.width @@ -267,7 +267,7 @@ where { let label_layout = children.next().unwrap(); - text::draw( + widget::text::draw( renderer, style, label_layout, @@ -293,7 +293,7 @@ impl<'a, Message, Renderer> From<Radio<'a, Message, Renderer>> for Element<'a, Message, Renderer> where Message: 'a + Clone, - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, { fn from( radio: Radio<'a, Message, Renderer>, diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs index 563ab8c4..79688b28 100644 --- a/native/src/widget/text.rs +++ b/native/src/widget/text.rs @@ -2,12 +2,11 @@ use crate::alignment; use crate::layout; use crate::renderer; +use crate::text; use crate::{ Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; -pub use iced_core::text::Hit; - use std::hash::Hash; /// A paragraph of text. @@ -24,7 +23,7 @@ use std::hash::Hash; /// ///  #[derive(Debug)] -pub struct Text<Renderer: renderer::Text> { +pub struct Text<Renderer: text::Renderer> { content: String, size: Option<u16>, color: Option<Color>, @@ -35,7 +34,7 @@ pub struct Text<Renderer: renderer::Text> { vertical_alignment: alignment::Vertical, } -impl<Renderer: renderer::Text> Text<Renderer> { +impl<Renderer: text::Renderer> Text<Renderer> { /// Create a new fragment of [`Text`] with the given contents. pub fn new<T: Into<String>>(label: T) -> Self { Text { @@ -103,7 +102,7 @@ impl<Renderer: renderer::Text> Text<Renderer> { impl<Message, Renderer> Widget<Message, Renderer> for Text<Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.width @@ -175,7 +174,7 @@ pub fn draw<Renderer>( horizontal_alignment: alignment::Horizontal, vertical_alignment: alignment::Vertical, ) where - Renderer: renderer::Text, + Renderer: text::Renderer, { let bounds = layout.bounds(); @@ -191,7 +190,7 @@ pub fn draw<Renderer>( alignment::Vertical::Bottom => bounds.y + bounds.height, }; - renderer.fill_text(renderer::text::Section { + renderer.fill_text(crate::text::Text { content, size: f32::from(size.unwrap_or(renderer.default_size())), bounds: Rectangle { x, y, ..bounds }, @@ -205,14 +204,14 @@ pub fn draw<Renderer>( impl<'a, Message, Renderer> From<Text<Renderer>> for Element<'a, Message, Renderer> where - Renderer: renderer::Text + 'a, + Renderer: text::Renderer + 'a, { fn from(text: Text<Renderer>) -> Element<'a, Message, Renderer> { Element::new(text) } } -impl<Renderer: renderer::Text> Clone for Text<Renderer> { +impl<Renderer: text::Renderer> Clone for Text<Renderer> { fn clone(&self) -> Self { Self { content: self.content.clone(), diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index 5d67ddfe..a3641330 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -17,6 +17,7 @@ use crate::keyboard; use crate::layout; use crate::mouse::{self, click}; use crate::renderer; +use crate::text::{self, Text}; use crate::touch; use crate::{ Background, Clipboard, Color, Element, Hasher, Layout, Length, Padding, @@ -53,7 +54,7 @@ pub use iced_style::text_input::{Style, StyleSheet}; /// ``` ///  #[allow(missing_debug_implementations)] -pub struct TextInput<'a, Message, Renderer: renderer::Text> { +pub struct TextInput<'a, Message, Renderer: text::Renderer> { state: &'a mut State, placeholder: String, value: Value, @@ -71,7 +72,7 @@ pub struct TextInput<'a, Message, Renderer: renderer::Text> { impl<'a, Message, Renderer> TextInput<'a, Message, Renderer> where Message: Clone, - Renderer: renderer::Text, + Renderer: text::Renderer, { /// Creates a new [`TextInput`]. /// @@ -166,7 +167,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> for TextInput<'a, Message, Renderer> where Message: Clone, - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.width @@ -728,7 +729,7 @@ where renderer.fill_rectangle(cursor); } - renderer.fill_text(renderer::text::Section { + renderer.fill_text(Text { content: if text.is_empty() { &self.placeholder } else { @@ -776,7 +777,7 @@ impl<'a, Message, Renderer> From<TextInput<'a, Message, Renderer>> for Element<'a, Message, Renderer> where Message: 'a + Clone, - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, { fn from( text_input: TextInput<'a, Message, Renderer>, @@ -877,7 +878,7 @@ fn offset<Renderer>( state: &State, ) -> f32 where - Renderer: renderer::Text, + Renderer: text::Renderer, { if state.is_focused() { let cursor = state.cursor(); @@ -911,7 +912,7 @@ fn measure_cursor_and_scroll_offset<Renderer>( font: Renderer::Font, ) -> (f32, f32) where - Renderer: renderer::Text, + Renderer: text::Renderer, { let text_before_cursor = value.until(cursor_index).to_string(); @@ -935,7 +936,7 @@ fn find_cursor_position<Renderer>( x: f32, ) -> Option<usize> where - Renderer: renderer::Text, + Renderer: text::Renderer, { let size = size.unwrap_or(renderer.default_size()); @@ -950,5 +951,5 @@ where Point::new(x + offset, text_bounds.height / 2.0), true, ) - .map(renderer::text::Hit::cursor) + .map(text::Hit::cursor) } diff --git a/native/src/widget/toggler.rs b/native/src/widget/toggler.rs index 20cfea74..e5229d52 100644 --- a/native/src/widget/toggler.rs +++ b/native/src/widget/toggler.rs @@ -6,7 +6,7 @@ use crate::event; use crate::layout; use crate::mouse; use crate::renderer; -use crate::widget::text; +use crate::text; use crate::widget::{Row, Text}; use crate::{ Alignment, Clipboard, Element, Event, Hasher, Layout, Length, Point, @@ -31,7 +31,7 @@ pub use iced_style::toggler::{Style, StyleSheet}; /// Toggler::new(is_active, String::from("Toggle me!"), |b| Message::TogglerToggled(b)); /// ``` #[allow(missing_debug_implementations)] -pub struct Toggler<Message, Renderer: renderer::Text> { +pub struct Toggler<Message, Renderer: text::Renderer> { is_active: bool, on_toggle: Box<dyn Fn(bool) -> Message>, label: Option<String>, @@ -44,7 +44,7 @@ pub struct Toggler<Message, Renderer: renderer::Text> { style_sheet: Box<dyn StyleSheet>, } -impl<Message, Renderer: renderer::Text> Toggler<Message, Renderer> { +impl<Message, Renderer: text::Renderer> Toggler<Message, Renderer> { /// The default size of a [`Toggler`]. pub const DEFAULT_SIZE: u16 = 20; @@ -126,7 +126,7 @@ impl<Message, Renderer: renderer::Text> Toggler<Message, Renderer> { impl<Message, Renderer> Widget<Message, Renderer> for Toggler<Message, Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.width @@ -223,7 +223,7 @@ where if let Some(label) = &self.label { let label_layout = children.next().unwrap(); - text::draw( + crate::widget::text::draw( renderer, style, label_layout, @@ -297,7 +297,7 @@ where impl<'a, Message, Renderer> From<Toggler<Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, Message: 'a, { fn from( diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs index a00158f6..a7f3a042 100644 --- a/native/src/widget/tooltip.rs +++ b/native/src/widget/tooltip.rs @@ -6,6 +6,7 @@ use iced_core::Rectangle; use crate::event; use crate::layout; use crate::renderer; +use crate::text; use crate::widget::container; use crate::widget::text::Text; use crate::{ @@ -15,7 +16,7 @@ use crate::{ /// An element to display a widget over another. #[allow(missing_debug_implementations)] -pub struct Tooltip<'a, Message, Renderer: renderer::Text> { +pub struct Tooltip<'a, Message, Renderer: text::Renderer> { content: Element<'a, Message, Renderer>, tooltip: Text<Renderer>, position: Position, @@ -26,7 +27,7 @@ pub struct Tooltip<'a, Message, Renderer: renderer::Text> { impl<'a, Message, Renderer> Tooltip<'a, Message, Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { /// The default padding of a [`Tooltip`] drawn by this renderer. const DEFAULT_PADDING: u16 = 5; @@ -100,7 +101,7 @@ pub enum Position { impl<'a, Message, Renderer> Widget<Message, Renderer> for Tooltip<'a, Message, Renderer> where - Renderer: renderer::Text, + Renderer: text::Renderer, { fn width(&self) -> Length { self.content.width() @@ -260,7 +261,7 @@ where impl<'a, Message, Renderer> From<Tooltip<'a, Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + renderer::Text, + Renderer: 'a + text::Renderer, Message: 'a, { fn from( diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index adc0eb6d..336696ee 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -5,7 +5,7 @@ use iced_graphics::font; use std::{cell::RefCell, collections::HashMap}; use wgpu_glyph::ab_glyph; -pub use iced_native::widget::text::Hit; +pub use iced_native::text::Hit; #[derive(Debug)] pub struct Pipeline { |