2020-02-28 13:34:34 +11:00
|
|
|
//! A module to house the traits used throughout this window
|
|
|
|
//! module. There's a few different ones, and it's just... cleaner, if
|
|
|
|
//! it's organized here.
|
|
|
|
|
2020-03-27 11:31:42 +11:00
|
|
|
use crate::app::enums::PresentationOption;
|
2020-03-20 14:07:44 +11:00
|
|
|
use crate::window::Window;
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Lifecycle events for anything that `impl Window`'s. These map to the standard Cocoa
|
|
|
|
/// lifecycle methods, but mix in a few extra things to handle offering configuration tools
|
|
|
|
/// in lieu of subclasses.
|
2020-03-20 14:07:44 +11:00
|
|
|
pub trait WindowDelegate {
|
2020-02-28 13:34:34 +11:00
|
|
|
/// Fires when this window has loaded in memory, and is about to display. This is a good point
|
|
|
|
/// to set up your views and what not.
|
|
|
|
///
|
|
|
|
/// If you're coming from the web, you can think of this as `DOMContentLoaded`.
|
2020-03-20 14:07:44 +11:00
|
|
|
fn did_load(&mut self, _window: Window) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
2020-03-27 11:31:42 +11:00
|
|
|
/// Called when the user has attempted to close the window. NOT called when a user quits the
|
|
|
|
/// application. Return false here if you need to handle the edge case.
|
|
|
|
fn should_close(&self) -> bool { true }
|
|
|
|
|
2020-02-28 13:34:34 +11:00
|
|
|
/// Fires when a window is going to close. You might opt to, say, clean up things here -
|
|
|
|
/// perhaps you have a long running task, or something that should be removed.
|
|
|
|
fn will_close(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the window is about to move.
|
|
|
|
fn will_move(&self) {}
|
|
|
|
|
|
|
|
/// Fired after the window has moved.
|
|
|
|
fn did_move(&self) {}
|
|
|
|
|
2020-03-27 11:31:42 +11:00
|
|
|
/// Fired before the window resizes, passing you the width and height.
|
|
|
|
/// To avoid resizing, return the current size. To resize to a different size, return the
|
|
|
|
/// desired size.
|
|
|
|
///
|
|
|
|
/// The default implementation of this method returns `None`, indicating the system should just
|
|
|
|
/// do its thing. If you implement it, you probably want that.
|
|
|
|
fn will_resize(&self, width: f64, height: f64) -> (f64, f64) { (width, height) }
|
|
|
|
|
|
|
|
/// Fired after the window has resized.
|
|
|
|
fn did_resize(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the window is going to live resize.
|
|
|
|
fn will_start_live_resize(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the window has ended live resizing.
|
|
|
|
fn did_end_live_resize(&self) {}
|
|
|
|
|
2020-02-28 13:34:34 +11:00
|
|
|
/// Fired when the window changes screens - you might find this useful for certain scenarios,
|
|
|
|
/// such as rendering in retina vs non-retina environments.
|
|
|
|
fn did_change_screen(&self) {}
|
|
|
|
|
2020-03-26 13:57:47 +11:00
|
|
|
/// Fired when the window profile changes screens - you might find this useful for certain scenarios,
|
|
|
|
/// such as rendering in retina vs non-retina environments.
|
|
|
|
fn did_change_screen_profile(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the window backing properties change - you might find this useful for certain scenarios,
|
|
|
|
/// such as rendering in retina vs non-retina environments. It's rare to need this though.
|
|
|
|
fn did_change_backing_properties(&self) {}
|
|
|
|
|
2020-02-28 13:34:34 +11:00
|
|
|
/// Fires when this window is about to become the key window.
|
|
|
|
fn did_become_key(&self) {}
|
|
|
|
|
|
|
|
/// Fires when this window is about to resign key window status.
|
|
|
|
fn did_resign_key(&self) {}
|
|
|
|
|
|
|
|
/// Fires when this window is about to become the main window.
|
|
|
|
fn did_become_main(&self) {}
|
|
|
|
|
|
|
|
/// Fires when this window is about to resign main status.
|
|
|
|
fn did_resign_main(&self) {}
|
|
|
|
|
|
|
|
/// Fires when the window is about to miniaturize (e.g, to the Dock).
|
|
|
|
fn will_miniaturize(&self) {}
|
|
|
|
|
|
|
|
/// Fires when this window miniaturized (e.g, to the Dock).
|
|
|
|
fn did_miniaturize(&self) {}
|
|
|
|
|
|
|
|
/// Fires when this window de-miniaturized (e.g, from the Dock).
|
|
|
|
fn did_deminiaturize(&self) {}
|
|
|
|
|
2020-03-27 11:31:42 +11:00
|
|
|
/// Fires when the system is moving a window to full screen and wants to know what content size
|
|
|
|
/// to use. By default, this just returns the system-provided content size, but you can
|
|
|
|
/// override it if need be.
|
|
|
|
fn content_size_for_full_screen(&self, proposed_width: f64, proposed_height: f64) -> (f64, f64) {
|
|
|
|
(proposed_width, proposed_height)
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Specify options for when this window goes full screen.
|
|
|
|
/// By default, this returns `None`, which tells the system to proceed as it normally would
|
|
|
|
/// without customization.
|
|
|
|
fn presentation_options_for_full_screen(&self) -> Option<&[PresentationOption]> { None }
|
|
|
|
|
2020-02-28 13:34:34 +11:00
|
|
|
/// Fires when this window is about to go full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn will_enter_full_screen(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Fires when this window entered full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn did_enter_full_screen(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Fires when this window is about to exit full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn will_exit_full_screen(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Fires when this window exited full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn did_exit_full_screen(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Fires when this window failed to enter full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn did_fail_to_enter_full_screen(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
|
|
|
|
/// Fires when this window failed to exit full screen.
|
2020-03-27 11:31:42 +11:00
|
|
|
fn did_fail_to_exit_full_screen(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the occlusion state for this window has changed. Similar in nature to the
|
|
|
|
/// app-level event, just for a Window.
|
|
|
|
fn did_change_occlusion_state(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the Window receives a `didExpose` message from higher up in the chain.
|
|
|
|
fn did_expose(&self) {}
|
|
|
|
|
|
|
|
/// Fired when the Window receives an `update` message from higher up in the chain.
|
|
|
|
fn did_update(&self) {}
|
2020-02-28 13:34:34 +11:00
|
|
|
}
|