Winit version 0.31.0-beta.1
Added
-
Add
ActiveEventLoop::create_proxy(). -
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 details is available. Handles created with "detailed monitor permissions" can be used inWindow::set_fullscreen()as well.Keep in mind that handles do not auto-upgrade after permissions are granted and have to be re-created to make full use of this feature.
-
Implement
Clone,Copy,Debug,Deserialize,Eq,Hash,Ord,PartialEq,PartialOrdandSerializeon many types. -
Add
MonitorHandle::current_video_mode(). -
Add
ApplicationHandlerExtMacOStrait, and amacos_handlermethod toApplicationHandlerwhich returns adyn ApplicationHandlerExtMacOSwhich allows for macOS specific extensions to winit. -
Add a
standard_key_bindingmethod to theApplicationHandlerExtMacOStrait. This allows handling of standard keybindings such as "go to end of line" on macOS. -
On macOS, add
WindowExtMacOS::set_unified_titlebarandWindowAttributesMacOS::with_unified_titlebarto use a larger style of titlebar. -
Add
WindowId::into_raw()andfrom_raw(). -
Add
PointerKind,PointerSource,ButtonSource,FingerId,primaryandpositionto all pointer events as part of the pointer event overhaul. -
Add
DeviceId::into_raw()andfrom_raw(). -
Added
Window::surface_position, which is the position of the surface inside the window. -
Added
Window::safe_area, which describes the area of the surface that is unobstructed. -
On X11, Wayland, Windows and macOS, improved scancode conversions for more obscure key codes.
-
Add ability to make non-activating window on macOS using
NSPanelwithNSWindowStyleMask::NonactivatingPanel. -
Implement
MonitorHandleProviderforMonitorHandleto access common monitor API. -
On X11, set an "area" attribute on XIM input connection to convey the cursor area.
-
Implement
CustomCursorProviderforCustomCursorto access cursor API. -
Add
CustomCursorSource::Url,CustomCursorSource::from_animation. -
Implement
CustomIconProviderforRgbaIcon. -
Add
iconmodule that exposes winit's icon API. -
VideoMode::newto create aVideoMode. -
keyboard::ModifiersKeyto track which modifier is exactly pressed. -
ActivationToken::as_rawto get a ref to raw token. -
Each platform now has corresponding
WindowAttributesstruct instead of trait extension. -
On Wayland, added implementation for
Window::set_window_icon -
On Wayland, added
PanGesture,PinchGesture, andRotationGesture -
Add
Window::request_ime_updateto atomically apply set of IME changes. -
Add
Ime::DeleteSurroundingto let the input method delete text. -
Add more
ImePurposevalues. -
Add
ImeHintsto request particular IME behaviour. -
Add Pen input support on Wayland, Windows, and Web via new Pointer event.
Changed
-
Change
ActiveEventLoopandWindowto be traits, and addedcast_ref/cast_mut/castmethods to extract the backend type from those. -
ActiveEventLoop::create_windownow returnsBox<dyn Window>. -
ApplicationHandlernow usesdyn ActiveEventLoop. -
On Web, let events wake up event loop immediately when using
ControlFlow::Poll. -
Bump MSRV from
1.70to1.85. -
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::can_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, Web and Android, 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. -
(Active)EventLoop::create_custom_cursor()now returns aResult<CustomCursor, ExternalError>.
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. -
Remove
MonitorHandle::size()andrefresh_rate_millihertz()in favor ofMonitorHandle::current_video_mode(). -
On Android, remove all
MonitorHandlesupport instead of emitting false data. -
Remove
impl From<u64> for WindowIdandimpl From<WindowId> for u64. Replaced withWindowId::into_raw()andfrom_raw(). -
Remove
dummy()fromWindowIdandDeviceId. -
Remove
WindowEvent::TouchandTouchin favor of the newPointerKind,PointerSourceandButtonSourceas part of the new pointer event overhaul. -
Remove
Force::altitude_angle. -
Remove
Window::inner_position, use the new instead.
Fixed
- On Orbital,
MonitorHandle::name()now returnsNoneinstead of a dummy name. - On Orbital, implement
fullscreen. - On iOS, fixed
SurfaceResizedandWindow::surface_sizenot reporting the size of the actual surface. - On macOS, fixed the scancode conversion for audio volume keys.
- On macOS, fixed the scancode conversion for
IntlBackslash. - On macOS, fixed redundant
SurfaceResizedevent at window creation. - On macOS, don't panic on monitors with unknown bit-depths.
- On macOS, fixed crash when closing the window on macOS 26+.
- On Windows, account for mouse wheel lines per scroll setting for
WindowEvent::MouseWheel. - On Windows,
Window::themewill return the correct theme after setting it throughWindow::set_theme. - On Windows,
Window::set_themewill change the title bar color immediately now. - On Windows 11, prevent incorrect shifting when dragging window onto a monitor with different DPI.
- On Windows, avoid returning
SurfaceResizedwith size zero when an application is minimized. LetWindow::surface_sizereturn the pre-minimization window size even while minimized. - On Web, device events are emitted regardless of cursor type.
- On Wayland,
axis_value120scroll events now generateMouseScrollDelta::LineDelta - On X11, mouse scroll button events no longer cause duplicated
WindowEvent::MouseWheelevents. - On macOS, fixed crash when dragging non-file content onto window.