Expand description
§Changelog and migrations
All notable changes to this project will be documented in this module, along with migration instructions for larger changes. 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
keyboardsupport for OpenHarmony. - On iOS, add Apple Pencil support with force, altitude, and azimuth data.
- On Redox, add support for missing keyboard scancodes.
- On Redox, add support for
EventLoopExtPumpEvents::pump_app_events. - Implement
SendandSyncforOwnedDisplayHandle. - Use new macOS 15 cursors for resize icons.
- On Android, added scancode conversions for more obscure key codes.
- On Wayland, added
HoldGestureevent for multi-finger hold gestures - On Wayland, added ext-background-effect-v1 support.
- On Wayland, Windows and macOS, added native popups (
WindowType::Popup). - On macOS, add
WindowAttributesMacOS::with_fullscreen_auxiliaryandWindowExtMacOS::set_fullscreen_auxiliary/WindowExtMacOS::fullscreen_auxiliary, allowing a window to be shown on the same Space as a fullscreen window (NSWindowCollectionBehaviorFullScreenAuxiliary) instead of triggering a Space switch or Split View tiling. - Add
WindowEvent::PointerButton::is_macos_activation_click. On macOS, both the press and matching release of a click that activated a previously inactive window are tagged, so applications can ignore activation clicks for buttons or destructive actions while accepting them for low-risk actions like selection or scrolling. Alwaysfalseon other platforms.
§Changed
-
Mark the extensible public enums as
#[non_exhaustive]:StartCause,WindowEvent,DeviceEvent,Ime,PointerKind,PointerSource,ButtonSource,NativeKey,NativeKeyCode,CustomCursorSource,TypeHint,SendData,DndAction,ImeRequest,BadIcon,BadImage,BadAnimation,ImeSurroundingTextError,MouseScrollDelta, andFullscreen.When matching on one of these types, add a wildcard arm to cover variants added in the future:
ⓘmatch event { WindowEvent::CloseRequested => (), // ... _ => (), } -
On macOS, mark
ActivationPolicyas#[non_exhaustive]. -
On X11, mark
WindowTypeandUriListParseErroras#[non_exhaustive]. -
On Web, mark
PollStrategy,WaitUntilStrategy,CustomCursorError,MonitorPermissionError, andOrientationLockErroras#[non_exhaustive]. -
On Windows, mark
BackdropTypeandCornerPreferenceas#[non_exhaustive]. -
On iOS, mark
ValidOrientationsandStatusBarStyleas#[non_exhaustive]. -
Updated
windows-systov0.61. -
On older macOS versions (tested up to 12.7.6), applications now receive mouse movement events for unfocused windows, matching the behavior on other platforms.
-
On macOS, using the private API
CGSSetWindowBackgroundBlurRadiusforWindow::set_bluris now disabled by default. It can be re-enabled using the Cargo featureprivate-apple-apis.
§Removed
- On macOS, remove
WindowAttributesMacOS::with_accepts_first_mouse. Use the new per-eventWindowEvent::PointerButton::is_macos_activation_clickflag instead. To preserve the oldwith_accepts_first_mouse(false)behavior, ignorePointerButtonpress events (and their matching releases / drags) whereis_macos_activation_clickistrue.
§Fixed
- On Windows, fix a freeze that occurs when the keyboard layout is switched by
tools such as Punto Switcher. The
WM_INPUTLANGCHANGEmessage is now handled to refresh the cached keyboard layout, while still deferring toDefWindowProcfor normal propagation. - On Windows, fix getting the window’s DPI internally leaks
HDChandles. Also only callGetDCwhen on < Windows 8.1 which improves its performance. - On Redox, handle
EINTRwhen reading fromevent_socketinstead of panicking. - On Wayland, switch from using the
ahashhashing algorithm tofoldhash. - On macOS, fix borderless game presentation options not sticking after switching spaces.
- On macOS, fix IME being locked on (regardless of requests to disable) after being enabled once.
- On macOS, fix a panic and incorrect cursor position in Ime::Preedit when the preedit string contains special characters (ie. emojis) caused by incorrect UTF-16 to UTF-8 offset conversion.
- On Wayland, fix a protocol error when setting a custom cursor on compositors with
wl_surfaceversion below 3.