diff options
author | 2022-11-02 17:12:38 -0700 | |
---|---|---|
committer | 2022-11-02 17:12:38 -0700 | |
commit | df7bf55ce162c5523f530a43113194a6c064a220 (patch) | |
tree | d45689beb9d9ab84e9f1dbb87dbeb63d90197f06 /native/src/widget/pane_grid.rs | |
parent | e28c441c693ce9f42d60c98ba6892c6fc78d6724 (diff) | |
download | iced-df7bf55ce162c5523f530a43113194a6c064a220.tar.gz iced-df7bf55ce162c5523f530a43113194a6c064a220.tar.bz2 iced-df7bf55ce162c5523f530a43113194a6c064a220.zip |
Disable drag when maximized
Diffstat (limited to 'native/src/widget/pane_grid.rs')
-rw-r--r-- | native/src/widget/pane_grid.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 1b55537f..a58bfc77 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -221,6 +221,12 @@ where self.style = style.into(); self } + + fn drag_enabled(&self) -> bool { + (!self.elements.is_maximized()) + .then(|| self.on_drag.is_some()) + .unwrap_or_default() + } } impl<'a, Message, Renderer> Widget<Message, Renderer> @@ -296,6 +302,11 @@ where ) -> event::Status { let action = tree.state.downcast_mut::<state::Action>(); + let on_drag = self + .drag_enabled() + .then_some(&self.on_drag) + .unwrap_or(&None); + let event_status = update( action, self.elements.node(self.state), @@ -306,7 +317,7 @@ where self.spacing, self.elements.iter(), &self.on_click, - &self.on_drag, + on_drag, &self.on_resize, ); @@ -361,7 +372,7 @@ where cursor_position, viewport, renderer, - self.on_drag.is_some(), + self.drag_enabled(), ) }) .max() @@ -961,4 +972,9 @@ impl<T> Elements<T> { Elements::Maximized(_, _, node) => node, } } + + /// TODO + pub fn is_maximized(&self) -> bool { + matches!(self, Self::Maximized(..)) + } } |