# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## v0.4.0 (2024-09-14) ### Breaking Changes - Several functions now accept an `ExecutingApp` parameter instead of a `Windows` parameter. This new type exposes access to other information from the event loop such as monitor information. The affected APIs are: - `PendingApp::new_with_event_callback` - `WindowBehavior::run_with_event_callback` - `WindowBehavior::run_with_context_and_event_callback` - `RunningWindow::position` has been split into `RunningWindow::inner_position` and `RunningWindow::outer_position`. `RunningWindow::set_position` has been renamed to `RunningWindow::set_outer_position`. ### Fixed - `Window`'s `Clone` implementation no longer requires its generic parameter to implement `Clone`. - `WindowAttributes::active` is now honored when using `delay_visible`. ### Added - `PendingApp::on_startup` accepts a callback that will be invoked once the event loop is executing. - `WindowBehavior::moved` is called when the window moves. - `RunningWindow::outer_size` is a new function that returns the window's current size including decorations. - `App::prevent_shutdown()` returns a guard that prevents the application from closing automatically when the final window is closed. - `WindowBehavior::initialized` is called once when the window has been fully initialized. This happens after the `delay_visible` logic has been executed. ### Changed - `AsApplication` is now explicitly implemented for `App` and `PendingApp` rather than implemented using a blanket implementation. This allows downstream crates to create wrappers of these types that can implement `AsApplication`. ## v0.3.2 (2024-08-28) ### Fixed - When multiple windows are open, windows now properly close fully without requiring that all windows are closed. ## v0.3.1 (2024-07-15) ### Added - `WindowAttributes::delay_visible` is a new setting initializes the window `visible: false` before showing it after the first successful redraw. The goal is to avoid the OS drawing an empty window before the window behavior has initialized. This new attribute defaults to true. ## v0.3.0 (2024-05-12) ### Breaking Changes - This crate no longer specifies a specific raw-window-handle flag for winit. This crate will maintain feature flags that allow picking whatever versions winit is exposing. As of writing this note, the choices are `rwh_05` and `rwh_06`. `rwh_05` was the feature that was activated in v0.2.0. - `winit` has been updated to 0.30.0. - `Window::id` now returns `Option`, as a window may be opened before the event loop has been started. - `WindowBehavior::build`, `WindowBehavior::build_with`, `WindowBehavior::open`, and `WindowBehavior::open_with` now require exclusive references to the application. - These gesture events have been renamed to match `winit`'s updated nomenclature: - `WindowBehavior::touchpad_magnify` -> `WindowBehavior::pinch_gesture` - `WindowBehavior::smart_magnify` -> `WindowBehavior::double_tap_gesture` ### Changed - All `&Appplication` bounds now are `?Sized`, enabling `&dyn Application` parameters. - Redraw requests from `winit` now block the event loop thread until the window has been repainted. ### Added - `AsApplication` now provides `as_application_mut`. - `WindowBeahvior::pan_gesture` is a new event provided by `winit`. ## v0.2.0 (2023-12-27) ### Breaking Changes - `UnwindSafe` is no longer required for `WindowBehavior` or `WindowBehavior::Context`. ### Changed - This crate's default features now include `wayland-csd-adwaita`. This enables winit's built-in decoration drawing on Wayland. ### Fixed - `App` now implements `Application`. - `Window` is now fully weak. Previously the channel for messages would still remain allocated while instances of `Window` existed. Now, the messages channel is freed as soon as the window is closed. ### Added - `AsApplication` is a new trait that can be implemented to resolve to the `App` type. This allows wrapper types to be written that hide the appit types. - `WindowAttributes` now implement `Debug`. ## v0.1.1 (2023-12-18) ### Fixed - Errors when building for Windows have been resolved. ## v0.1.0 (2023-12-18) This is the initial alpha release.