diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/element.rs | 24 | ||||
| -rw-r--r-- | native/src/renderer/null.rs | 2 | ||||
| -rw-r--r-- | native/src/widget/checkbox.rs | 4 | ||||
| -rw-r--r-- | native/src/widget/image.rs | 4 | ||||
| -rw-r--r-- | native/src/widget/radio.rs | 4 | ||||
| -rw-r--r-- | native/src/widget/text.rs | 39 | 
6 files changed, 56 insertions, 21 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index 4e7c7fc6..73e39012 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -81,7 +81,7 @@ where      ///      /// ```      /// # mod counter { -    /// #     use iced_native::{text, Text}; +    /// #     type Text = iced_native::Text<iced_native::renderer::Null>;      /// #      /// #     #[derive(Debug, Clone, Copy)]      /// #     pub enum Message {} @@ -227,6 +227,28 @@ where          self.widget.layout(renderer, limits)      } +    /// Processes a runtime [`Event`]. +    /// +    /// [`Event`]: enum.Event.html +    pub fn on_event( +        &mut self, +        event: Event, +        layout: Layout<'_>, +        cursor_position: Point, +        messages: &mut Vec<Message>, +        renderer: &Renderer, +        clipboard: Option<&dyn Clipboard>, +    ) { +        self.widget.on_event( +            event, +            layout, +            cursor_position, +            messages, +            renderer, +            clipboard, +        ); +    } +      /// Draws the [`Element`] and its children using the given [`Layout`].      ///      /// [`Element`]: struct.Element.html diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index 9033a7da..2c7babdb 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -47,6 +47,8 @@ impl row::Renderer for Null {  }  impl text::Renderer for Null { +    type Font = Font; +      const DEFAULT_SIZE: u16 = 20;      fn measure( diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index d611993f..4d167df7 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -3,7 +3,7 @@ use std::hash::Hash;  use crate::{      input::{mouse, ButtonState}, -    layout, row, text, Align, Clipboard, Element, Event, Font, Hasher, +    layout, row, text, Align, Clipboard, Element, Event, Hasher,      HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,      VerticalAlignment, Widget,  }; @@ -186,7 +186,7 @@ where              label_layout.bounds(),              &self.label,              self.text_size, -            Font::Default, +            Default::default(),              None,              HorizontalAlignment::Left,              VerticalAlignment::Center, diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs index 6bd0fd68..132f249d 100644 --- a/native/src/widget/image.rs +++ b/native/src/widget/image.rs @@ -123,6 +123,8 @@ pub struct Handle {  impl Handle {      /// Creates an image [`Handle`] pointing to the image of the given path.      /// +    /// Makes an educated guess about the image format by examining the data in the file. +    ///      /// [`Handle`]: struct.Handle.html      pub fn from_path<T: Into<PathBuf>>(path: T) -> Handle {          Self::from_data(Data::Path(path.into())) @@ -145,6 +147,8 @@ impl Handle {      /// Creates an image [`Handle`] containing the image data directly.      /// +    /// Makes an educated guess about the image format by examining the given data. +    ///      /// This is useful if you already have your image loaded in-memory, maybe      /// because you downloaded or generated it procedurally.      /// diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index 0ec621bf..a13d86a0 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -1,7 +1,7 @@  //! Create choices using radio buttons.  use crate::{      input::{mouse, ButtonState}, -    layout, row, text, Align, Clipboard, Element, Event, Font, Hasher, +    layout, row, text, Align, Clipboard, Element, Event, Hasher,      HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,      VerticalAlignment, Widget,  }; @@ -155,7 +155,7 @@ where              label_layout.bounds(),              &self.label,              <Renderer as text::Renderer>::DEFAULT_SIZE, -            Font::Default, +            Default::default(),              None,              HorizontalAlignment::Left,              VerticalAlignment::Center, diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs index dc7c33ec..d60aa468 100644 --- a/native/src/widget/text.rs +++ b/native/src/widget/text.rs @@ -1,7 +1,7 @@  //! Write some text for your users to read.  use crate::{ -    layout, Color, Element, Font, Hasher, HorizontalAlignment, Layout, Length, -    Point, Rectangle, Size, VerticalAlignment, Widget, +    layout, Color, Element, Hasher, HorizontalAlignment, Layout, Length, Point, +    Rectangle, Size, VerticalAlignment, Widget,  };  use std::hash::Hash; @@ -11,7 +11,7 @@ use std::hash::Hash;  /// # Example  ///  /// ``` -/// # use iced_native::Text; +/// # type Text = iced_native::Text<iced_native::renderer::Null>;  /// #  /// Text::new("I <3 iced!")  ///     .color([0.0, 0.0, 1.0]) @@ -20,18 +20,18 @@ use std::hash::Hash;  ///  ///   #[derive(Debug, Clone)] -pub struct Text { +pub struct Text<Renderer: self::Renderer> {      content: String,      size: Option<u16>,      color: Option<Color>, -    font: Font, +    font: Renderer::Font,      width: Length,      height: Length,      horizontal_alignment: HorizontalAlignment,      vertical_alignment: VerticalAlignment,  } -impl Text { +impl<Renderer: self::Renderer> Text<Renderer> {      /// Create a new fragment of [`Text`] with the given contents.      ///      /// [`Text`]: struct.Text.html @@ -40,7 +40,7 @@ impl Text {              content: label.into(),              size: None,              color: None, -            font: Font::Default, +            font: Default::default(),              width: Length::Shrink,              height: Length::Shrink,              horizontal_alignment: HorizontalAlignment::Left, @@ -69,8 +69,8 @@ impl Text {      ///      /// [`Text`]: struct.Text.html      /// [`Font`]: ../../struct.Font.html -    pub fn font(mut self, font: Font) -> Self { -        self.font = font; +    pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self { +        self.font = font.into();          self      } @@ -112,7 +112,7 @@ impl Text {      }  } -impl<Message, Renderer> Widget<Message, Renderer> for Text +impl<Message, Renderer> Widget<Message, Renderer> for Text<Renderer>  where      Renderer: self::Renderer,  { @@ -163,7 +163,8 @@ where      }      fn hash_layout(&self, state: &mut Hasher) { -        std::any::TypeId::of::<Text>().hash(state); +        struct Marker; +        std::any::TypeId::of::<Marker>().hash(state);          self.content.hash(state);          self.size.hash(state); @@ -181,6 +182,11 @@ where  /// [renderer]: ../../renderer/index.html  /// [`UserInterface`]: ../../struct.UserInterface.html  pub trait Renderer: crate::Renderer { +    /// The font type used for [`Text`]. +    /// +    /// [`Text`]: struct.Text.html +    type Font: Default + Copy; +      /// The default size of [`Text`].      ///      /// [`Text`]: struct.Text.html @@ -194,7 +200,7 @@ pub trait Renderer: crate::Renderer {          &self,          content: &str,          size: u16, -        font: Font, +        font: Self::Font,          bounds: Size,      ) -> (f32, f32); @@ -217,18 +223,19 @@ pub trait Renderer: crate::Renderer {          bounds: Rectangle,          content: &str,          size: u16, -        font: Font, +        font: Self::Font,          color: Option<Color>,          horizontal_alignment: HorizontalAlignment,          vertical_alignment: VerticalAlignment,      ) -> Self::Output;  } -impl<'a, Message, Renderer> From<Text> for Element<'a, Message, Renderer> +impl<'a, Message, Renderer> From<Text<Renderer>> +    for Element<'a, Message, Renderer>  where -    Renderer: self::Renderer, +    Renderer: self::Renderer + 'a,  { -    fn from(text: Text) -> Element<'a, Message, Renderer> { +    fn from(text: Text<Renderer>) -> Element<'a, Message, Renderer> {          Element::new(text)      }  }  | 
