summaryrefslogtreecommitdiffstats
path: root/widget/src/pane_grid/controls.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-08-24 01:58:53 +0200
committerLibravatar GitHub <noreply@github.com>2024-08-24 01:58:53 +0200
commit84e766fd0022783f36f02c99b150a79753e74791 (patch)
tree710ab595a6bf9fd18d7d42ece01a0346e780ebec /widget/src/pane_grid/controls.rs
parentbb6fa4292433c015cb5b69a2c4f7d7f0b92339c6 (diff)
parent3a434c9505bcc1a9ce71db1d69f77c3374b076cb (diff)
downloadiced-84e766fd0022783f36f02c99b150a79753e74791.tar.gz
iced-84e766fd0022783f36f02c99b150a79753e74791.tar.bz2
iced-84e766fd0022783f36f02c99b150a79753e74791.zip
Merge pull request #2555 from mtkennerly/feature/pane-grid-compact-controls
Add compact variant for pane grid controls
Diffstat (limited to 'widget/src/pane_grid/controls.rs')
-rw-r--r--widget/src/pane_grid/controls.rs59
1 files changed, 59 insertions, 0 deletions
diff --git a/widget/src/pane_grid/controls.rs b/widget/src/pane_grid/controls.rs
new file mode 100644
index 00000000..13b57acb
--- /dev/null
+++ b/widget/src/pane_grid/controls.rs
@@ -0,0 +1,59 @@
+use crate::container;
+use crate::core::{self, Element};
+
+/// The controls of a [`Pane`].
+///
+/// [`Pane`]: super::Pane
+#[allow(missing_debug_implementations)]
+pub struct Controls<
+ 'a,
+ Message,
+ Theme = crate::Theme,
+ Renderer = crate::Renderer,
+> where
+ Theme: container::Catalog,
+ Renderer: core::Renderer,
+{
+ pub(super) full: Element<'a, Message, Theme, Renderer>,
+ pub(super) compact: Option<Element<'a, Message, Theme, Renderer>>,
+}
+
+impl<'a, Message, Theme, Renderer> Controls<'a, Message, Theme, Renderer>
+where
+ Theme: container::Catalog,
+ Renderer: core::Renderer,
+{
+ /// Creates a new [`Controls`] with the given content.
+ pub fn new(
+ content: impl Into<Element<'a, Message, Theme, Renderer>>,
+ ) -> Self {
+ Self {
+ full: content.into(),
+ compact: None,
+ }
+ }
+
+ /// Creates a new [`Controls`] with a full and compact variant.
+ /// If there is not enough room to show the full variant without overlap,
+ /// then the compact variant will be shown instead.
+ pub fn dynamic(
+ full: impl Into<Element<'a, Message, Theme, Renderer>>,
+ compact: impl Into<Element<'a, Message, Theme, Renderer>>,
+ ) -> Self {
+ Self {
+ full: full.into(),
+ compact: Some(compact.into()),
+ }
+ }
+}
+
+impl<'a, Message, Theme, Renderer> From<Element<'a, Message, Theme, Renderer>>
+ for Controls<'a, Message, Theme, Renderer>
+where
+ Theme: container::Catalog,
+ Renderer: core::Renderer,
+{
+ fn from(value: Element<'a, Message, Theme, Renderer>) -> Self {
+ Self::new(value)
+ }
+}