diff options
| author | 2021-07-28 15:47:13 +0700 | |
|---|---|---|
| committer | 2021-07-28 15:47:13 +0700 | |
| commit | a08e4ebccbb72f9cf6fca01047e0b46a482ca9ea (patch) | |
| tree | df1428c36082dc455581f36a523c1f79c1a7399f /native/src/widget | |
| parent | 258621025958ef60d71ad4c4da4fbd8882675ddb (diff) | |
| parent | 6618c6bdd9633133623a70e948cd8a0dd5fc71aa (diff) | |
| download | iced-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
Diffstat (limited to '')
| -rw-r--r-- | native/src/widget/pane_grid.rs | 37 | ||||
| -rw-r--r-- | native/src/widget/pane_grid/content.rs | 21 | 
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)      } | 
