Split Shell::request_redraw into two different methods

This commit is contained in:
Héctor Ramón Jiménez 2024-10-25 15:40:05 +02:00
parent 7fbc195b11
commit 752403d70c
No known key found for this signature in database
GPG key ID: 4C07CEC81AFA161F
15 changed files with 89 additions and 114 deletions

View file

@ -7,7 +7,7 @@ use iced::event;
use iced::mouse;
use iced::time::Instant;
use iced::widget::canvas;
use iced::window::{self, RedrawRequest};
use iced::window;
use iced::{
Background, Color, Element, Event, Length, Radians, Rectangle, Renderer,
Size, Vector,
@ -283,7 +283,7 @@ where
);
state.cache.clear();
shell.request_redraw(RedrawRequest::NextFrame);
shell.request_redraw();
}
event::Status::Ignored

View file

@ -6,7 +6,7 @@ use iced::advanced::{self, Clipboard, Layout, Shell, Widget};
use iced::event;
use iced::mouse;
use iced::time::Instant;
use iced::window::{self, RedrawRequest};
use iced::window;
use iced::{Background, Color, Element, Event, Length, Rectangle, Size};
use super::easing::{self, Easing};
@ -192,7 +192,7 @@ where
if let Event::Window(window::Event::RedrawRequested(now)) = event {
*state = state.timed_transition(self.cycle_duration, now);
shell.request_redraw(RedrawRequest::NextFrame);
shell.request_redraw();
}
event::Status::Ignored

View file

@ -500,8 +500,6 @@ mod toast {
shell: &mut Shell<'_, Message>,
) -> event::Status {
if let Event::Window(window::Event::RedrawRequested(now)) = &event {
let mut next_redraw: Option<window::RedrawRequest> = None;
self.instants.iter_mut().enumerate().for_each(
|(index, maybe_instant)| {
if let Some(instant) = maybe_instant.as_mut() {
@ -512,22 +510,12 @@ mod toast {
if remaining == Duration::ZERO {
maybe_instant.take();
shell.publish((self.on_close)(index));
next_redraw =
Some(window::RedrawRequest::NextFrame);
} else {
let redraw_at =
window::RedrawRequest::At(*now + remaining);
next_redraw = next_redraw
.map(|redraw| redraw.min(redraw_at))
.or(Some(redraw_at));
shell.request_redraw_at(*now + remaining);
}
}
},
);
if let Some(redraw) = next_redraw {
shell.request_redraw(redraw);
}
}
let viewport = layout.bounds();