Disable drag when maximized

This commit is contained in:
Cory Forsstrom 2022-11-02 17:12:38 -07:00
parent e28c441c69
commit df7bf55ce1

View file

@ -221,6 +221,12 @@ where
self.style = style.into(); self.style = style.into();
self 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> impl<'a, Message, Renderer> Widget<Message, Renderer>
@ -296,6 +302,11 @@ where
) -> event::Status { ) -> event::Status {
let action = tree.state.downcast_mut::<state::Action>(); 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( let event_status = update(
action, action,
self.elements.node(self.state), self.elements.node(self.state),
@ -306,7 +317,7 @@ where
self.spacing, self.spacing,
self.elements.iter(), self.elements.iter(),
&self.on_click, &self.on_click,
&self.on_drag, on_drag,
&self.on_resize, &self.on_resize,
); );
@ -361,7 +372,7 @@ where
cursor_position, cursor_position,
viewport, viewport,
renderer, renderer,
self.on_drag.is_some(), self.drag_enabled(),
) )
}) })
.max() .max()
@ -961,4 +972,9 @@ impl<T> Elements<T> {
Elements::Maximized(_, _, node) => node, Elements::Maximized(_, _, node) => node,
} }
} }
/// TODO
pub fn is_maximized(&self) -> bool {
matches!(self, Self::Maximized(..))
}
} }