Releases: rust-windowing/winit
Releases · rust-windowing/winit
Winit Version 0.29.3
- On Wayland, apply correct scale to
PhysicalSize
passed inWindowBuilder::with_inner_size
when possible. - On Wayland, fix
RedrawRequsted
being always sent without decorations andsctk-adwaita
feature. - On Wayland, ignore resize requests when the window is fully tiled.
- On Wayland, use
configure_bounds
to constrainwith_inner_size
when compositor wants users to pick size. - On Windows, fix deadlock when accessing the state during
Cursor{Enter,Leave}
. - On Windows, add support for
Window::set_transparent
. - On macOS, fix deadlock when entering a nested event loop from an event handler.
- On macOS, add support for
Window::set_blur
.
Winit Version 0.29.2
- Breaking: Bump MSRV from
1.60
to1.65
. - Breaking: Add
Event::MemoryWarning
; implemented on iOS/Android. - Breaking: Bump
ndk
version to0.8.0
, ndk-sys to0.5.0
,android-activity
to0.5.0
. - Breaking: Change default
ControlFlow
fromPoll
toWait
. - Breaking: Move
Event::RedrawRequested
toWindowEvent::RedrawRequested
. - Breaking: Moved
ControlFlow::Exit
toEventLoopWindowTarget::exit()
andEventLoopWindowTarget::exiting()
and removedControlFlow::ExitWithCode(_)
entirely. - Breaking: Moved
ControlFlow
toEventLoopWindowTarget::set_control_flow()
andEventLoopWindowTarget::control_flow()
. - Breaking:
EventLoop::new
andEventLoopBuilder::build
now returnResult<Self, EventLoopError>
- Breaking:
WINIT_UNIX_BACKEND
was removed in favor of standardWAYLAND_DISPLAY
andDISPLAY
variables. - Breaking: on Wayland, dispatching user created Wayland queue won't wake up the loop unless winit has event to send back.
- Breaking: remove
DeviceEvent::Text
. - Breaking: Remove lifetime parameter from
Event
andWindowEvent
. - Breaking: Rename
Window::set_inner_size
toWindow::request_inner_size
and indicate if the size was applied immediately. - Breaking:
ActivationTokenDone
event which could be requested with the newstartup_notify
module, see its docs for more. - Breaking:
ScaleFactorChanged
now contains a writer instead of a reference to update inner size. - Breaking
run() -> !
has been replaced byrun() -> Result<(), EventLoopError>
for returning errors without callingstd::process::exit()
(#2767) - Breaking Removed
EventLoopExtRunReturn
/run_return
in favor ofEventLoopExtPumpEvents
/pump_events
andEventLoopExtRunOnDemand
/run_on_demand
(#2767) RedrawRequested
is no longer guaranteed to be emitted afterMainEventsCleared
, it is now platform-specific when the event is emitted after being requested viaredraw_request()
.- On Windows,
RedrawRequested
is now driven byWM_PAINT
messages which are requested viaredraw_request()
- On Windows,
- Breaking
LoopDestroyed
renamed toLoopExiting
(#2900) - Breaking
RedrawEventsCleared
removed (#2900) - Breaking
MainEventsCleared
removed (#2900) - Breaking: Remove all deprecated
modifiers
fields. - Breaking: Rename
DeviceEventFilter
toDeviceEvents
reversing the behavior of variants. - Breaking Add
AboutToWait
event which is emitted when the event loop is about to block and wait for new events (#2900) - Breaking: Rename
EventLoopWindowTarget::set_device_event_filter
tolisten_device_events
. - Breaking: Rename
Window::set_ime_position
toWindow::set_ime_cursor_area
adding a way to set exclusive zone. - Breaking:
with_x11_visual
now takes the visual ID instead of the bare pointer. - Breaking
MouseButton
now supportsBack
andForward
variants, emitted from mouse events on Wayland, X11, Windows, macOS and Web. - Breaking: On Web,
instant
is now replaced byweb_time
. - Breaking: On Web, dropped support for Safari versions below 13.1.
- Breaking: On Web, the canvas output bitmap size is no longer adjusted.
- Breaking: On Web, the canvas size is not controlled by Winit anymore and external changes to the canvas size will be reported through
WindowEvent::Resized
. - Breaking: Updated
bitflags
crate version to2
, which changes the API on exposed types. - Breaking:
CursorIcon::Arrow
was removed. - Breaking:
CursorIcon::Hand
is now namedCursorIcon::Pointer
. - Breaking:
CursorIcon
is now used from thecursor-icon
crate. - Breaking:
WindowExtWebSys::canvas()
now returns anOption
. - Breaking: Overhaul keyboard input handling.
- Replace
KeyboardInput
withKeyEvent
andRawKeyEvent
.- Change
WindowEvent::KeyboardInput
to contain aKeyEvent
. - Change
Event::Key
to contain aRawKeyEvent
.
- Change
- Remove
Event::ReceivedCharacter
. In its place, you should use
KeyEvent.text
in combination withWindowEvent::Ime
. - Replace
VirtualKeyCode
with theKey
enum. - Replace
ScanCode
with theKeyCode
enum. - Rename
ModifiersState::LOGO
toSUPER
andModifiersState::CTRL
toCONTROL
. - Add
PhysicalKey
wrappingKeyCode
andNativeKeyCode
. - Add
KeyCode
to refer to keys (roughly) by their physical location. - Add
NativeKeyCode
to represent rawKeyCode
s which Winit doesn't
understand. - Add
Key
to represent the keys after they've been interpreted by the
active (software) keyboard layout. - Add
NamedKey
to represent the categorized keys. - Add
NativeKey
to represent rawKey
s which Winit doesn't understand. - Add
KeyLocation
to tell apartKey
s which usually "mean" the same thing,
but can appear simultaneously in different spots on the same keyboard
layout. - Add
Window::reset_dead_keys
to enable application-controlled cancellation
of dead key sequences. - Add
KeyEventExtModifierSupplement
to expose additional (and less
portable) interpretations of a given key-press. - Add
PhysicalKeyExtScancode
, which lets you convert between scancodes and
PhysicalKey
. ModifiersChanged
now uses dedicatedModifiers
struct.
- Replace
- Removed platform-specific extensions that should be retrieved through
raw-window-handle
trait implementations instead:platform::windows::HINSTANCE
.WindowExtWindows::hinstance
.WindowExtWindows::hwnd
.WindowExtIOS::ui_window
.WindowExtIOS::ui_view_controller
.WindowExtIOS::ui_view
.WindowExtMacOS::ns_window
.WindowExtMacOS::ns_view
.EventLoopWindowTargetExtWayland::wayland_display
.WindowExtWayland::wayland_surface
.WindowExtWayland::wayland_display
.WindowExtX11::xlib_window
.WindowExtX11::xlib_display
.WindowExtX11::xlib_screen_id
.WindowExtX11::xcb_connection
.
- Reexport
raw-window-handle
inwindow
module. - Add
ElementState::is_pressed
. - Add
Window::pre_present_notify
to notify winit before presenting to the windowing system. - Add
Window::set_blur
to request a blur behind the window; implemented on Wayland for now. - Add
Window::show_window_menu
to request a titlebar/system menu; implemented on Wayland/Windows for now. - Implement
AsFd
/AsRawFd
forEventLoop<T>
on X11 and Wayland. - Implement
PartialOrd
andOrd
forMouseButton
. - Implement
PartialOrd
andOrd
on types in thedpi
module. - Make
WindowBuilder
Send + Sync
. - Make iOS
MonitorHandle
andVideoMode
usable from other threads. - Make iOS windows usable from other threads.
- On Android, add force data to touch events.
- On Android, added
EventLoopBuilderExtAndroid::handle_volume_keys
to indicate that the application will handle the volume keys manually. - On Android, fix
DeviceId
to contain device id's. - On Orbital, fix
ModifiersChanged
not being sent. - On Wayland,
Window::outer_size
now accounts for client side decorations. - On Wayland, add
Window::drag_resize_window
method. - On Wayland, remove
WINIT_WAYLAND_CSD_THEME
variable. - On Wayland, fix
TouchPhase::Canceled
being sent for moved events. - On Wayland, fix forward compatibility issues.
- On Wayland, fix initial window size not restored for maximized/fullscreened on startup window.
- On Wayland, fix maximized startup not taking full size on GNOME.
- On Wayland, fix maximized window creation and window geometry handling.
- On Wayland, fix window not checking that it actually got initial configure event.
- On Wayland, make double clicking and moving the CSD frame more reliable.
- On Wayland, support
Occluded
event with xdg-shell v6 - On Wayland, use frame callbacks to throttle
RedrawRequested
events so redraws will align with compositor. - On Web,
ControlFlow::WaitUntil
now uses the Prioritized Task Scheduling API.setTimeout()
, with a trick to circumvent throttling to 4ms, is used as a fallback. - On Web,
EventLoopProxy
now implementsSend
. - On Web,
Window
now implementsSend
andSync
. - On Web, account for CSS
padding
,border
, andmargin
when getting or setting the canvas position. - On Web, add Fullscreen API compatibility for Safari.
- On Web, add
DeviceEvent::Motion
,DeviceEvent::MouseWheel
,DeviceEvent::Button
andDeviceEvent::Key
support. - On Web, add
EventLoopWindowTargetExtWebSys
andPollStrategy
, which allows to set different strategies forControlFlow::Poll
. By default the Prioritized Task Scheduling API is used, but an option to useWindow.requestIdleCallback
is available as well. Both usesetTimeout()
, with a trick to circumvent throttling to 4ms, as a fallback. - On Web, add
WindowBuilderExtWebSys::with_append()
to append the canvas element to the web page on creation. - On Web, allow event loops to be recreated with
spawn
. - On Web, enable event propagation.
- On Web, fix
ControlFlow::WaitUntil
to never wake up before the given time. - On Web, fix
DeviceEvent::MouseMotion
only being emitted for each canvas instead of the whole window. - On Web, fix
Window:::set_fullscreen
doing nothing when called outside the event loop but during transient activation. - On Web, fix pen treated as mouse input.
- On Web, fix pointer button events not being processed when a buttons is already pressed.
- On Web, fix scale factor resize suggestion always overwriting the canvas size.
- On Web, fix some
WindowBuilder
methods doing nothin...
Winit Version 0.28.7
- Fix window size sometimes being invalid when resizing on macOS 14 Sonoma.
Winit Version 0.29.1-beta
- Breaking: Bump
ndk
version to0.8.0-beta.0
, ndk-sys tov0.5.0-beta.0
,android-activity
to0.5.0-beta.1
. - Breaking: Bump MSRV from
1.64
to1.65
. - Make iOS windows usable from other threads.
- Reexport
raw-window-handle
inwindow
module. - Breaking:
WINIT_UNIX_BACKEND
was removed in favor of standardWAYLAND_DISPLAY
andDISPLAY
variables. - Breaking:
EventLoop::new
andEventLoopBuilder::build
now returnResult<Self, EventLoopError>
- On X11, set
visual_id
in returnedraw-window-handle
. - Breaking: on Wayland, dispatching user created wayland queue won't wake up the loop unless winit has event to send back.
- Removed platform-specific extensions that should be retrieved through
raw-window-handle
trait implementations instead:platform::windows::HINSTANCE
.WindowExtWindows::hinstance
.WindowExtWindows::hwnd
.WindowExtIOS::ui_window
.WindowExtIOS::ui_view_controller
.WindowExtIOS::ui_view
.WindowExtMacOS::ns_window
.WindowExtMacOS::ns_view
.EventLoopWindowTargetExtWayland::wayland_display
.WindowExtWayland::wayland_surface
.WindowExtWayland::wayland_display
.WindowExtX11::xlib_window
.WindowExtX11::xlib_display
.WindowExtX11::xlib_screen_id
.WindowExtX11::xcb_connection
.
- On Web, use
Window.requestAnimationFrame()
to throttleRedrawRequested
events. - On Wayland, use frame callbacks to throttle
RedrawRequested
events so redraws will align with compositor. - Add
Window::pre_present_notify
to notify winit before presenting to the windowing system. - On Windows, added
WindowBuilderExtWindows::with_class_name
to customize the internal class name. - Breaking: Remove lifetime parameter from
Event
andWindowEvent
. - Breaking:
ScaleFactorChanged
now contains a writer instead of a reference to update inner size. - On iOS, always wake the event loop when transitioning from
ControlFlow::Poll
toControlFlow::Poll
. - Breaking:
ActivationTokenDone
event which could be requested with the newstartup_notify
module, see its docs for more. - On Wayland, make double clicking and moving the CSD frame more reliable.
- On macOS, add tabbing APIs on
WindowExtMacOS
andEventLoopWindowTargetExtMacOS
. - Breaking: Rename
Window::set_inner_size
toWindow::request_inner_size
and indicate if the size was applied immediately. - On X11, fix false positive flagging of key repeats when pressing different keys with no release between presses.
- Implement
PartialOrd
andOrd
forKey
,KeyCode
,NativeKey
, andNativeKeyCode
. - Add
ElementState::is_pressed
. - On Web, implement
WindowEvent::Occluded
. - On Web, fix touch location to be as accurate as mouse position.
- On Web, account for CSS
padding
,border
, andmargin
when getting or setting the canvas position. - On Web, add Fullscreen API compatibility for Safari.
- On Web, implement
Window::set_(min|max)_inner_size()
. - On Web, fix some
Window
methods using incorrect HTML attributes instead of CSS properties. - On Web, fix some
WindowBuilder
methods doing nothing. - On Web, implement
Window::focus_window()
. - On Web, remove unnecessary
Window::is_dark_mode()
, which was replaced withWindow::theme()
. - On Web, add
WindowBuilderExtWebSys::with_append()
to append the canvas element to the web page on creation. - On Windows, add
drag_resize_window
method support. - Breaking
run() ->!
has been replaced byrun() -> Result<(), EventLoopError>
for returning errors without callingstd::process::exit()
(#2767) - Breaking Removed
EventLoopExtRunReturn
/run_return
in favor ofEventLoopExtPumpEvents
/pump_events
andEventLoopExtRunOnDemand
/run_ondemand
(#2767) RedrawRequested
is no longer guaranteed to be emitted afterMainEventsCleared
, it is now platform-specific when the event is emitted after being requested viaredraw_request()
.- On Windows,
RedrawRequested
is now driven byWM_PAINT
messages which are requested viaredraw_request()
- On Windows,
- Breaking
LoopDestroyed
renamed toLoopExiting
(#2900) - Breaking
RedrawEventsCleared
removed (#2900) - Breaking
MainEventsCleared
removed (#2900) - Added
AboutToWait
event which is emitted when the event loop is about to block and wait for new events (#2900) - Breaking:
with_x11_visual
now takes the visual ID instead of the bare pointer. - On X11, add a
with_embedded_parent_window
function to the window builder to allow embedding a window into another window. - On iOS, add force data to touch events when using the Apple Pencil.
Winit Version 0.29.0-beta.0
- On Web, allow event loops to be recreated with
spawn
. - Breaking: Rename
Window::set_ime_position
toWindow::set_ime_cursor_area
adding a way to set exclusive zone. - On Android, changed default behavior of Android to ignore volume keys letting the operating system handle them.
- On Android, added
EventLoopBuilderExtAndroid::handle_volume_keys
to indicate that the application will handle the volume keys manually. - Breaking: Rename
DeviceEventFilter
toDeviceEvents
reversing the behavior of variants. - Breaking: Rename
EventLoopWindowTarget::set_device_event_filter
tolisten_device_events
. - On X11, fix
EventLoopWindowTarget::listen_device_events
effect being reversed. - Breaking: Remove all deprecated
modifiers
fields. - Breaking: Overhaul keyboard input handling.
- Replace
KeyboardInput
withKeyEvent
andRawKeyEvent
.- Change
WindowEvent::KeyboardInput
to contain aKeyEvent
. - Change
Event::Key
to contain aRawKeyEvent
.
- Change
- Remove
Event::ReceivedCharacter
. In its place, you should use
KeyEvent.text
in combination withWindowEvent::Ime
. - Replace
VirtualKeyCode
with theKey
enum. - Replace
ScanCode
with theKeyCode
enum. - Rename
ModifiersState::LOGO
toSUPER
andModifiersState::CTRL
toCONTROL
. - Add
KeyCode
to refer to keys (roughly) by their physical location. - Add
NativeKeyCode
to represent rawKeyCode
s which Winit doesn't
understand. - Add
Key
to represent the keys after they've been interpreted by the
active (software) keyboard layout. - Add
NativeKey
to represent rawKey
s which Winit doesn't understand. - Add
KeyLocation
to tell apartKey
s which usually "mean" the same thing,
but can appear simultaneously in different spots on the same keyboard
layout. - Add
Window::reset_dead_keys
to enable application-controlled cancellation
of dead key sequences. - Add
KeyEventExtModifierSupplement
to expose additional (and less
portable) interpretations of a given key-press. - Add
KeyCodeExtScancode
, which lets you convert between raw keycodes and
KeyCode
. ModifiersChanged
now uses dedicatedModifiers
struct.
- Replace
- On Orbital, fix
ModifiersChanged
not being sent. - Breaking:
CursorIcon
is now used from thecursor-icon
crate. - Breaking:
CursorIcon::Hand
is now namedCursorIcon::Pointer
. - Breaking:
CursorIcon::Arrow
was removed. - On Wayland, fix maximized startup not taking full size on GNOME.
- On Wayland, fix initial window size not restored for maximized/fullscreened on startup window.
- On Wayland,
Window::outer_size
now accounts for client side decorations. - On Wayland, fix window not checking that it actually got initial configure event.
- On Wayland, fix maximized window creation and window geometry handling.
- On Wayland, fix forward compatibility issues.
- On Wayland, add
Window::drag_resize_window
method. - On Wayland, drop
WINIT_WAYLAND_CSD_THEME
variable. - Implement
PartialOrd
andOrd
on types in thedpi
module. - Breaking: Bump MSRV from
1.60
to1.64
. - Breaking: On Web, the canvas output bitmap size is no longer adjusted.
- On Web: fix
Window::request_redraw
not waking the event loop when called from outside the loop. - On Web: fix position of touch events to be relative to the canvas.
- On Web, fix
Window:::set_fullscreen
doing nothing when called outside the event loop but during
a transient activation. - On Web, fix pointer button events not being processed when a buttons is already pressed.
- Breaking: Updated
bitflags
crate version to2
, which changes the API on exposed types. - On Web, handle coalesced pointer events, which increases the resolution of pointer inputs.
- Breaking: On Web,
instant
is now replaced byweb_time
. - On Windows, port to
windows-sys
version 0.48.0. - On Web, fix pen treated as mouse input.
- On Web, send mouse position on button release as well.
- On Web, fix touch input not gaining or loosing focus.
- Breaking: On Web, dropped support for Safari versions below 13.1.
- On Web, prevent clicks on the canvas to select text.
- On Web,
EventLoopProxy
now implementsSend
. - On Web,
Window
now implementsSend
andSync
. - Breaking:
WindowExtWebSys::canvas()
now returns anOption
. - On Web, use the correct canvas size when calculating the new size during scale factor change,
instead of using the output bitmap size. - On Web, scale factor and dark mode detection are now more robust.
- On Web, fix the bfcache by not using the
beforeunload
event and map bfcache loading/unloading toSuspended
/Resumed
events. - On Web, fix scale factor resize suggestion always overwriting the canvas size.
- On macOS, fix crash when dropping
Window
. - On Web, use
Window.requestIdleCallback()
forControlFlow::Poll
when available. - Breaking: On Web, the canvas size is not controlled by Winit anymore and external changes to
the canvas size will be reported throughWindowEvent::Resized
. - On Web, respect
EventLoopWindowTarget::listen_device_events()
settings. - On Web, fix
DeviceEvent::MouseMotion
only being emitted for each canvas instead of the whole window. - On Web, add
DeviceEvent::Motion
,DeviceEvent::MouseWheel
,DeviceEvent::Button
and
DeviceEvent::Key
support. - Breaking
MouseButton
now supportsBack
andForward
variants, emitted from mouse events
on Wayland, X11, Windows, macOS and Web.
Winit Version v0.28.6
- On macOS, fixed memory leak when getting monitor handle.
- On macOS, fix
Backspace
being emitted when clearing preedit with it.
Winit Version v0.28.5
- On macOS, fix
key_up
being ignored whenIme
is disabled.
Winit Version v0.28.4 [yanked]
- On macOS, fix empty marked text blocking regular input.
- On macOS, fix potential panic when getting refresh rate.
- On macOS, fix crash when calling
Window::set_ime_position
from another thread.
Winit Version v0.28.3
- Fix macOS memory leaks.
Winit Version v0.28.2
- Implement
HasRawDisplayHandle
forEventLoop
. - On macOS, set resize increments only for live resizes.
- On Wayland, fix rare crash on DPI change.
- On Web, add support for
Window::theme
. - On Wayland, fix rounding issues when doing resize.
- On macOS, fix wrong focused state on startup.
- On Windows, fix crash on setting taskbar when using Visual Studio debugger.
- On macOS, resize simple fullscreen windows on windowDidChangeScreen events.