Fix layout translation in overlay::Group
This bug produced improper positioning of overlays of elements inside a `Scrollable`.
This commit is contained in:
parent
a28bc3eaf0
commit
a50cc32d09
7 changed files with 33 additions and 18 deletions
|
|
@ -6,7 +6,9 @@ use crate::mouse;
|
|||
use crate::renderer;
|
||||
use crate::widget;
|
||||
use crate::window;
|
||||
use crate::{Clipboard, Element, Layout, Point, Rectangle, Shell, Size};
|
||||
use crate::{
|
||||
Clipboard, Element, Layout, Point, Rectangle, Shell, Size, Vector,
|
||||
};
|
||||
|
||||
/// A set of interactive graphical elements with a specific [`Layout`].
|
||||
///
|
||||
|
|
@ -203,7 +205,7 @@ where
|
|||
let bounds = self.bounds;
|
||||
|
||||
let mut overlay = manual_overlay.as_mut().unwrap();
|
||||
let mut layout = overlay.layout(renderer, bounds);
|
||||
let mut layout = overlay.layout(renderer, bounds, Vector::ZERO);
|
||||
let mut event_statuses = Vec::new();
|
||||
|
||||
for event in events.iter().cloned() {
|
||||
|
|
@ -252,7 +254,7 @@ where
|
|||
overlay = manual_overlay.as_mut().unwrap();
|
||||
|
||||
shell.revalidate_layout(|| {
|
||||
layout = overlay.layout(renderer, bounds);
|
||||
layout = overlay.layout(renderer, bounds, Vector::ZERO);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -434,10 +436,9 @@ where
|
|||
.as_widget_mut()
|
||||
.overlay(&mut self.state, Layout::new(&self.base), renderer)
|
||||
{
|
||||
let overlay_layout = self
|
||||
.overlay
|
||||
.take()
|
||||
.unwrap_or_else(|| overlay.layout(renderer, self.bounds));
|
||||
let overlay_layout = self.overlay.take().unwrap_or_else(|| {
|
||||
overlay.layout(renderer, self.bounds, Vector::ZERO)
|
||||
});
|
||||
|
||||
let new_cursor_position =
|
||||
if overlay_layout.bounds().contains(cursor_position) {
|
||||
|
|
@ -538,7 +539,8 @@ where
|
|||
renderer,
|
||||
) {
|
||||
if self.overlay.is_none() {
|
||||
self.overlay = Some(overlay.layout(renderer, self.bounds));
|
||||
self.overlay =
|
||||
Some(overlay.layout(renderer, self.bounds, Vector::ZERO));
|
||||
}
|
||||
|
||||
overlay.operate(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue