summaryrefslogtreecommitdiffstats
path: root/style
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-05-19 17:16:22 +0200
committerLibravatar GitHub <noreply@github.com>2023-05-19 17:16:22 +0200
commit640e13943c04754ef74e11db470b6c9470640623 (patch)
treef2163bb2cbe7e26ecdd78035203181e42d8a19cb /style
parentcc5d11f1a6fca90ea57e3fb3a69587c65281b6b9 (diff)
parent9b5f32ee403c8b0730e3bac2b48aab6b87d7b653 (diff)
downloadiced-640e13943c04754ef74e11db470b6c9470640623.tar.gz
iced-640e13943c04754ef74e11db470b6c9470640623.tar.bz2
iced-640e13943c04754ef74e11db470b6c9470640623.zip
Merge pull request #1856 from jhff/pane_grid_split_with_dragged_pane
[Feature] Enhance PaneGrid to split panes by drag & drop
Diffstat (limited to 'style')
-rw-r--r--style/src/pane_grid.rs38
-rw-r--r--style/src/theme.rs19
2 files changed, 46 insertions, 11 deletions
diff --git a/style/src/pane_grid.rs b/style/src/pane_grid.rs
index fd8fc05f..c1002725 100644
--- a/style/src/pane_grid.rs
+++ b/style/src/pane_grid.rs
@@ -1,16 +1,17 @@
//! Change the appearance of a pane grid.
-use iced_core::Color;
+use iced_core::{Background, Color};
-/// A set of rules that dictate the style of a container.
-pub trait StyleSheet {
- /// The supported style of the [`StyleSheet`].
- type Style: Default;
-
- /// The [`Line`] to draw when a split is picked.
- fn picked_split(&self, style: &Self::Style) -> Option<Line>;
-
- /// The [`Line`] to draw when a split is hovered.
- fn hovered_split(&self, style: &Self::Style) -> Option<Line>;
+/// The appearance of the hovered region of a pane grid.
+#[derive(Debug, Clone, Copy)]
+pub struct Appearance {
+ /// The [`Background`] of the hovered pane region.
+ pub background: Background,
+ /// The border width of the hovered pane region.
+ pub border_width: f32,
+ /// The border [`Color`] of the hovered pane region.
+ pub border_color: Color,
+ /// The border radius of the hovered pane region.
+ pub border_radius: f32,
}
/// A line.
@@ -24,3 +25,18 @@ pub struct Line {
/// The width of the [`Line`].
pub width: f32,
}
+
+/// A set of rules that dictate the style of a container.
+pub trait StyleSheet {
+ /// The supported style of the [`StyleSheet`].
+ type Style: Default;
+
+ /// The [`Region`] to draw when a pane is hovered.
+ fn hovered_region(&self, style: &Self::Style) -> Appearance;
+
+ /// The [`Line`] to draw when a split is picked.
+ fn picked_split(&self, style: &Self::Style) -> Option<Line>;
+
+ /// The [`Line`] to draw when a split is hovered.
+ fn hovered_split(&self, style: &Self::Style) -> Option<Line>;
+}
diff --git a/style/src/theme.rs b/style/src/theme.rs
index 477bd27b..6299975d 100644
--- a/style/src/theme.rs
+++ b/style/src/theme.rs
@@ -715,6 +715,25 @@ pub enum PaneGrid {
impl pane_grid::StyleSheet for Theme {
type Style = PaneGrid;
+ fn hovered_region(&self, style: &Self::Style) -> pane_grid::Appearance {
+ match style {
+ PaneGrid::Default => {
+ let palette = self.extended_palette();
+
+ pane_grid::Appearance {
+ background: Background::Color(Color {
+ a: 0.5,
+ ..palette.primary.base.color
+ }),
+ border_width: 2.0,
+ border_color: palette.primary.strong.color,
+ border_radius: 0.0,
+ }
+ }
+ PaneGrid::Custom(custom) => custom.hovered_region(self),
+ }
+ }
+
fn picked_split(&self, style: &Self::Style) -> Option<pane_grid::Line> {
match style {
PaneGrid::Default => {