Invalidate widget tree from Responsive widget
... by introducing a new `invalidate_widgets` method to `Shell`
This commit is contained in:
parent
90c20ac46b
commit
6ab4611a6e
8 changed files with 85 additions and 33 deletions
|
|
@ -9,7 +9,8 @@ use iced_winit::application;
|
|||
use iced_winit::conversion;
|
||||
use iced_winit::futures;
|
||||
use iced_winit::futures::channel::mpsc;
|
||||
use iced_winit::{Cache, Clipboard, Debug, Proxy, Settings};
|
||||
use iced_winit::user_interface;
|
||||
use iced_winit::{Clipboard, Debug, Proxy, Settings};
|
||||
|
||||
use glutin::window::Window;
|
||||
use std::mem::ManuallyDrop;
|
||||
|
|
@ -177,7 +178,7 @@ async fn run_instance<A, E, C>(
|
|||
let mut user_interface =
|
||||
ManuallyDrop::new(application::build_user_interface(
|
||||
&mut application,
|
||||
Cache::default(),
|
||||
user_interface::Cache::default(),
|
||||
&mut renderer,
|
||||
state.logical_size(),
|
||||
&mut debug,
|
||||
|
|
@ -198,7 +199,7 @@ async fn run_instance<A, E, C>(
|
|||
|
||||
debug.event_processing_started();
|
||||
|
||||
let statuses = user_interface.update(
|
||||
let (interface_state, statuses) = user_interface.update(
|
||||
&events,
|
||||
state.cursor_position(),
|
||||
&mut renderer,
|
||||
|
|
@ -212,7 +213,12 @@ async fn run_instance<A, E, C>(
|
|||
runtime.broadcast(event);
|
||||
}
|
||||
|
||||
if !messages.is_empty() {
|
||||
if !messages.is_empty()
|
||||
|| matches!(
|
||||
interface_state,
|
||||
user_interface::State::Outdated
|
||||
)
|
||||
{
|
||||
let cache =
|
||||
ManuallyDrop::into_inner(user_interface).into_cache();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue