diff options
author | 2022-01-11 14:12:28 +0700 | |
---|---|---|
committer | 2022-01-11 14:12:28 +0700 | |
commit | 810e086728e938d1d12758c7b486c1e371127349 (patch) | |
tree | a598aab256c113bf7e21ba198d22a965ad554c03 /native/src/user_interface.rs | |
parent | 6ab4611a6eec9c4bb4ca1ff1bb580bb7edf49add (diff) | |
download | iced-810e086728e938d1d12758c7b486c1e371127349.tar.gz iced-810e086728e938d1d12758c7b486c1e371127349.tar.bz2 iced-810e086728e938d1d12758c7b486c1e371127349.zip |
Introduce `Renderer` argument to `mouse_interaction` and `on_event`
Diffstat (limited to 'native/src/user_interface.rs')
-rw-r--r-- | native/src/user_interface.rs | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 1c78b754..b6bed5ed 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -205,7 +205,7 @@ where let mut state = State::Updated; let (base_cursor, overlay_statuses) = if let Some(mut overlay) = - self.root.overlay(Layout::new(&self.base.layout)) + self.root.overlay(Layout::new(&self.base.layout), renderer) { let bounds = self.bounds; @@ -391,7 +391,7 @@ where let viewport = Rectangle::with_size(self.bounds); if let Some(mut overlay) = - self.root.overlay(Layout::new(&self.base.layout)) + self.root.overlay(Layout::new(&self.base.layout), renderer) { let layer = Self::overlay_layer( self.overlay.take(), @@ -432,6 +432,7 @@ where Layout::new(&self.base.layout), cursor_position, &viewport, + renderer, ); let Self { @@ -449,30 +450,33 @@ where overlay .as_ref() .and_then(|layer| { - root.overlay(Layout::new(&base.layout)).map(|overlay| { - let overlay_interaction = overlay.mouse_interaction( - Layout::new(&layer.layout), - cursor_position, - &viewport, - ); - - let overlay_bounds = layer.layout.bounds(); - - renderer.with_layer(overlay_bounds, |renderer| { - overlay.draw( - renderer, - &renderer::Style::default(), + root.overlay(Layout::new(&base.layout), renderer).map( + |overlay| { + let overlay_interaction = overlay.mouse_interaction( Layout::new(&layer.layout), cursor_position, + &viewport, + renderer, ); - }); - if overlay_bounds.contains(cursor_position) { - overlay_interaction - } else { - base_interaction - } - }) + let overlay_bounds = layer.layout.bounds(); + + renderer.with_layer(overlay_bounds, |renderer| { + overlay.draw( + renderer, + &renderer::Style::default(), + Layout::new(&layer.layout), + cursor_position, + ); + }); + + if overlay_bounds.contains(cursor_position) { + overlay_interaction + } else { + base_interaction + } + }, + ) }) .unwrap_or(base_interaction) } |