Add support for graceful exits in Application
- `Settings` now contains an `exit_on_close_request` field - `Application` has a new `should_exit` method
This commit is contained in:
parent
00de9d0c9b
commit
67db13ff7c
5 changed files with 57 additions and 9 deletions
|
|
@ -184,6 +184,13 @@ pub trait Application: Sized {
|
|||
1.0
|
||||
}
|
||||
|
||||
/// Returns whether the [`Application`] should be terminated.
|
||||
///
|
||||
/// By default, it returns `false`.
|
||||
fn should_exit(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
/// Runs the [`Application`].
|
||||
///
|
||||
/// On native platforms, this method will take control of the current thread
|
||||
|
|
@ -284,6 +291,10 @@ where
|
|||
fn scale_factor(&self) -> f64 {
|
||||
self.0.scale_factor()
|
||||
}
|
||||
|
||||
fn should_exit(&self) -> bool {
|
||||
self.0.should_exit()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ pub struct Settings<Flags> {
|
|||
/// The default value is 20.
|
||||
pub default_text_size: u16,
|
||||
|
||||
/// Whether the [`Application`] should exit when the user requests the
|
||||
/// window to close (e.g. the user presses the close button).
|
||||
pub exit_on_close_request: bool,
|
||||
|
||||
/// If set to true, the renderer will try to perform antialiasing for some
|
||||
/// primitives.
|
||||
///
|
||||
|
|
@ -46,10 +50,11 @@ impl<Flags> Settings<Flags> {
|
|||
|
||||
Self {
|
||||
flags,
|
||||
antialiasing: default_settings.antialiasing,
|
||||
window: default_settings.window,
|
||||
default_font: default_settings.default_font,
|
||||
default_text_size: default_settings.default_text_size,
|
||||
window: default_settings.window,
|
||||
exit_on_close_request: default_settings.exit_on_close_request,
|
||||
antialiasing: default_settings.antialiasing,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -61,10 +66,11 @@ where
|
|||
fn default() -> Self {
|
||||
Self {
|
||||
flags: Default::default(),
|
||||
antialiasing: Default::default(),
|
||||
window: Default::default(),
|
||||
default_font: Default::default(),
|
||||
default_text_size: 20,
|
||||
window: Default::default(),
|
||||
exit_on_close_request: true,
|
||||
antialiasing: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -75,6 +81,7 @@ impl<Flags> From<Settings<Flags>> for iced_winit::Settings<Flags> {
|
|||
iced_winit::Settings {
|
||||
window: settings.window.into(),
|
||||
flags: settings.flags,
|
||||
exit_on_close_request: settings.exit_on_close_request,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue