From 2a49e415d262f76eb699d48a58b767578d68b516 Mon Sep 17 00:00:00 2001 From: Cory Forsstrom Date: Tue, 27 Jul 2021 15:25:28 -0700 Subject: [PATCH 1/3] Fix overlay in titlebar when initiating drag --- native/src/widget/pane_grid.rs | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index b72172cc98..e073d42ef1 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -452,24 +452,20 @@ 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 - } + 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) } fn draw( From be65a847b05b8b8f09178172639fa2d5d58e52f3 Mon Sep 17 00:00:00 2001 From: Cory Forsstrom Date: Tue, 27 Jul 2021 15:41:45 -0700 Subject: [PATCH 2/3] Prevent body events pane is picked / dragging --- native/src/widget/pane_grid.rs | 13 +++++++++++-- native/src/widget/pane_grid/content.rs | 21 +++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index e073d42ef1..6912d7a9f2 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -452,17 +452,26 @@ where _ => {} } + let picked_pane = self.state.picked_pane().map(|(pane, _)| pane); + self.elements .iter_mut() .zip(layout.children()) - .map(|((_, pane), layout)| { - pane.on_event( + .map(|((pane, content), layout)| { + let is_picked = if let Some(picked_pane) = picked_pane { + picked_pane == *pane + } else { + false + }; + + content.on_event( event.clone(), layout, cursor_position, renderer, clipboard, messages, + is_picked, ) }) .fold(event_status, event::Status::merge) diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index b011039311..bac9fdd4d7 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, + 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) } From 6618c6bdd9633133623a70e948cd8a0dd5fc71aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Wed, 28 Jul 2021 15:36:30 +0700 Subject: [PATCH 3/3] Simplify `is_picked` expression in `pane_grid` --- native/src/widget/pane_grid.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 6912d7a9f2..26a724098c 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -458,11 +458,7 @@ where .iter_mut() .zip(layout.children()) .map(|((pane, content), layout)| { - let is_picked = if let Some(picked_pane) = picked_pane { - picked_pane == *pane - } else { - false - }; + let is_picked = picked_pane == Some(*pane); content.on_event( event.clone(),