Remove interior mutability
Nested doesn't need to implement Overlay trait, it can be be used mutably in user interface so we don't need interior mutability.
This commit is contained in:
parent
3e6f6eedcb
commit
83140d6049
2 changed files with 43 additions and 81 deletions
|
|
@ -8,7 +8,7 @@ use crate::core::renderer;
|
|||
use crate::core::widget;
|
||||
use crate::core::window;
|
||||
use crate::core::{Clipboard, Point, Rectangle, Size};
|
||||
use crate::core::{Element, Layout, Overlay, Shell};
|
||||
use crate::core::{Element, Layout, Shell};
|
||||
|
||||
/// A set of interactive graphical elements with a specific [`Layout`].
|
||||
///
|
||||
|
|
@ -261,22 +261,23 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
let base_cursor = manual_overlay
|
||||
.as_ref()
|
||||
.filter(|overlay| {
|
||||
cursor
|
||||
.position()
|
||||
.map(|cursor_position| {
|
||||
overlay.is_over(
|
||||
Layout::new(&layout),
|
||||
renderer,
|
||||
cursor_position,
|
||||
)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
let base_cursor = if manual_overlay
|
||||
.as_mut()
|
||||
.and_then(|overlay| {
|
||||
cursor.position().map(|cursor_position| {
|
||||
overlay.is_over(
|
||||
Layout::new(&layout),
|
||||
renderer,
|
||||
cursor_position,
|
||||
)
|
||||
})
|
||||
})
|
||||
.map(|_| mouse::Cursor::Unavailable)
|
||||
.unwrap_or(cursor);
|
||||
.unwrap_or_default()
|
||||
{
|
||||
mouse::Cursor::Unavailable
|
||||
} else {
|
||||
cursor
|
||||
};
|
||||
|
||||
self.overlay = Some(layout);
|
||||
|
||||
|
|
@ -434,7 +435,7 @@ where
|
|||
|
||||
let viewport = Rectangle::with_size(self.bounds);
|
||||
|
||||
let base_cursor = if let Some(overlay) = self
|
||||
let base_cursor = if let Some(mut overlay) = self
|
||||
.root
|
||||
.as_widget_mut()
|
||||
.overlay(&mut self.state, Layout::new(&self.base), renderer)
|
||||
|
|
@ -503,7 +504,7 @@ where
|
|||
root.as_widget_mut()
|
||||
.overlay(&mut self.state, Layout::new(base), renderer)
|
||||
.map(overlay::Nested::new)
|
||||
.map(|overlay| {
|
||||
.map(|mut overlay| {
|
||||
let overlay_interaction = overlay.mouse_interaction(
|
||||
Layout::new(layout),
|
||||
cursor,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue