## 0.29.15 - On X11, fix crash due to xsettings query on systems with incomplete xsettings. ## 0.29.14 - On X11/Wayland, fix `text` and `text_with_all_modifiers` not being `None` during compose. - On Wayland, don't reapply cursor grab when unchanged. - On X11, fix a bug where some mouse events would be unexpectedly filtered out. ## 0.29.13 - On Web, fix possible crash with `ControlFlow::Wait` and `ControlFlow::WaitUntil`. ## 0.29.12 - On X11, fix use after free during xinput2 handling. - On X11, filter close to zero values in mouse device events ## 0.29.11 - Fix compatibility with 32-bit platforms without 64-bit atomics. - On macOS, fix incorrect IME cursor rect origin. - On Windows, fixed a race condition when sending an event through the loop proxy. - On X11, fix swapped instance and general class names. - On X11, don't require XIM to run. - On X11, fix xkb state not being updated correctly sometimes leading to wrong input. - On X11, reload dpi on `_XSETTINGS_SETTINGS` update. - On X11, fix deadlock when adjusting DPI and resizing at the same time. - On Wayland, disable `Occluded` event handling. - On Wayland, fix DeviceEvent::Motion not being sent - On Wayland, fix `Focused(false)` being send when other seats still have window focused. - On Wayland, fix `Window::set_{min,max}_inner_size` not always applied. - On Wayland, fix title in CSD not updated from `AboutToWait`. - On Windows, fix inconsistent resizing behavior with multi-monitor setups when repositioning outside the event loop. - On Wayland, fix `WAYLAND_SOCKET` not used when detecting platform. - On Orbital, fix `logical_key` and `text` not reported in `KeyEvent`. - On Orbital, implement `KeyEventExtModifierSupplement`. - On Orbital, map keys to `NamedKey` when possible. - On Orbital, implement `set_cursor_grab`. - On Orbital, implement `set_cursor_visible`. - On Orbital, implement `drag_window`. - On Orbital, implement `drag_resize_window`. - On Orbital, implement `set_transparent`. - On Orbital, implement `set_visible`. - On Orbital, implement `is_visible`. - On Orbital, implement `set_resizable`. - On Orbital, implement `is_resizable`. - On Orbital, implement `set_maximized`. - On Orbital, implement `is_maximized`. - On Orbital, implement `set_decorations`. - On Orbital, implement `is_decorated`. - On Orbital, implement `set_window_level`. - On Orbital, emit `DeviceEvent::MouseMotion`. ## 0.29.10 - On Web, account for canvas being focused already before event loop starts. - On Web, increase cursor position accuracy. ## 0.29.9 - On X11, fix `NotSupported` error not propagated when creating event loop. - On Wayland, fix resize not issued when scale changes - On X11 and Wayland, fix arrow up on keypad reported as `ArrowLeft`. - On macOS, report correct logical key when Ctrl or Cmd is pressed. ## 0.29.8 - On X11, fix IME input lagging behind. - On X11, fix `ModifiersChanged` not sent from xdotool-like input - On X11, fix keymap not updated from xmodmap. - On X11, reduce the amount of time spent fetching screen resources. - On Wayland, fix `Window::request_inner_size` being overwritten by resize. - On Wayland, fix `Window::inner_size` not using the correct rounding. ## 0.29.7 - On X11, fix `Xft.dpi` reload during runtime. - On X11, fix window minimize. ## 0.29.6 - On Web, fix context menu not being disabled by `with_prevent_default(true)`. - On Wayland, fix `WindowEvent::Destroyed` not being delivered after destroying window. - Fix `EventLoopExtRunOnDemand::run_on_demand` not working for consequent invocation ## 0.29.5 - On macOS, remove spurious error logging when handling `Fn`. - On X11, fix an issue where floating point data from the server is misinterpreted during a drag and drop operation. - On X11, fix a bug where focusing the window would panic. - On macOS, fix `refresh_rate_millihertz`. - On Wayland, disable Client Side Decorations when `wl_subcompositor` is not supported. - On X11, fix `Xft.dpi` detection from Xresources. - On Windows, fix consecutive calls to `window.set_fullscreen(Some(Fullscreen::Borderless(None)))` resulting in losing previous window state when eventually exiting fullscreen using `window.set_fullscreen(None)`. - On Wayland, fix resize being sent on focus change. - On Windows, fix `set_ime_cursor_area`. ## 0.29.4 - Fix crash when running iOS app on macOS. - On X11, check common alternative cursor names when loading cursor. - On X11, reload the DPI after a property change event. - On Windows, fix so `drag_window` and `drag_resize_window` can be called from another thread. - On Windows, fix `set_control_flow` in `AboutToWait` not being taken in account. - On macOS, send a `Resized` event after each `ScaleFactorChanged` event. - On Wayland, fix `wl_surface` being destroyed before associated objects. - On macOS, fix assertion when pressing `Fn` key. - On Windows, add `WindowBuilderExtWindows::with_clip_children` to control `WS_CLIPCHILDREN` style. ## 0.29.3 - On Wayland, apply correct scale to `PhysicalSize` passed in `WindowBuilder::with_inner_size` when possible. - On Wayland, fix `RedrawRequested` being always sent without decorations and `sctk-adwaita` feature. - On Wayland, ignore resize requests when the window is fully tiled. - On Wayland, use `configure_bounds` to constrain `with_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`. ## 0.29.2 - **Breaking:** Bump MSRV from `1.60` to `1.65`. - **Breaking:** Add `Event::MemoryWarning`; implemented on iOS/Android. - **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`. - **Breaking:** Change default `ControlFlow` from `Poll` to `Wait`. - **Breaking:** Move `Event::RedrawRequested` to `WindowEvent::RedrawRequested`. - **Breaking:** Moved `ControlFlow::Exit` to `EventLoopWindowTarget::exit()` and `EventLoopWindowTarget::exiting()` and removed `ControlFlow::ExitWithCode(_)` entirely. - **Breaking:** Moved `ControlFlow` to `EventLoopWindowTarget::set_control_flow()` and `EventLoopWindowTarget::control_flow()`. - **Breaking:** `EventLoop::new` and `EventLoopBuilder::build` now return `Result` - **Breaking:** `WINIT_UNIX_BACKEND` was removed in favor of standard `WAYLAND_DISPLAY` and `DISPLAY` 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` and `WindowEvent`. - **Breaking:** Rename `Window::set_inner_size` to `Window::request_inner_size` and indicate if the size was applied immediately. - **Breaking:** `ActivationTokenDone` event which could be requested with the new `startup_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 by `run() -> Result<(), EventLoopError>` for returning errors without calling `std::process::exit()` ([#2767](https://github.com/rust-windowing/winit/pull/2767)) - **Breaking** Removed `EventLoopExtRunReturn` / `run_return` in favor of `EventLoopExtPumpEvents` / `pump_events` and `EventLoopExtRunOnDemand` / `run_on_demand` ([#2767](https://github.com/rust-windowing/winit/pull/2767)) - `RedrawRequested` is no longer guaranteed to be emitted after `MainEventsCleared`, it is now platform-specific when the event is emitted after being requested via `redraw_request()`. - On Windows, `RedrawRequested` is now driven by `WM_PAINT` messages which are requested via `redraw_request()` - **Breaking** `LoopDestroyed` renamed to `LoopExiting` ([#2900](https://github.com/rust-windowing/winit/issues/2900)) - **Breaking** `RedrawEventsCleared` removed ([#2900](https://github.com/rust-windowing/winit/issues/2900)) - **Breaking** `MainEventsCleared` removed ([#2900](https://github.com/rust-windowing/winit/issues/2900)) - **Breaking:** Remove all deprecated `modifiers` fields. - **Breaking:** Rename `DeviceEventFilter` to `DeviceEvents` 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](https://github.com/rust-windowing/winit/issues/2900)) - **Breaking:** Rename `EventLoopWindowTarget::set_device_event_filter` to `listen_device_events`. - **Breaking:** Rename `Window::set_ime_position` to `Window::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 supports `Back` and `Forward` variants, emitted from mouse events on Wayland, X11, Windows, macOS and Web. - **Breaking:** On Web, `instant` is now replaced by `web_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 to `2`, which changes the API on exposed types. - **Breaking:** `CursorIcon::Arrow` was removed. - **Breaking:** `CursorIcon::Hand` is now named `CursorIcon::Pointer`. - **Breaking:** `CursorIcon` is now used from the `cursor-icon` crate. - **Breaking:** `WindowExtWebSys::canvas()` now returns an `Option`. - **Breaking:** Overhaul keyboard input handling. - Replace `KeyboardInput` with `KeyEvent` and `RawKeyEvent`. - Change `WindowEvent::KeyboardInput` to contain a `KeyEvent`. - Change `Event::Key` to contain a `RawKeyEvent`. - Remove `Event::ReceivedCharacter`. In its place, you should use `KeyEvent.text` in combination with `WindowEvent::Ime`. - Replace `VirtualKeyCode` with the `Key` enum. - Replace `ScanCode` with the `KeyCode` enum. - Rename `ModifiersState::LOGO` to `SUPER` and `ModifiersState::CTRL` to `CONTROL`. - Add `PhysicalKey` wrapping `KeyCode` and `NativeKeyCode`. - Add `KeyCode` to refer to keys (roughly) by their physical location. - Add `NativeKeyCode` to represent raw `KeyCode`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 raw `Key`s which Winit doesn't understand. - Add `KeyLocation` to tell apart `Key`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 dedicated `Modifiers` struct. - 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` in `window` 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` for `EventLoop` on X11 and Wayland. - Implement `PartialOrd` and `Ord` for `MouseButton`. - Implement `PartialOrd` and `Ord` on types in the `dpi` module. - Make `WindowBuilder` `Send + Sync`. - Make iOS `MonitorHandle` and `VideoMode` 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 implements `Send`. - On Web, `Window` now implements `Send` and `Sync`. - On Web, account for CSS `padding`, `border`, and `margin` when getting or setting the canvas position. - On Web, add Fullscreen API compatibility for Safari. - On Web, add `DeviceEvent::Motion`, `DeviceEvent::MouseWheel`, `DeviceEvent::Button` and `DeviceEvent::Key` support. - On Web, add `EventLoopWindowTargetExtWebSys` and `PollStrategy`, which allows to set different strategies for `ControlFlow::Poll`. By default the Prioritized Task Scheduling API is used, but an option to use `Window.requestIdleCallback` is available as well. Both use `setTimeout()`, 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 nothing. - On Web, fix some `Window` methods using incorrect HTML attributes instead of CSS properties. - On Web, fix the bfcache by not using the `beforeunload` event and map bfcache loading/unloading to `Suspended`/`Resumed` events. - On Web, fix touch input not gaining or loosing focus. - On Web, fix touch location to be as accurate as mouse position. - On Web, handle coalesced pointer events, which increases the resolution of pointer inputs. - On Web, implement `Window::focus_window()`. - On Web, implement `Window::set_(min|max)_inner_size()`. - On Web, implement `WindowEvent::Occluded`. - On Web, never return a `MonitorHandle`. - On Web, prevent clicks on the canvas to select text. - On Web, remove any fullscreen requests from the queue when an external fullscreen activation was detected. - On Web, remove unnecessary `Window::is_dark_mode()`, which was replaced with `Window::theme()`. - On Web, respect `EventLoopWindowTarget::listen_device_events()` settings. - On Web, scale factor and dark mode detection are now more robust. - On Web, send mouse position on button release as well. - On Web, take all transient activations on the canvas and window into account to queue a fullscreen request. - On Web, use `Window.requestAnimationFrame()` to throttle `RedrawRequested` events. - 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: 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 Windows, add `drag_resize_window` method support. - On Windows, add horizontal MouseWheel `DeviceEvent`. - On Windows, added `WindowBuilderExtWindows::with_class_name` to customize the internal class name. - On Windows, fix IME APIs not working when from non event loop thread. - On Windows, fix `CursorEnter/Left` not being sent when grabbing the mouse. - On Windows, fix `RedrawRequested` not being delivered when calling `Window::request_redraw` from `RedrawRequested`. - On Windows, port to `windows-sys` version 0.48.0. - On X11, add a `with_embedded_parent_window` function to the window builder to allow embedding a window into another window. - On X11, fix event loop not waking up on `ControlFlow::Poll` and `ControlFlow::WaitUntil`. - On X11, fix false positive flagging of key repeats when pressing different keys with no release between presses. - On X11, set `visual_id` in returned `raw-window-handle`. - On iOS, add ability to change the status bar style. - On iOS, add force data to touch events when using the Apple Pencil. - On iOS, always wake the event loop when transitioning from `ControlFlow::Poll` to `ControlFlow::Poll`. - On iOS, send events `WindowEvent::Occluded(false)`, `WindowEvent::Occluded(true)` when application enters/leaves foreground. - On macOS, add tabbing APIs on `WindowExtMacOS` and `EventLoopWindowTargetExtMacOS`. - On macOS, fix assertion when pressing `Globe` key. - On macOS, fix crash in `window.set_minimized(false)`. - On macOS, fix crash when dropping `Window`.