Releases: rust-windowing/winit
Releases · rust-windowing/winit
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.
Winit Version v0.28.1
- On Wayland, fix crash when dropping a window in multi-window setup.
Winit Version v0.28.0
- On macOS, fixed
Ime::Commit
persisting for all input after interacting withIme
. - On macOS, added
WindowExtMacOS::option_as_alt
andWindowExtMacOS::set_option_as_alt
. - On Windows, fix window size for maximized, undecorated windows.
- On Windows and macOS, add
WindowBuilder::with_active
. - Add
Window::is_minimized
. - On X11, fix errors handled during
register_xlib_error_hook
invocation bleeding into winit. - Add
Window::has_focus
. - On Windows, fix
Window::set_minimized(false)
not working for windows minimized byWin + D
hotkey. - Breaking: On Web, touch input no longer fires
WindowEvent::Cursor*
,WindowEvent::MouseInput
, orDeviceEvent::MouseMotion
like other platforms, but instead it firesWindowEvent::Touch
. - Breaking: Removed platform specific
WindowBuilder::with_parent
API in favor ofWindowBuilder::with_parent_window
. - On Windows, retain
WS_MAXIMIZE
window style when un-minimizing a maximized window. - On Windows, fix left mouse button release event not being sent after
Window::drag_window
. - On macOS, run most actions on the main thread, which is strictly more correct, but might make multithreaded applications block slightly more.
- On macOS, fix panic when getting current monitor without any monitor attached.
- On Windows and MacOS, add API to enable/disable window buttons (close, minimize, ...etc).
- On Windows, macOS, X11 and Wayland, add
Window::set_theme
. - Breaking: Remove
WindowExtWayland::wayland_set_csd_theme
andWindowBuilderExtX11::with_gtk_theme_variant
. - On Windows, revert window background to an empty brush to avoid white flashes when changing scaling.
- Breaking: Removed
Window::set_always_on_top
and related APIs in favor ofWindow::set_window_level
. - On Windows, MacOS and X11, add always on bottom APIs.
- On Windows, fix the value in
MouseButton::Other
. - On macOS, add
WindowExtMacOS::is_document_edited
andWindowExtMacOS::set_document_edited
APIs. - Breaking: Removed
WindowBuilderExtIOS::with_root_view_class
; instead, you should use[[view layer] addSublayer: ...]
to add an instance of the desired layer class (e.g.CAEAGLLayer
orCAMetalLayer
). Seevulkano-win
orwgpu
for examples of this. - On MacOS and Windows, add
Window::set_content_protected
. - On MacOS, add
EventLoopBuilderExtMacOS::with_activate_ignoring_other_apps
. - On Windows, fix icons specified on
WindowBuilder
not taking effect for windows created after the first one. - On Windows and macOS, add
Window::title
to query the current window title. - On Windows, fix focusing menubar when pressing
Alt
. - On MacOS, made
accepts_first_mouse
configurable. - Migrated
WindowBuilderExtUnix::with_resize_increments
toWindowBuilder
. - Added
Window::resize_increments
/Window::set_resize_increments
to update resize increments at runtime for X11/macOS. - macOS/iOS: Use
objc2
instead ofobjc
internally. - Breaking: Bump MSRV from
1.57
to1.60
. - Breaking: Split the
platform::unix
module intoplatform::x11
andplatform::wayland
. The extension types are similarly renamed. - Breaking:: Removed deprecated method
platform::unix::WindowExtUnix::is_ready
. - Removed
parking_lot
dependency. - Breaking: On macOS, add support for two-finger touchpad magnification and rotation gestures with new events
WindowEvent::TouchpadMagnify
andWindowEvent::TouchpadRotate
. Also add support for touchpad smart-magnification gesture with a new eventWindowEvent::SmartMagnify
. - Breaking: On web, the
WindowBuilderExtWebSys::with_prevent_default
setting (enabled by default), now additionally prevents scrolling of the webpage in mobile browsers, previously it only disabled scrolling on desktop. - On Wayland,
wayland-csd-adwaita
now usesab_glyph
instead ofcrossfont
to render the title for decorations. - On Wayland, a new
wayland-csd-adwaita-crossfont
feature was added to usecrossfont
instead ofab_glyph
for decorations. - On Wayland, if not otherwise specified use upstream automatic CSD theme selection.
- On X11, added
WindowExtX11::with_parent
to create child windows. - Added support for
WindowBuilder::with_theme
andWindow::theme
to support per-window dark/light/system theme configuration on macos, windows and wayland. - On macOS, added support for
WindowEvent::ThemeChanged
. - Breaking: Removed
WindowBuilderExtWindows::with_theme
andWindowBuilderExtWayland::with_wayland_csd_theme
in favour ofWindowBuilder::with_theme
. - Breaking: Removed
WindowExtWindows::theme
in favour ofWindow::theme
. - Enabled
doc_auto_cfg
when generating docs on docs.rs for feature labels. - Breaking: On Android, switched to using
android-activity
crate as a glue layer instead ofndk-glue
. See README.md#Android for more details. (#2444) - Breaking: Removed support for
raw-window-handle
version0.4
- On Wayland,
RedrawRequested
not emitted during resize. - Add a
set_wait_timeout
function toControlFlow
to allow waiting for aDuration
. - Breaking: Remove the unstable
xlib_xconnection()
function from the private interface. - Added Orbital support for Redox OS
- On X11, added
drag_resize_window
method. - Added
Window::set_transparent
to provide a hint about transparency of the window on Wayland and macOS. - On macOS, fix the mouse buttons other than left/right/middle being reported as middle.
- On Wayland, support fractional scaling via the wp-fractional-scale protocol.
- On web, fix removal of mouse event listeners from the global object upon window distruction.
- Add WindowAttributes getter to WindowBuilder to allow introspection of default values.
- Added
Window::set_ime_purpose
for setting the IME purpose, currently implemented on Wayland only.