diff options
| author | 2021-07-27 15:41:45 -0700 | |
|---|---|---|
| committer | 2021-07-27 15:41:45 -0700 | |
| commit | be65a847b05b8b8f09178172639fa2d5d58e52f3 (patch) | |
| tree | d477d3df666994891c80908b153de8e39be28d9d /native/src | |
| parent | 2a49e415d262f76eb699d48a58b767578d68b516 (diff) | |
| download | iced-be65a847b05b8b8f09178172639fa2d5d58e52f3.tar.gz iced-be65a847b05b8b8f09178172639fa2d5d58e52f3.tar.bz2 iced-be65a847b05b8b8f09178172639fa2d5d58e52f3.zip | |
Prevent body events pane is picked / dragging
Diffstat (limited to '')
| -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)      } | 
