summaryrefslogtreecommitdiffstats
path: root/style
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-01-01 15:28:38 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-01-01 15:28:38 +0100
commita7bb7bb2eaaae5a016721788fcaf03c4c7413acd (patch)
tree624c5cc45010ec5f08832f0b8288499267878969 /style
parentf8aef03456ecc185098b6305a8cd0e22f5297d06 (diff)
downloadiced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.tar.gz
iced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.tar.bz2
iced-a7bb7bb2eaaae5a016721788fcaf03c4c7413acd.zip
Implement split highlight on hover for `PaneGrid`
Diffstat (limited to 'style')
-rw-r--r--style/src/lib.rs1
-rw-r--r--style/src/pane_grid.rs51
2 files changed, 52 insertions, 0 deletions
diff --git a/style/src/lib.rs b/style/src/lib.rs
index 7e0a9f49..f09b5f9d 100644
--- a/style/src/lib.rs
+++ b/style/src/lib.rs
@@ -10,6 +10,7 @@ pub mod button;
pub mod checkbox;
pub mod container;
pub mod menu;
+pub mod pane_grid;
pub mod pick_list;
pub mod progress_bar;
pub mod radio;
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)
+ }
+}