Revert window::close producing a window::Id

Instead, subscribing to `window::close_events` is
preferable; since most use cases will want to react
to the user closing a window as well.
This commit is contained in:
Héctor Ramón Jiménez 2024-08-12 05:50:22 +02:00
parent 22fc5ce0ea
commit 8b45d620d0
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
4 changed files with 7 additions and 12 deletions

View file

@ -37,7 +37,7 @@ impl Events {
} }
Message::EventOccurred(event) => { Message::EventOccurred(event) => {
if let Event::Window(window::Event::CloseRequested) = event { if let Event::Window(window::Event::CloseRequested) = event {
window::get_latest().and_then(window::close).discard() window::get_latest().and_then(window::close)
} else { } else {
Task::none() Task::none()
} }
@ -47,9 +47,7 @@ impl Events {
Task::none() Task::none()
} }
Message::Exit => { Message::Exit => window::get_latest().and_then(window::close),
window::get_latest().and_then(window::close).discard()
}
} }
} }

View file

@ -20,9 +20,7 @@ enum Message {
impl Exit { impl Exit {
fn update(&mut self, message: Message) -> Task<Message> { fn update(&mut self, message: Message) -> Task<Message> {
match message { match message {
Message::Confirm => { Message::Confirm => window::get_latest().and_then(window::close),
window::get_latest().and_then(window::close).discard()
}
Message::Exit => { Message::Exit => {
self.show_confirm = true; self.show_confirm = true;

View file

@ -24,7 +24,7 @@ pub enum Action {
Open(Id, Settings, oneshot::Sender<Id>), Open(Id, Settings, oneshot::Sender<Id>),
/// Close the window and exits the application. /// Close the window and exits the application.
Close(Id, oneshot::Sender<Id>), Close(Id),
/// Gets the [`Id`] of the oldest window. /// Gets the [`Id`] of the oldest window.
GetOldest(oneshot::Sender<Option<Id>>), GetOldest(oneshot::Sender<Option<Id>>),
@ -230,8 +230,8 @@ pub fn open(settings: Settings) -> (Id, Task<Id>) {
} }
/// Closes the window with `id`. /// Closes the window with `id`.
pub fn close(id: Id) -> Task<Id> { pub fn close<T>(id: Id) -> Task<T> {
task::oneshot(|channel| crate::Action::Window(Action::Close(id, channel))) task::effect(crate::Action::Window(Action::Close(id)))
} }
/// Gets the window [`Id`] of the oldest window. /// Gets the window [`Id`] of the oldest window.

View file

@ -1211,10 +1211,9 @@ fn run_action<P, C>(
*is_window_opening = true; *is_window_opening = true;
} }
window::Action::Close(id, channel) => { window::Action::Close(id) => {
let _ = window_manager.remove(id); let _ = window_manager.remove(id);
let _ = ui_caches.remove(&id); let _ = ui_caches.remove(&id);
let _ = channel.send(id);
events.push(( events.push((
id, id,