diff options
| author | 2021-10-28 15:41:12 +0700 | |
|---|---|---|
| committer | 2021-10-28 15:41:12 +0700 | |
| commit | fe4dfeafdbc8f427bd351f394d27f606a3843b44 (patch) | |
| tree | 4ab6cc372315c0f3fda7d06c4a337db59cd64d0f /native/src/widget | |
| parent | 687c35e052a1057042fc8ddf4968c3fa35cc6bcf (diff) | |
| download | iced-fe4dfeafdbc8f427bd351f394d27f606a3843b44.tar.gz iced-fe4dfeafdbc8f427bd351f394d27f606a3843b44.tar.bz2 iced-fe4dfeafdbc8f427bd351f394d27f606a3843b44.zip  | |
Wire up style to `PickList` and `overlay::Menu`
Diffstat (limited to '')
| -rw-r--r-- | native/src/widget/pick_list.rs | 46 | 
1 files changed, 15 insertions, 31 deletions
diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index 761cfcc8..81bd41c4 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -6,7 +6,6 @@ use crate::mouse;  use crate::overlay;  use crate::overlay::menu::{self, Menu};  use crate::renderer; -use crate::text;  use crate::touch;  use crate::{      Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, @@ -14,9 +13,11 @@ use crate::{  };  use std::borrow::Cow; +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: self::Renderer> +pub struct PickList<'a, T, Message, Renderer: renderer::Text>  where      [T]: ToOwned<Owned = Vec<T>>,  { @@ -33,7 +34,7 @@ where      padding: Padding,      text_size: Option<u16>,      font: Renderer::Font, -    style: <Renderer as self::Renderer>::Style, +    style_sheet: Box<dyn StyleSheet>,  }  /// The local state of a [`PickList`]. @@ -58,12 +59,15 @@ impl<T> Default for State<T> {      }  } -impl<'a, T: 'a, Message, Renderer: self::Renderer> +impl<'a, T: 'a, Message, Renderer: renderer::Text>      PickList<'a, T, Message, Renderer>  where      T: ToString + Eq,      [T]: ToOwned<Owned = Vec<T>>,  { +    /// The default padding of a [`PickList`]. +    pub const DEFAULT_PADDING: Padding = Padding::new(5); +      /// Creates a new [`PickList`] with the given [`State`], a list of options,      /// the current selected value, and the message to produce when an option is      /// selected. @@ -93,9 +97,9 @@ where              selected,              width: Length::Shrink,              text_size: None, -            padding: Renderer::DEFAULT_PADDING, +            padding: Self::DEFAULT_PADDING,              font: Default::default(), -            style: Default::default(), +            style_sheet: Default::default(),          }      } @@ -132,9 +136,9 @@ where      /// Sets the style of the [`PickList`].      pub fn style(          mut self, -        style: impl Into<<Renderer as self::Renderer>::Style>, +        style_sheet: impl Into<Box<dyn StyleSheet>>,      ) -> Self { -        self.style = style.into(); +        self.style_sheet = style_sheet.into();          self      }  } @@ -145,7 +149,7 @@ where      T: Clone + ToString + Eq,      [T]: ToOwned<Owned = Vec<T>>,      Message: 'static, -    Renderer: self::Renderer + 'a, +    Renderer: renderer::Text + 'a,  {      fn width(&self) -> Length {          self.width @@ -328,7 +332,6 @@ where          cursor_position: Point,          _viewport: &Rectangle,      ) { -        // TODO      }      fn overlay( @@ -347,7 +350,7 @@ where              .width(bounds.width.round() as u16)              .padding(self.padding)              .font(self.font) -            .style(Renderer::menu_style(&self.style)); +            .style(self.style_sheet.menu());              if let Some(text_size) = self.text_size {                  menu = menu.text_size(text_size); @@ -360,31 +363,12 @@ where      }  } -/// The renderer of a [`PickList`]. -/// -/// Your [renderer] will need to implement this trait before being -/// able to use a [`PickList`] in your user interface. -/// -/// [renderer]: crate::renderer -pub trait Renderer: renderer::Text + menu::Renderer { -    /// The default padding of a [`PickList`]. -    const DEFAULT_PADDING: Padding; - -    /// The [`PickList`] style supported by this renderer. -    type Style: Default; - -    /// Returns the style of the [`Menu`] of the [`PickList`]. -    fn menu_style( -        style: &<Self as Renderer>::Style, -    ) -> <Self as menu::Renderer>::Style; -} -  impl<'a, T: 'a, Message, Renderer> Into<Element<'a, Message, Renderer>>      for PickList<'a, T, Message, Renderer>  where      T: Clone + ToString + Eq,      [T]: ToOwned<Owned = Vec<T>>, -    Renderer: self::Renderer + 'a, +    Renderer: renderer::Text + 'a,      Message: 'static,  {      fn into(self) -> Element<'a, Message, Renderer> {  | 
