diff options
author | 2021-01-01 15:28:38 +0100 | |
---|---|---|
committer | 2021-01-01 15:28:38 +0100 | |
commit | a7bb7bb2eaaae5a016721788fcaf03c4c7413acd (patch) | |
tree | 624c5cc45010ec5f08832f0b8288499267878969 /style/src/pane_grid.rs | |
parent | f8aef03456ecc185098b6305a8cd0e22f5297d06 (diff) | |
download | iced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.tar.gz iced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.tar.bz2 iced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.zip |
Implement split highlight on hover for `PaneGrid`
Diffstat (limited to '')
-rw-r--r-- | style/src/pane_grid.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/style/src/pane_grid.rs b/style/src/pane_grid.rs new file mode 100644 index 00000000..e39ee797 --- /dev/null +++ b/style/src/pane_grid.rs @@ -0,0 +1,51 @@ +//! Let your users split regions of your application and organize layout +//! dynamically. +use iced_core::Color; + +/// A set of rules that dictate the style of a container. +pub trait StyleSheet { + /// The [`Line`] to draw when a split is picked. + fn picked_split(&self) -> Option<Line>; + + /// The [`Line`] to draw when a split is hovered. + fn hovered_split(&self) -> Option<Line>; +} + +/// A line. +/// +/// It is normally used to define the highlight of something, like a split. +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct Line { + /// The [`Color`] of the [`Line`]. + pub color: Color, + + /// The width of the [`Line`]. + pub width: f32, +} + +struct Default; + +impl StyleSheet for Default { + fn picked_split(&self) -> Option<Line> { + None + } + + fn hovered_split(&self) -> Option<Line> { + None + } +} + +impl std::default::Default for Box<dyn StyleSheet> { + fn default() -> Self { + Box::new(Default) + } +} + +impl<T> From<T> for Box<dyn StyleSheet> +where + T: 'static + StyleSheet, +{ + fn from(style: T) -> Self { + Box::new(style) + } +} |