diff options
| author | 2023-09-10 00:34:21 +0200 | |
|---|---|---|
| committer | 2023-09-10 00:34:21 +0200 | |
| commit | b8e5693a3089d728b4f8d4b3b0b7197202ebd732 (patch) | |
| tree | 79a9f84f9920525657fbe03d53ce33bab09053d7 /widget/src | |
| parent | 956512338905bac0b156fdaf16fe3c3e07e97a84 (diff) | |
| parent | a3489e4af960388e9f73988b88df361022a654a4 (diff) | |
| download | iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.tar.gz iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.tar.bz2 iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.zip | |
Merge branch 'master' into explicit-text-caching
Diffstat (limited to '')
| -rw-r--r-- | widget/src/button.rs | 4 | ||||
| -rw-r--r-- | widget/src/canvas/event.rs | 2 | ||||
| -rw-r--r-- | widget/src/canvas/program.rs | 11 | ||||
| -rw-r--r-- | widget/src/checkbox.rs | 6 | ||||
| -rw-r--r-- | widget/src/combo_box.rs | 8 | ||||
| -rw-r--r-- | widget/src/helpers.rs | 52 | ||||
| -rw-r--r-- | widget/src/lib.rs | 5 | ||||
| -rw-r--r-- | widget/src/overlay/menu.rs | 2 | ||||
| -rw-r--r-- | widget/src/pane_grid.rs | 4 | ||||
| -rw-r--r-- | widget/src/pane_grid/configuration.rs | 4 | ||||
| -rw-r--r-- | widget/src/pane_grid/content.rs | 4 | ||||
| -rw-r--r-- | widget/src/pane_grid/node.rs | 2 | ||||
| -rw-r--r-- | widget/src/pane_grid/pane.rs | 2 | ||||
| -rw-r--r-- | widget/src/pane_grid/split.rs | 2 | ||||
| -rw-r--r-- | widget/src/pane_grid/state.rs | 40 | ||||
| -rw-r--r-- | widget/src/pane_grid/title_bar.rs | 6 | ||||
| -rw-r--r-- | widget/src/pick_list.rs | 2 | ||||
| -rw-r--r-- | widget/src/qr_code.rs | 2 | ||||
| -rw-r--r-- | widget/src/radio.rs | 2 | ||||
| -rw-r--r-- | widget/src/scrollable.rs | 10 | ||||
| -rw-r--r-- | widget/src/slider.rs | 4 | ||||
| -rw-r--r-- | widget/src/text_input.rs | 2 | ||||
| -rw-r--r-- | widget/src/text_input/value.rs | 2 | ||||
| -rw-r--r-- | widget/src/toggler.rs | 6 | 
24 files changed, 101 insertions, 83 deletions
| diff --git a/widget/src/button.rs b/widget/src/button.rs index 8ca4a542..4915bd49 100644 --- a/widget/src/button.rs +++ b/widget/src/button.rs @@ -119,9 +119,9 @@ where      /// Sets the style variant of this [`Button`].      pub fn style(          mut self, -        style: <Renderer::Theme as StyleSheet>::Style, +        style: impl Into<<Renderer::Theme as StyleSheet>::Style>,      ) -> Self { -        self.style = style; +        self.style = style.into();          self      }  } diff --git a/widget/src/canvas/event.rs b/widget/src/canvas/event.rs index 4508c184..1288365f 100644 --- a/widget/src/canvas/event.rs +++ b/widget/src/canvas/event.rs @@ -7,7 +7,7 @@ pub use crate::core::event::Status;  /// A [`Canvas`] event.  /// -/// [`Canvas`]: crate::widget::Canvas +/// [`Canvas`]: crate::Canvas  #[derive(Debug, Clone, Copy, PartialEq)]  pub enum Event {      /// A mouse event. diff --git a/widget/src/canvas/program.rs b/widget/src/canvas/program.rs index b3f6175e..2ac23061 100644 --- a/widget/src/canvas/program.rs +++ b/widget/src/canvas/program.rs @@ -8,7 +8,7 @@ use crate::graphics::geometry;  /// A [`Program`] can mutate internal state and produce messages for an  /// application.  /// -/// [`Canvas`]: crate::widget::Canvas +/// [`Canvas`]: crate::Canvas  pub trait Program<Message, Renderer = crate::Renderer>  where      Renderer: geometry::Renderer, @@ -26,7 +26,7 @@ where      ///      /// By default, this method does and returns nothing.      /// -    /// [`Canvas`]: crate::widget::Canvas +    /// [`Canvas`]: crate::Canvas      fn update(          &self,          _state: &mut Self::State, @@ -42,8 +42,9 @@ where      /// [`Geometry`] can be easily generated with a [`Frame`] or stored in a      /// [`Cache`].      /// -    /// [`Frame`]: crate::widget::canvas::Frame -    /// [`Cache`]: crate::widget::canvas::Cache +    /// [`Geometry`]: crate::canvas::Geometry +    /// [`Frame`]: crate::canvas::Frame +    /// [`Cache`]: crate::canvas::Cache      fn draw(          &self,          state: &Self::State, @@ -58,7 +59,7 @@ where      /// The interaction returned will be in effect even if the cursor position      /// is out of bounds of the program's [`Canvas`].      /// -    /// [`Canvas`]: crate::widget::Canvas +    /// [`Canvas`]: crate::Canvas      fn mouse_interaction(          &self,          _state: &Self::State, diff --git a/widget/src/checkbox.rs b/widget/src/checkbox.rs index 2860d496..d7fdf339 100644 --- a/widget/src/checkbox.rs +++ b/widget/src/checkbox.rs @@ -121,7 +121,7 @@ where          self      } -    /// Sets the text [`LineHeight`] of the [`Checkbox`]. +    /// Sets the text [`text::LineHeight`] of the [`Checkbox`].      pub fn text_line_height(          mut self,          line_height: impl Into<text::LineHeight>, @@ -136,9 +136,9 @@ where          self      } -    /// Sets the [`Font`] of the text of the [`Checkbox`]. +    /// Sets the [`Renderer::Font`] of the text of the [`Checkbox`].      /// -    /// [`Font`]: crate::text::Renderer::Font +    /// [`Renderer::Font`]: crate::core::text::Renderer      pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self {          self.font = Some(font.into());          self diff --git a/widget/src/combo_box.rs b/widget/src/combo_box.rs index 650954ef..d6915281 100644 --- a/widget/src/combo_box.rs +++ b/widget/src/combo_box.rs @@ -20,7 +20,7 @@ use std::time::Instant;  ///  /// This widget is composed by a [`TextInput`] that can be filled with the text  /// to search for corresponding values from the list of options that are displayed -/// as a [`Menu`]. +/// as a Menu.  #[allow(missing_debug_implementations)]  pub struct ComboBox<'a, T, Message, Renderer = crate::Renderer>  where @@ -131,14 +131,16 @@ where          self      } -    /// Sets the [`Font`] of the [`ComboBox`]. +    /// Sets the [`Renderer::Font`] of the [`ComboBox`]. +    /// +    /// [`Renderer::Font`]: text::Renderer      pub fn font(mut self, font: Renderer::Font) -> Self {          self.text_input = self.text_input.font(font);          self.font = Some(font);          self      } -    /// Sets the [`Icon`] of the [`ComboBox`]. +    /// Sets the [`text_input::Icon`] of the [`ComboBox`].      pub fn icon(mut self, icon: text_input::Icon<Renderer::Font>) -> Self {          self.text_input = self.text_input.icon(icon);          self diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index c885d724..3c9c2b29 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -26,7 +26,7 @@ use std::ops::RangeInclusive;  /// Creates a [`Column`] with the given children.  /// -/// [`Column`]: widget::Column +/// [`Column`]: crate::Column  #[macro_export]  macro_rules! column {      () => ( @@ -39,7 +39,7 @@ macro_rules! column {  /// Creates a [`Row`] with the given children.  /// -/// [`Row`]: widget::Row +/// [`Row`]: crate::Row  #[macro_export]  macro_rules! row {      () => ( @@ -52,7 +52,7 @@ macro_rules! row {  /// Creates a new [`Container`] with the provided content.  /// -/// [`Container`]: widget::Container +/// [`Container`]: crate::Container  pub fn container<'a, Message, Renderer>(      content: impl Into<Element<'a, Message, Renderer>>,  ) -> Container<'a, Message, Renderer> @@ -82,7 +82,7 @@ where  /// Creates a new [`Row`] with the given children.  /// -/// [`Row`]: widget::Row +/// [`Row`]: crate::Row  pub fn row<Message, Renderer>(      children: Vec<Element<'_, Message, Renderer>>,  ) -> Row<'_, Message, Renderer> { @@ -91,7 +91,7 @@ pub fn row<Message, Renderer>(  /// Creates a new [`Scrollable`] with the provided content.  /// -/// [`Scrollable`]: widget::Scrollable +/// [`Scrollable`]: crate::Scrollable  pub fn scrollable<'a, Message, Renderer>(      content: impl Into<Element<'a, Message, Renderer>>,  ) -> Scrollable<'a, Message, Renderer> @@ -104,7 +104,7 @@ where  /// Creates a new [`Button`] with the provided content.  /// -/// [`Button`]: widget::Button +/// [`Button`]: crate::Button  pub fn button<'a, Message, Renderer>(      content: impl Into<Element<'a, Message, Renderer>>,  ) -> Button<'a, Message, Renderer> @@ -118,8 +118,8 @@ where  /// Creates a new [`Tooltip`] with the provided content, tooltip text, and [`tooltip::Position`].  /// -/// [`Tooltip`]: widget::Tooltip -/// [`tooltip::Position`]: widget::tooltip::Position +/// [`Tooltip`]: crate::Tooltip +/// [`tooltip::Position`]: crate::tooltip::Position  pub fn tooltip<'a, Message, Renderer>(      content: impl Into<Element<'a, Message, Renderer>>,      tooltip: impl ToString, @@ -134,7 +134,7 @@ where  /// Creates a new [`Text`] widget with the provided content.  /// -/// [`Text`]: widget::Text +/// [`Text`]: core::widget::Text  pub fn text<'a, Renderer>(text: impl ToString) -> Text<'a, Renderer>  where      Renderer: core::text::Renderer, @@ -145,7 +145,7 @@ where  /// Creates a new [`Checkbox`].  /// -/// [`Checkbox`]: widget::Checkbox +/// [`Checkbox`]: crate::Checkbox  pub fn checkbox<'a, Message, Renderer>(      label: impl Into<String>,      is_checked: bool, @@ -160,7 +160,7 @@ where  /// Creates a new [`Radio`].  /// -/// [`Radio`]: widget::Radio +/// [`Radio`]: crate::Radio  pub fn radio<Message, Renderer, V>(      label: impl Into<String>,      value: V, @@ -178,7 +178,7 @@ where  /// Creates a new [`Toggler`].  /// -/// [`Toggler`]: widget::Toggler +/// [`Toggler`]: crate::Toggler  pub fn toggler<'a, Message, Renderer>(      label: impl Into<Option<String>>,      is_checked: bool, @@ -193,7 +193,7 @@ where  /// Creates a new [`TextInput`].  /// -/// [`TextInput`]: widget::TextInput +/// [`TextInput`]: crate::TextInput  pub fn text_input<'a, Message, Renderer>(      placeholder: &str,      value: &str, @@ -208,7 +208,7 @@ where  /// Creates a new [`Slider`].  /// -/// [`Slider`]: widget::Slider +/// [`Slider`]: crate::Slider  pub fn slider<'a, T, Message, Renderer>(      range: std::ops::RangeInclusive<T>,      value: T, @@ -225,7 +225,7 @@ where  /// Creates a new [`VerticalSlider`].  /// -/// [`VerticalSlider`]: widget::VerticalSlider +/// [`VerticalSlider`]: crate::VerticalSlider  pub fn vertical_slider<'a, T, Message, Renderer>(      range: std::ops::RangeInclusive<T>,      value: T, @@ -242,7 +242,7 @@ where  /// Creates a new [`PickList`].  /// -/// [`PickList`]: widget::PickList +/// [`PickList`]: crate::PickList  pub fn pick_list<'a, Message, Renderer, T>(      options: impl Into<Cow<'a, [T]>>,      selected: Option<T>, @@ -264,7 +264,7 @@ where  /// Creates a new [`ComboBox`].  /// -/// [`ComboBox`]: widget::ComboBox +/// [`ComboBox`]: crate::ComboBox  pub fn combo_box<'a, T, Message, Renderer>(      state: &'a combo_box::State<T>,      placeholder: &str, @@ -281,21 +281,21 @@ where  /// Creates a new horizontal [`Space`] with the given [`Length`].  /// -/// [`Space`]: widget::Space +/// [`Space`]: crate::Space  pub fn horizontal_space(width: impl Into<Length>) -> Space {      Space::with_width(width)  }  /// Creates a new vertical [`Space`] with the given [`Length`].  /// -/// [`Space`]: widget::Space +/// [`Space`]: crate::Space  pub fn vertical_space(height: impl Into<Length>) -> Space {      Space::with_height(height)  }  /// Creates a horizontal [`Rule`] with the given height.  /// -/// [`Rule`]: widget::Rule +/// [`Rule`]: crate::Rule  pub fn horizontal_rule<Renderer>(height: impl Into<Pixels>) -> Rule<Renderer>  where      Renderer: core::Renderer, @@ -306,7 +306,7 @@ where  /// Creates a vertical [`Rule`] with the given width.  /// -/// [`Rule`]: widget::Rule +/// [`Rule`]: crate::Rule  pub fn vertical_rule<Renderer>(width: impl Into<Pixels>) -> Rule<Renderer>  where      Renderer: core::Renderer, @@ -321,7 +321,7 @@ where  ///   * an inclusive range of possible values, and  ///   * the current value of the [`ProgressBar`].  /// -/// [`ProgressBar`]: widget::ProgressBar +/// [`ProgressBar`]: crate::ProgressBar  pub fn progress_bar<Renderer>(      range: RangeInclusive<f32>,      value: f32, @@ -335,7 +335,7 @@ where  /// Creates a new [`Image`].  /// -/// [`Image`]: widget::Image +/// [`Image`]: crate::Image  #[cfg(feature = "image")]  pub fn image<Handle>(handle: impl Into<Handle>) -> crate::Image<Handle> {      crate::Image::new(handle.into()) @@ -343,8 +343,8 @@ pub fn image<Handle>(handle: impl Into<Handle>) -> crate::Image<Handle> {  /// Creates a new [`Svg`] widget from the given [`Handle`].  /// -/// [`Svg`]: widget::Svg -/// [`Handle`]: widget::svg::Handle +/// [`Svg`]: crate::Svg +/// [`Handle`]: crate::svg::Handle  #[cfg(feature = "svg")]  pub fn svg<Renderer>(      handle: impl Into<core::svg::Handle>, @@ -357,6 +357,8 @@ where  }  /// Creates a new [`Canvas`]. +/// +/// [`Canvas`]: crate::Canvas  #[cfg(feature = "canvas")]  pub fn canvas<P, Message, Renderer>(      program: P, diff --git a/widget/src/lib.rs b/widget/src/lib.rs index 707fec04..7e204171 100644 --- a/widget/src/lib.rs +++ b/widget/src/lib.rs @@ -2,6 +2,7 @@  #![doc(      html_logo_url = "https://raw.githubusercontent.com/iced-rs/iced/9ab6923e943f784985e9ef9ca28b10278297225d/docs/logo.svg"  )] +#![forbid(unsafe_code, rust_2018_idioms)]  #![deny(      missing_debug_implementations,      missing_docs, @@ -10,9 +11,9 @@      clippy::from_over_into,      clippy::needless_borrow,      clippy::new_without_default, -    clippy::useless_conversion +    clippy::useless_conversion, +    rustdoc::broken_intra_doc_links  )] -#![forbid(unsafe_code, rust_2018_idioms)]  #![allow(clippy::inherent_to_string, clippy::type_complexity)]  #![cfg_attr(docsrs, feature(doc_auto_cfg))]  pub use iced_renderer as renderer; diff --git a/widget/src/overlay/menu.rs b/widget/src/overlay/menu.rs index 5a2e1bf0..b293f9fa 100644 --- a/widget/src/overlay/menu.rs +++ b/widget/src/overlay/menu.rs @@ -89,7 +89,7 @@ where          self      } -    /// Sets the text [`LineHeight`] of the [`Menu`]. +    /// Sets the text [`text::LineHeight`] of the [`Menu`].      pub fn text_line_height(          mut self,          line_height: impl Into<text::LineHeight>, diff --git a/widget/src/pane_grid.rs b/widget/src/pane_grid.rs index 6e2b39a4..f868a648 100644 --- a/widget/src/pane_grid.rs +++ b/widget/src/pane_grid.rs @@ -1,6 +1,6 @@  //! Let your users split regions of your application and organize layout dynamically.  //! -//! [](https://gfycat.com/mixedflatjellyfish) +//!   //!  //! # Example  //! The [`pane_grid` example] showcases how to use a [`PaneGrid`] with resizing, @@ -49,7 +49,7 @@ use crate::core::{  /// A collection of panes distributed using either vertical or horizontal splits  /// to completely fill the space available.  /// -/// [](https://gfycat.com/frailfreshairedaleterrier) +///   ///  /// This distribution of space is common in tiling window managers (like  /// [`awesome`](https://awesomewm.org/), [`i3`](https://i3wm.org/), or even diff --git a/widget/src/pane_grid/configuration.rs b/widget/src/pane_grid/configuration.rs index ddbc3bc2..b8aa2c7d 100644 --- a/widget/src/pane_grid/configuration.rs +++ b/widget/src/pane_grid/configuration.rs @@ -2,7 +2,7 @@ use crate::pane_grid::Axis;  /// The arrangement of a [`PaneGrid`].  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone)]  pub enum Configuration<T> {      /// A split of the available space. @@ -21,6 +21,6 @@ pub enum Configuration<T> {      },      /// A [`Pane`].      /// -    /// [`Pane`]: crate::widget::pane_grid::Pane +    /// [`Pane`]: super::Pane      Pane(T),  } diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs index 5dbc5496..826ea663 100644 --- a/widget/src/pane_grid/content.rs +++ b/widget/src/pane_grid/content.rs @@ -10,7 +10,7 @@ use crate::pane_grid::{Draggable, TitleBar};  /// The content of a [`Pane`].  /// -/// [`Pane`]: crate::widget::pane_grid::Pane +/// [`Pane`]: super::Pane  #[allow(missing_debug_implementations)]  pub struct Content<'a, Message, Renderer = crate::Renderer>  where @@ -87,7 +87,7 @@ where      /// Draws the [`Content`] with the provided [`Renderer`] and [`Layout`].      /// -    /// [`Renderer`]: crate::Renderer +    /// [`Renderer`]: crate::core::Renderer      pub fn draw(          &self,          tree: &Tree, diff --git a/widget/src/pane_grid/node.rs b/widget/src/pane_grid/node.rs index 6de5920f..3c707f15 100644 --- a/widget/src/pane_grid/node.rs +++ b/widget/src/pane_grid/node.rs @@ -5,7 +5,7 @@ use std::collections::BTreeMap;  /// A layout node of a [`PaneGrid`].  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone)]  pub enum Node {      /// The region of this [`Node`] is split into two. diff --git a/widget/src/pane_grid/pane.rs b/widget/src/pane_grid/pane.rs index d6fbab83..cabf55c1 100644 --- a/widget/src/pane_grid/pane.rs +++ b/widget/src/pane_grid/pane.rs @@ -1,5 +1,5 @@  /// A rectangular region in a [`PaneGrid`] used to display widgets.  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]  pub struct Pane(pub(super) usize); diff --git a/widget/src/pane_grid/split.rs b/widget/src/pane_grid/split.rs index 8132272a..ce021978 100644 --- a/widget/src/pane_grid/split.rs +++ b/widget/src/pane_grid/split.rs @@ -1,5 +1,5 @@  /// A divider that splits a region in a [`PaneGrid`] into two different panes.  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]  pub struct Split(pub(super) usize); diff --git a/widget/src/pane_grid/state.rs b/widget/src/pane_grid/state.rs index 6fd15890..28a52cf0 100644 --- a/widget/src/pane_grid/state.rs +++ b/widget/src/pane_grid/state.rs @@ -1,6 +1,6 @@  //! The state of a [`PaneGrid`].  //! -//! [`PaneGrid`]: crate::widget::PaneGrid +//! [`PaneGrid`]: super::PaneGrid  use crate::core::{Point, Size};  use crate::pane_grid::{      Axis, Configuration, Direction, Edge, Node, Pane, Region, Split, Target, @@ -18,23 +18,23 @@ use std::collections::HashMap;  /// provided to the view function of [`PaneGrid::new`] for displaying each  /// [`Pane`].  /// -/// [`PaneGrid`]: crate::widget::PaneGrid -/// [`PaneGrid::new`]: crate::widget::PaneGrid::new +/// [`PaneGrid`]: super::PaneGrid +/// [`PaneGrid::new`]: super::PaneGrid::new  #[derive(Debug, Clone)]  pub struct State<T> {      /// The panes of the [`PaneGrid`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub panes: HashMap<Pane, T>,      /// The internal state of the [`PaneGrid`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub internal: Internal,      /// The maximized [`Pane`] of the [`PaneGrid`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub(super) maximized: Option<Pane>,  } @@ -236,6 +236,8 @@ impl<T> State<T> {      }      /// Move [`Pane`] to an [`Edge`] of the [`PaneGrid`]. +    /// +    /// [`PaneGrid`]: super::PaneGrid      pub fn move_to_edge(&mut self, pane: &Pane, edge: Edge) {          match edge {              Edge::Top => { @@ -269,8 +271,8 @@ impl<T> State<T> {      /// If you want to swap panes on drag and drop in your [`PaneGrid`], you      /// will need to call this method when handling a [`DragEvent`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid -    /// [`DragEvent`]: crate::widget::pane_grid::DragEvent +    /// [`PaneGrid`]: super::PaneGrid +    /// [`DragEvent`]: super::DragEvent      pub fn swap(&mut self, a: &Pane, b: &Pane) {          self.internal.layout.update(&|node| match node {              Node::Split { .. } => {} @@ -292,8 +294,8 @@ impl<T> State<T> {      /// If you want to enable resize interactions in your [`PaneGrid`], you will      /// need to call this method when handling a [`ResizeEvent`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid -    /// [`ResizeEvent`]: crate::widget::pane_grid::ResizeEvent +    /// [`PaneGrid`]: super::PaneGrid +    /// [`ResizeEvent`]: super::ResizeEvent      pub fn resize(&mut self, split: &Split, ratio: f32) {          let _ = self.internal.layout.resize(split, ratio);      } @@ -315,7 +317,7 @@ impl<T> State<T> {      /// Maximize the given [`Pane`]. Only this pane will be rendered by the      /// [`PaneGrid`] until [`Self::restore()`] is called.      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub fn maximize(&mut self, pane: &Pane) {          self.maximized = Some(*pane);      } @@ -323,14 +325,14 @@ impl<T> State<T> {      /// Restore the currently maximized [`Pane`] to it's normal size. All panes      /// will be rendered by the [`PaneGrid`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub fn restore(&mut self) {          let _ = self.maximized.take();      }      /// Returns the maximized [`Pane`] of the [`PaneGrid`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub fn maximized(&self) -> Option<Pane> {          self.maximized      } @@ -338,7 +340,7 @@ impl<T> State<T> {  /// The internal state of a [`PaneGrid`].  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone)]  pub struct Internal {      layout: Node, @@ -349,7 +351,7 @@ impl Internal {      /// Initializes the [`Internal`] state of a [`PaneGrid`] from a      /// [`Configuration`].      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      pub fn from_configuration<T>(          panes: &mut HashMap<Pane, T>,          content: Configuration<T>, @@ -394,16 +396,16 @@ impl Internal {  /// The current action of a [`PaneGrid`].  /// -/// [`PaneGrid`]: crate::widget::PaneGrid +/// [`PaneGrid`]: super::PaneGrid  #[derive(Debug, Clone, Copy, PartialEq)]  pub enum Action {      /// The [`PaneGrid`] is idle.      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      Idle,      /// A [`Pane`] in the [`PaneGrid`] is being dragged.      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      Dragging {          /// The [`Pane`] being dragged.          pane: Pane, @@ -412,7 +414,7 @@ pub enum Action {      },      /// A [`Split`] in the [`PaneGrid`] is being dragged.      /// -    /// [`PaneGrid`]: crate::widget::PaneGrid +    /// [`PaneGrid`]: super::PaneGrid      Resizing {          /// The [`Split`] being dragged.          split: Split, diff --git a/widget/src/pane_grid/title_bar.rs b/widget/src/pane_grid/title_bar.rs index 8a4523e8..5ae7a6a0 100644 --- a/widget/src/pane_grid/title_bar.rs +++ b/widget/src/pane_grid/title_bar.rs @@ -11,7 +11,7 @@ use crate::core::{  /// The title bar of a [`Pane`].  /// -/// [`Pane`]: crate::widget::pane_grid::Pane +/// [`Pane`]: super::Pane  #[allow(missing_debug_implementations)]  pub struct TitleBar<'a, Message, Renderer = crate::Renderer>  where @@ -75,7 +75,7 @@ where      /// [`TitleBar`] is hovered.      ///      /// [`controls`]: Self::controls -    /// [`Pane`]: crate::widget::pane_grid::Pane +    /// [`Pane`]: super::Pane      pub fn always_show_controls(mut self) -> Self {          self.always_show_controls = true;          self @@ -114,7 +114,7 @@ where      /// Draws the [`TitleBar`] with the provided [`Renderer`] and [`Layout`].      /// -    /// [`Renderer`]: crate::Renderer +    /// [`Renderer`]: crate::core::Renderer      pub fn draw(          &self,          tree: &Tree, diff --git a/widget/src/pick_list.rs b/widget/src/pick_list.rs index 8feb1788..056a5e65 100644 --- a/widget/src/pick_list.rs +++ b/widget/src/pick_list.rs @@ -105,7 +105,7 @@ where          self      } -    /// Sets the text [`LineHeight`] of the [`PickList`]. +    /// Sets the text [`text::LineHeight`] of the [`PickList`].      pub fn text_line_height(          mut self,          line_height: impl Into<text::LineHeight>, diff --git a/widget/src/qr_code.rs b/widget/src/qr_code.rs index d176021d..1dc4da7f 100644 --- a/widget/src/qr_code.rs +++ b/widget/src/qr_code.rs @@ -87,7 +87,7 @@ impl<'a, Message, Theme> Widget<Message, Renderer<Theme>> for QRCode<'a> {          let geometry =              self.state.cache.draw(renderer, bounds.size(), |frame| {                  // Scale units to cell size -                frame.scale(f32::from(self.cell_size)); +                frame.scale(self.cell_size);                  // Draw background                  frame.fill_rectangle( diff --git a/widget/src/radio.rs b/widget/src/radio.rs index a85dad63..57acc033 100644 --- a/widget/src/radio.rs +++ b/widget/src/radio.rs @@ -156,7 +156,7 @@ where          self      } -    /// Sets the text [`LineHeight`] of the [`Radio`] button. +    /// Sets the text [`text::LineHeight`] of the [`Radio`] button.      pub fn text_line_height(          mut self,          line_height: impl Into<text::LineHeight>, diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs index 5decfd9d..def28821 100644 --- a/widget/src/scrollable.rs +++ b/widget/src/scrollable.rs @@ -1151,6 +1151,16 @@ impl Viewport {          RelativeOffset { x, y }      } + +    /// Returns the bounds of the current [`Viewport`]. +    pub fn bounds(&self) -> Rectangle { +        self.bounds +    } + +    /// Returns the content bounds of the current [`Viewport`]. +    pub fn content_bounds(&self) -> Rectangle { +        self.content_bounds +    }  }  impl State { diff --git a/widget/src/slider.rs b/widget/src/slider.rs index a9727aa3..2c4a2913 100644 --- a/widget/src/slider.rs +++ b/widget/src/slider.rs @@ -137,8 +137,8 @@ where      }      /// Sets the step size of the [`Slider`]. -    pub fn step(mut self, step: T) -> Self { -        self.step = step; +    pub fn step(mut self, step: impl Into<T>) -> Self { +        self.step = step.into();          self      }  } diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs index aa35b5e4..bfd196fd 100644 --- a/widget/src/text_input.rs +++ b/widget/src/text_input.rs @@ -182,7 +182,7 @@ where          self      } -    /// Sets the [`LineHeight`] of the [`TextInput`]. +    /// Sets the [`text::LineHeight`] of the [`TextInput`].      pub fn line_height(          mut self,          line_height: impl Into<text::LineHeight>, diff --git a/widget/src/text_input/value.rs b/widget/src/text_input/value.rs index cf4da562..d1b056c8 100644 --- a/widget/src/text_input/value.rs +++ b/widget/src/text_input/value.rs @@ -2,7 +2,7 @@ use unicode_segmentation::UnicodeSegmentation;  /// The value of a [`TextInput`].  /// -/// [`TextInput`]: crate::widget::TextInput +/// [`TextInput`]: super::TextInput  // TODO: Reduce allocations, cache results (?)  #[derive(Debug, Clone)]  pub struct Value { diff --git a/widget/src/toggler.rs b/widget/src/toggler.rs index acb9b25d..2440317f 100644 --- a/widget/src/toggler.rs +++ b/widget/src/toggler.rs @@ -109,7 +109,7 @@ where          self      } -    /// Sets the text [`LineHeight`] of the [`Toggler`]. +    /// Sets the text [`text::LineHeight`] of the [`Toggler`].      pub fn text_line_height(          mut self,          line_height: impl Into<text::LineHeight>, @@ -136,9 +136,9 @@ where          self      } -    /// Sets the [`Font`] of the text of the [`Toggler`] +    /// Sets the [`Renderer::Font`] of the text of the [`Toggler`]      /// -    /// [`Font`]: crate::text::Renderer::Font +    /// [`Renderer::Font`]: crate::core::text::Renderer      pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self {          self.font = Some(font.into());          self | 
