This also fixes macOS returning `None` in `Window::theme()` if no theme override is set, instead it now returns the system theme. MacOS and Wayland were the only ones working correctly according to the documentation, which was an oversight. The documentation was "fixed" now. Fixes #3837.
4.7 KiB
The format is based on Keep a Changelog.
The sections should follow the order Added, Changed, Deprecated,
Removed, and Fixed.
Platform specific changed should be added to the end of the section and grouped
by platform name. Common API additions should have , implemented at the end
for platforms where the API was initially implemented. See the following example
on how to add them:
### Added
- Add `Window::turbo()`, implemented on X11, Wayland, and Web.
- On X11, add `Window::some_rare_api`.
- On X11, add `Window::even_more_rare_api`.
- On Wayland, add `Window::common_api`.
- On Windows, add `Window::some_rare_api`.
When the change requires non-trivial amount of work for users to comply with it, the migration guide should be added below the entry, like:
- Deprecate `Window` creation outside of `EventLoop::run`
This was done to simply migration in the future. Consider the
following code:
// Code snippet.
To migrate it we should do X, Y, and then Z, for example:
// Code snippet.
The migration guide could reference other migration examples in the current changelog entry.
Unreleased
Added
-
Add
ActiveEventLoop::create_proxy(). -
On Web, implement
Errorforplatform::web::CustomCursorError. -
On Web, add
ActiveEventLoopExtWeb::is_cursor_lock_raw()to determine ifDeviceEvent::MouseMotionis returning raw data, not OS accelerated, when usingCursorGrabMode::Locked. -
On Web, implement
MonitorHandleandVideoModeHandle.Without prompting the user for permission, only the current monitor is returned. But when prompting and being granted permission through
ActiveEventLoop::request_detailed_monitor_permission(), access to all monitors and their information is available. This "detailed monitors" can be used inWindow::set_fullscreen()as well. -
On Android, add
{Active,}EventLoopExtAndroid::android_app()to access the app used to create the loop. -
Add
ActiveEventLoop::system_theme(), returning the current system theme.
Changed
-
On Web, let events wake up event loop immediately when using
ControlFlow::Poll. -
Bump MSRV from
1.70to1.73. -
Changed
ApplicationHandler::user_eventtouser_wake_up, removing the generic user event.Winit will now only indicate that wake up happened, you will have to pair this with an external mechanism like
std::sync::mpsc::channelif you want to send specific data to be processed on the main thread. -
Changed
EventLoopProxy::send_eventtoEventLoopProxy::wake_up, it now only wakes up the loop. -
On X11, implement smooth resizing through the sync extension API.
-
ApplicationHandler::create|destroy_surfaces()was split off fromApplicationHandler::resumed/suspended().ApplicationHandler::can_create_surfaces()should, for portability reasons to Android, be the only place to create render surfaces.ApplicationHandler::resumed/suspended()are now only emitted by iOS and Web and now signify actually resuming/suspending the application. -
Rename
platform::web::*ExtWebSysto*ExtWeb. -
Change signature of
EventLoop::run_app,EventLoopExtPumpEvents::pump_app_eventsandEventLoopExtRunOnDemand::run_app_on_demandto accept aimpl ApplicationHandlerdirectly, instead of requiring a&mutreference to it. -
On Web,
Window::canvas()now returns a reference. -
On Web,
CursorGrabMode::Lockednow letsDeviceEvent::MouseMotionreturn raw data, not OS accelerated, if the browser supports it.
Removed
-
Remove
Event. -
Remove already deprecated APIs:
EventLoop::create_window()EventLoop::run.EventLoopBuilder::new()EventLoopExtPumpEvents::pump_events.EventLoopExtRunOnDemand::run_on_demand.VideoModeWindowAttributes::new()Window::set_cursor_icon()
-
On iOS, remove
platform::ios::EventLoopExtIOSand relatedplatform::ios::Idiomtype.This feature was incomplete, and the equivalent functionality can be trivially achieved outside of
winitusingobjc2-ui-kitand callingUIDevice::currentDevice().userInterfaceIdiom(). -
On Web, remove unused
platform::web::CustomCursorError::Animation. -
Remove the
rwh_04andrwh_05cargo feature and the correspondingraw-window-handlev0.4 and v0.5 support. v0.6 remains in place and is enabled by default. -
Remove
DeviceEvent::AddedandDeviceEvent::Removed. -
Remove
DeviceEvent::MotionandWindowEvent::AxisMotion.
Fixed
- On Web, pen events are now routed through to
WindowEvent::Cursor*. - On macOS, fix panic when releasing not available monitor.
- On MacOS, return the system theme in
Window::theme()if no theme override is set.