Invalidate widget tree in Responsive after a window::Event::Resized

This is a pessimistic approach! Ideally, we should be able to recreate
only the contents of the `Responsive` widget in `Widget::layout`, but
given `view` is impure we have to trigger a brand new `view` call.

The persistent widget tree should make this easier.
This commit is contained in:
Héctor Ramón Jiménez 2022-01-20 13:43:45 +07:00
parent a3744ec97a
commit 0e475b008f
No known key found for this signature in database
GPG key ID: 140CC052C94F138E

View file

@ -6,6 +6,7 @@ use iced_native::layout::{self, Layout};
use iced_native::mouse;
use iced_native::overlay;
use iced_native::renderer;
use iced_native::window;
use iced_native::{
Clipboard, Element, Hasher, Length, Point, Rectangle, Shell, Size, Widget,
};
@ -100,7 +101,10 @@ where
) -> event::Status {
let mut internal = self.0.borrow_mut();
if internal.state.last_size != Some(internal.state.last_layout.size()) {
if matches!(event, Event::Window(window::Event::Resized { .. }))
|| internal.state.last_size
!= Some(internal.state.last_layout.size())
{
shell.invalidate_widgets();
}