diff options
| author | 2022-09-21 21:11:54 +0200 | |
|---|---|---|
| committer | 2022-09-21 21:11:54 +0200 | |
| commit | 7420ea7a6b80663cad178c1238c5b756232a087f (patch) | |
| tree | eaf073565e9c02eae8e013a5c59c26558aa13ba6 /native/src | |
| parent | f15bc3ca34cadb114f678cb2430209c474149b45 (diff) | |
| parent | ce3b89639d84a279bbc0f4dac912a136488d0bec (diff) | |
| download | iced-7420ea7a6b80663cad178c1238c5b756232a087f.tar.gz iced-7420ea7a6b80663cad178c1238c5b756232a087f.tar.bz2 iced-7420ea7a6b80663cad178c1238c5b756232a087f.zip | |
Merge pull request #1107 from RamType0/TextContentByCow
Text content by cow
Diffstat (limited to '')
| -rw-r--r-- | native/src/element.rs | 2 | ||||
| -rw-r--r-- | native/src/widget/helpers.rs | 6 | ||||
| -rw-r--r-- | native/src/widget/text.rs | 22 | ||||
| -rw-r--r-- | native/src/widget/tooltip.rs | 8 | 
4 files changed, 21 insertions, 17 deletions
| diff --git a/native/src/element.rs b/native/src/element.rs index e9a130f5..074e422e 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -91,7 +91,7 @@ impl<'a, Message, Renderer> Element<'a, Message, Renderer> {      ///      /// ```      /// # mod counter { -    /// #     type Text = iced_native::widget::Text<iced_native::renderer::Null>; +    /// #     type Text<'a> = iced_native::widget::Text<'a, iced_native::renderer::Null>;      /// #      /// #     #[derive(Debug, Clone, Copy)]      /// #     pub enum Message {} diff --git a/native/src/widget/helpers.rs b/native/src/widget/helpers.rs index a62448e9..79751878 100644 --- a/native/src/widget/helpers.rs +++ b/native/src/widget/helpers.rs @@ -101,18 +101,18 @@ where      Renderer: crate::text::Renderer,      Renderer::Theme: widget::container::StyleSheet + widget::text::StyleSheet,  { -    widget::Tooltip::new(content, tooltip, position) +    widget::Tooltip::new(content, tooltip.to_string(), position)  }  /// Creates a new [`Text`] widget with the provided content.  ///  /// [`Text`]: widget::Text -pub fn text<Renderer>(text: impl ToString) -> widget::Text<Renderer> +pub fn text<'a, Renderer>(text: impl ToString) -> widget::Text<'a, Renderer>  where      Renderer: crate::text::Renderer,      Renderer::Theme: widget::text::StyleSheet,  { -    widget::Text::new(text) +    widget::Text::new(text.to_string())  }  /// Creates a new [`Checkbox`]. diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs index b30f4518..dab6e874 100644 --- a/native/src/widget/text.rs +++ b/native/src/widget/text.rs @@ -6,6 +6,8 @@ use crate::text;  use crate::widget::Tree;  use crate::{Element, Layout, Length, Point, Rectangle, Size, Widget}; +use std::borrow::Cow; +  pub use iced_style::text::{Appearance, StyleSheet};  /// A paragraph of text. @@ -15,7 +17,7 @@ pub use iced_style::text::{Appearance, StyleSheet};  /// ```  /// # use iced_native::Color;  /// # -/// # type Text = iced_native::widget::Text<iced_native::renderer::Null>; +/// # type Text<'a> = iced_native::widget::Text<'a, iced_native::renderer::Null>;  /// #  /// Text::new("I <3 iced!")  ///     .size(40) @@ -24,12 +26,12 @@ pub use iced_style::text::{Appearance, StyleSheet};  ///  ///   #[allow(missing_debug_implementations)] -pub struct Text<Renderer> +pub struct Text<'a, Renderer>  where      Renderer: text::Renderer,      Renderer::Theme: StyleSheet,  { -    content: String, +    content: Cow<'a, str>,      size: Option<u16>,      width: Length,      height: Length, @@ -39,15 +41,15 @@ where      style: <Renderer::Theme as StyleSheet>::Style,  } -impl<Renderer> Text<Renderer> +impl<'a, Renderer> Text<'a, Renderer>  where      Renderer: text::Renderer,      Renderer::Theme: StyleSheet,  {      /// Create a new fragment of [`Text`] with the given contents. -    pub fn new<T: ToString>(label: T) -> Self { +    pub fn new(content: impl Into<Cow<'a, str>>) -> Self {          Text { -            content: label.to_string(), +            content: content.into(),              size: None,              font: Default::default(),              width: Length::Shrink, @@ -112,7 +114,7 @@ where      }  } -impl<Message, Renderer> Widget<Message, Renderer> for Text<Renderer> +impl<'a, Message, Renderer> Widget<Message, Renderer> for Text<'a, Renderer>  where      Renderer: text::Renderer,      Renderer::Theme: StyleSheet, @@ -216,18 +218,18 @@ pub fn draw<Renderer>(      });  } -impl<'a, Message, Renderer> From<Text<Renderer>> +impl<'a, Message, Renderer> From<Text<'a, Renderer>>      for Element<'a, Message, Renderer>  where      Renderer: text::Renderer + 'a,      Renderer::Theme: StyleSheet,  { -    fn from(text: Text<Renderer>) -> Element<'a, Message, Renderer> { +    fn from(text: Text<'a, Renderer>) -> Element<'a, Message, Renderer> {          Element::new(text)      }  } -impl<Renderer> Clone for Text<Renderer> +impl<'a, Renderer> Clone for Text<'a, Renderer>  where      Renderer: text::Renderer,      Renderer::Theme: StyleSheet, diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs index 7ce2aaae..674f2ba6 100644 --- a/native/src/widget/tooltip.rs +++ b/native/src/widget/tooltip.rs @@ -13,6 +13,8 @@ use crate::{      Shell, Size, Vector, Widget,  }; +use std::borrow::Cow; +  /// An element to display a widget over another.  #[allow(missing_debug_implementations)]  pub struct Tooltip<'a, Message, Renderer: text::Renderer> @@ -21,7 +23,7 @@ where      Renderer::Theme: container::StyleSheet + widget::text::StyleSheet,  {      content: Element<'a, Message, Renderer>, -    tooltip: Text<Renderer>, +    tooltip: Text<'a, Renderer>,      position: Position,      gap: u16,      padding: u16, @@ -42,12 +44,12 @@ where      /// [`Tooltip`]: struct.Tooltip.html      pub fn new(          content: impl Into<Element<'a, Message, Renderer>>, -        tooltip: impl ToString, +        tooltip: impl Into<Cow<'a, str>>,          position: Position,      ) -> Self {          Tooltip {              content: content.into(), -            tooltip: Text::new(tooltip.to_string()), +            tooltip: Text::new(tooltip),              position,              gap: 0,              padding: Self::DEFAULT_PADDING, | 
