diff options
Diffstat (limited to 'native/src')
-rw-r--r-- | native/src/widget/pane_grid.rs | 13 | ||||
-rw-r--r-- | 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 e073d42e..6912d7a9 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 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) } |