mirror of
https://github.com/danbulant/appit
synced 2026-05-22 13:48:58 +00:00
153 lines
5.5 KiB
Markdown
153 lines
5.5 KiB
Markdown
# 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).
|
|
|
|
## Unreleased
|
|
|
|
### Breaking Changes
|
|
|
|
- `Window::set_inner_size` has been replaced with `Window::request_inner_size`,
|
|
and it matches the semantics of winit's underlying `request_inner_size`. The
|
|
function returns an option containing the new size if the size was able to be
|
|
applied before the function returns.
|
|
|
|
This new function properly updates the `inner_size` and `outer_size` when the
|
|
underlying window is resized immediately. Notably, this happens on Wayland but
|
|
may happen on some other platforms as well.
|
|
- `RunningWindow::winit` now returns an `Arc` wrapped winit window.
|
|
- `AppMessage::Error` is a new associated type that is used to communicate
|
|
errors from window threads to the event loop. To facilitate this
|
|
communication, `App::send_error` and `Application::send_error` have been added.
|
|
|
|
Additionally, `WindowBehavior::Initialize` now returns a `Result<Self,
|
|
AppMessage::Error>`.
|
|
|
|
To install a hander, use `PendingApp::on_error`.
|
|
|
|
### Added
|
|
|
|
- A new feature `xdg` has been added, enabled by default, that enables detecting
|
|
dark mode changes on Linux.
|
|
|
|
## 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<WindowId>`, 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.
|