Fix Overlay composition
Translations were not easily composable.
This commit is contained in:
parent
7dd32f3be4
commit
25006b9c6f
10 changed files with 70 additions and 26 deletions
|
|
@ -4,7 +4,9 @@ use crate::core::mouse;
|
|||
use crate::core::overlay;
|
||||
use crate::core::renderer;
|
||||
use crate::core::widget;
|
||||
use crate::core::{Clipboard, Event, Layout, Point, Rectangle, Shell, Size};
|
||||
use crate::core::{
|
||||
Clipboard, Event, Layout, Point, Rectangle, Shell, Size, Vector,
|
||||
};
|
||||
|
||||
/// An overlay container that displays nested overlays
|
||||
#[allow(missing_debug_implementations)]
|
||||
|
|
@ -34,18 +36,18 @@ where
|
|||
renderer: &Renderer,
|
||||
bounds: Size,
|
||||
position: Point,
|
||||
translation: Vector,
|
||||
) -> layout::Node {
|
||||
fn recurse<Message, Renderer>(
|
||||
element: &mut overlay::Element<'_, Message, Renderer>,
|
||||
renderer: &Renderer,
|
||||
bounds: Size,
|
||||
position: Point,
|
||||
translation: Vector,
|
||||
) -> layout::Node
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
{
|
||||
let translation = position - Point::ORIGIN;
|
||||
|
||||
let node = element.layout(renderer, bounds, translation);
|
||||
|
||||
if let Some(mut nested) =
|
||||
|
|
@ -55,7 +57,13 @@ where
|
|||
node.size(),
|
||||
vec![
|
||||
node,
|
||||
recurse(&mut nested, renderer, bounds, position),
|
||||
recurse(
|
||||
&mut nested,
|
||||
renderer,
|
||||
bounds,
|
||||
position,
|
||||
translation,
|
||||
),
|
||||
],
|
||||
)
|
||||
} else {
|
||||
|
|
@ -63,7 +71,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
recurse(&mut self.overlay, renderer, bounds, position)
|
||||
recurse(&mut self.overlay, renderer, bounds, position, translation)
|
||||
}
|
||||
|
||||
/// Draws the [`Nested`] overlay using the associated `Renderer`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue