summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2021-07-28 15:47:13 +0700
committerLibravatar GitHub <noreply@github.com>2021-07-28 15:47:13 +0700
commita08e4ebccbb72f9cf6fca01047e0b46a482ca9ea (patch)
treedf1428c36082dc455581f36a523c1f79c1a7399f
parent258621025958ef60d71ad4c4da4fbd8882675ddb (diff)
parent6618c6bdd9633133623a70e948cd8a0dd5fc71aa (diff)
downloadiced-a08e4ebccbb72f9cf6fca01047e0b46a482ca9ea.tar.gz
iced-a08e4ebccbb72f9cf6fca01047e0b46a482ca9ea.tar.bz2
iced-a08e4ebccbb72f9cf6fca01047e0b46a482ca9ea.zip
Merge pull request #971 from tarkah/fix/pane-dragging-overlay
fix: allow titlebar overlays to close when dragging pane
-rw-r--r--native/src/widget/pane_grid.rs37
-rw-r--r--native/src/widget/pane_grid/content.rs21
2 files changed, 32 insertions, 26 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs
index b72172cc..26a72409 100644
--- a/native/src/widget/pane_grid.rs
+++ b/native/src/widget/pane_grid.rs
@@ -452,24 +452,25 @@ where
_ => {}
}
- if self.state.picked_pane().is_none() {
- self.elements
- .iter_mut()
- .zip(layout.children())
- .map(|((_, pane), layout)| {
- pane.on_event(
- event.clone(),
- layout,
- cursor_position,
- renderer,
- clipboard,
- messages,
- )
- })
- .fold(event_status, event::Status::merge)
- } else {
- event::Status::Captured
- }
+ let picked_pane = self.state.picked_pane().map(|(pane, _)| pane);
+
+ self.elements
+ .iter_mut()
+ .zip(layout.children())
+ .map(|((pane, content), layout)| {
+ let is_picked = picked_pane == Some(*pane);
+
+ content.on_event(
+ event.clone(),
+ layout,
+ cursor_position,
+ renderer,
+ clipboard,
+ messages,
+ is_picked,
+ )
+ })
+ .fold(event_status, event::Status::merge)
}
fn draw(
diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs
index b0110393..bac9fdd4 100644
--- a/native/src/widget/pane_grid/content.rs
+++ b/native/src/widget/pane_grid/content.rs
@@ -149,6 +149,7 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
messages: &mut Vec<Message>,
+ is_picked: bool,
) -> event::Status {
let mut event_status = event::Status::Ignored;
@@ -169,14 +170,18 @@ where
layout
};
- let body_status = self.body.on_event(
- event,
- body_layout,
- cursor_position,
- renderer,
- clipboard,
- messages,
- );
+ let body_status = if is_picked {
+ event::Status::Ignored
+ } else {
+ self.body.on_event(
+ event,
+ body_layout,
+ cursor_position,
+ renderer,
+ clipboard,
+ messages,
+ )
+ };
event_status.merge(body_status)
}