Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
b14d5c0
Web: queue `EventLoopProxy::send_event()` to microtask
daxpedda Jun 11, 2024
54e974c
Web: don't overwrite cursor with `CursorIcon::Default` (#3729)
daxpedda Jun 11, 2024
1745b01
Web: fix crash `InnerSizeWriter::request_inner_size()` (#3727)
daxpedda Jun 11, 2024
96388f4
chore: address 1.79 clippy lints
kchibisov Jun 15, 2024
b512ed1
macOS: fix opacity handling
kchibisov Jun 15, 2024
ecd1468
Revert: Web: don't wait for polling when sending events
kchibisov Jun 15, 2024
79aa95b
Winit version 0.30.2
kchibisov Jun 15, 2024
c73d8cf
x11: fix build on arm
kchibisov Jun 17, 2024
3d7d766
macOS: set the theme on the NSWindow, instead of application-wide
madsmtm Jun 20, 2024
a974640
Web: set control flow strategies on `EventLoop` (#3740)
daxpedda Jun 20, 2024
d8f4d8f
Web: implement `WaitUntilStrategy` (#3739)
daxpedda Jun 20, 2024
d2d4d20
Winit version 0.30.3
kchibisov Jun 20, 2024
6abfef1
Use `default-features`, not `default_features` (#3746)
waywardmonkeys Jun 22, 2024
7c81364
Update codeowner list
msiglreith Jun 22, 2024
faa641e
Add notgull as Windows maintainer
msiglreith Jun 22, 2024
655fdc8
ci: Use taiki-e/checkout-action
notgull Jun 23, 2024
feca480
Avoid `path` when importing modules (#3755)
madsmtm Jun 24, 2024
ec24c3e
wayland: ignore events for dead objects
kchibisov Jul 5, 2024
71dea46
Fix CI (#3775)
daxpedda Jul 5, 2024
6509f8a
Make `DeviceId/WindowId::dummy()` safe (#3784)
daxpedda Jul 14, 2024
ba18837
wayland: bump dependencies
kchibisov Jul 16, 2024
bf68ac0
Web: fix `WindowEvent::Resized` not using rAF (#3790)
daxpedda Jul 16, 2024
949cb0f
Web: fix `MouseMotion` coordinate space (#3770)
daxpedda Jun 28, 2024
04d8a28
Winit version 0.30.4
kchibisov Jul 16, 2024
1dec9b4
Web: implement `Error` for `CustomCursorError` (#3793)
daxpedda Jul 17, 2024
4b1aa51
macOS: fix building with `feature = "rwh_04"`
daxpedda Jul 22, 2024
9ca8c09
Web: don't block pen input (#3813)
daxpedda Jul 23, 2024
5735786
Fix CI for Rust v1.80 (#3822)
daxpedda Jul 25, 2024
5fce4a0
android: add `{Active,}EventLoopExtAndroid::android_app`
kchibisov Jul 26, 2024
77e8fe6
Windows: use `Box::leak()` instead of `Box::into_raw()`
daxpedda Aug 4, 2024
f3d1f92
macOS: skip releasing unavailable monitors
killercup Aug 5, 2024
fa3ec00
Add `ActiveEventLoop::system_theme()`
daxpedda Aug 5, 2024
8c07319
chore: drop libera link
kchibisov Aug 6, 2024
114512b
Winit version 0.30.5
kchibisov Aug 7, 2024
00ecd15
m: Ignore mutex poisoning in X11_BACKEND
notgull Aug 22, 2024
f4a5ad9
x11: use more information in X11 "not supported" errors
notgull Aug 23, 2024
838b245
macOS: add option to explicitly hide menu/dock in Borderless (#3882)
TarekAS Sep 4, 2024
cfe7eb8
Prevent winit from overriding LSUIElement in package manifests (#3920)
purajit Sep 16, 2024
6850900
chore: fix nightly CI on linux/ios
kchibisov Sep 23, 2024
1bc405e
macOS: Fix move event sometimes being triggered on resize (#3914)
madsmtm Sep 23, 2024
107bf91
x11: don't forward key events to IME when it's disabled
kchibisov Oct 13, 2024
485ae90
macOS: fix panic during drag_window
shanecelis Oct 22, 2024
9ceb8d4
Improve waiting for messages on Windows
AngelicosPhosphoros Oct 13, 2024
b02a70e
x11: iterate only visuals from the matching screen
strohel Oct 28, 2024
bbab3d8
x11: fix WindowAttributesExtX11::with_x11_screen()
strohel Oct 28, 2024
bab2d82
docs: add `fn main` to root examples
madsmtm Nov 12, 2024
1d18a6c
android: use show_soft_input to summon the keyboard
podusowski Nov 13, 2024
5c1cc65
Basic iOS IME support (#3823)
lucasmerlin Aug 19, 2024
fccfd35
macOS: set activation policy by default if app is not bundled (#3961)
nicoburns Nov 18, 2024
d828523
x11: move up XInput2 event registration
rodrigorc Nov 21, 2024
d6ab3dc
chore: fix clippy lints
madsmtm Dec 2, 2024
1fb1180
macOS: Fix crash when pressing Caps Lock (#4024)
madsmtm Dec 3, 2024
1e44c35
Fix MonitorHandle PartialEq and Hash on iOS (#4013)
madsmtm Dec 3, 2024
836e717
macOS: Fix checking for undocumented cursors (#4033)
slice Dec 8, 2024
f2fb7de
build(deps): bump EmbarkStudios/cargo-deny-action
dependabot[bot] Aug 4, 2024
cf829a4
ci: fix cargo deny
madsmtm Nov 21, 2024
6f22822
Update minimum version of `wasm-bindgen` (#3860)
daxpedda Aug 13, 2024
5d2151e
chore: fix typos
kchibisov Dec 16, 2024
82f0949
Winit version 0.30.6
kchibisov Dec 16, 2024
727583f
x11: fix KeyboardInput delivered twice with IME
kchibisov Dec 22, 2024
9cbce05
Winit version 0.30.7
kchibisov Dec 22, 2024
43c323c
windows: fix the event loop not waking on accessibility requests
mwcampbell Dec 23, 2024
6b5cc16
x11: add workaround for disabling IME on gnome
kchibisov Dec 23, 2024
61314cd
x11: fix cursor grab mode tracking on error
kchibisov Dec 31, 2024
d7710f7
api: add `ActivationToken::{from,into}_raw`
kchibisov Dec 31, 2024
58402b5
Winit version 0.30.8
kchibisov Jan 3, 2025
090498a
Use wrapper type for CFUUID (#4032)
killercup Jan 17, 2025
abfe90b
wayland: clear IME preedit only when necessary
tomcur Jan 17, 2025
3154c60
Document that we require cargo +nightly fmt (#4105)
madsmtm Jan 31, 2025
b77ea7d
x11: fix crash with uim
kchibisov Feb 3, 2025
487137b
x11: fix modifiers replay
kchibisov Feb 5, 2025
501d9b4
ios: fix timers
madsmtm Feb 6, 2025
1ae4f5c
Winit version 0.30.9
kchibisov Feb 5, 2025
37a4394
Remove apple/appkit/window.rs
madsmtm Mar 17, 2025
1db15b6
chore: fix clippy lints
kchibisov Feb 20, 2025
b9b2f16
Windows: add `IconExtWindows::from_resource_name` (#4137)
rctlmk Feb 26, 2025
ec7677d
Fix a pause in the event loop when clicking the title bar on windows …
aloucks Mar 17, 2025
c591089
macOS: Make set_simple_fullscreen honor set_borderless_game (#4164)
aloucks Mar 17, 2025
c6cfa04
x11:wayland: fix pump_events blocking with `Wait`
kchibisov Mar 17, 2025
aaecc92
chore: fix clippy issues
kchibisov Apr 6, 2025
114599c
wayland/fix: crash due consequent calls to set_cursor_grab
kchibisov Apr 20, 2025
a224b3d
windows: add locked cursor
robtfm Apr 25, 2025
53bbe6c
wayland: ensure external loop is notified with pump_events
kchibisov Apr 29, 2025
8475116
wayland: add WindowExtWayland::xdg_toplevel
ultimaweapon Apr 29, 2025
7672fd5
wayland: support fractional scale for custom cursor
jpy794 Apr 29, 2025
6556cde
macOS: Close windows automatically when exiting
madsmtm Mar 17, 2025
53321dc
Swizzle sendEvent: instead of subclassing NSApplication
madsmtm Apr 29, 2025
da7a096
fix: Support fractional refresh rates in video modes on macOS (#4191)
madsmtm Apr 29, 2025
57baf72
Allow the user to register the application delegate on iOS
madsmtm Aug 11, 2024
5f1e9f6
macOS: Store UUID in MonitorHandle instead of CGDirectDisplayID
madsmtm Mar 17, 2025
80bddda
macOS: Fix monitors connected via certain Thunderbolt hubs
madsmtm Apr 29, 2025
a26899a
windows: fix incorrect cursor_range calculation in Ime::Preedit
mitoma Apr 29, 2025
6db1343
wayland: bump wayland-rs to avoid yanked release
kchibisov Apr 29, 2025
2385410
Winit version 0.30.10
kchibisov Apr 29, 2025
f49a2a1
clippy: fix casing in windows backend
kchibisov May 2, 2025
17b5737
Fix typos from updated `typos` tool (#4213)
waywardmonkeys May 3, 2025
3930a63
ci/deny: allow scripts in zerocopy
kchibisov May 11, 2025
bd2b5cd
windows: Fix crash in for Windows versions < 17763
varphone May 14, 2025
f7ac812
wayland: fix pump events's loop drop deadlock
kchibisov May 17, 2025
2191eac
chore: appease clippy
kchibisov May 17, 2025
911fad0
Winit version 0.30.11
kchibisov May 17, 2025
cc43ea1
macOS: fix runtime crash on macos26 "type code 'q', but found 'Q'"
robert-wallis Jul 20, 2025
b49d34e
ci/deny: add rustix
kchibisov May 26, 2025
b248ecb
winit: silence wasm on nightly
kchibisov Jun 22, 2025
c0a8bed
chore: fix typos from updated `typos` tool
kchibisov Jul 23, 2025
f6893a4
Winit version 0.30.12
kchibisov Jul 23, 2025
ab4c6bf
macOS: fix a crash when dragging non-file content onto window
drhr Nov 5, 2025
7035dd5
winit-win32: Fix ABI mismatch in INIT_MAIN_THREAD_ID
itsamine27 Dec 16, 2025
3eb731f
winit-x11: replace xfixes with x11rb in set_hittest
BlueDrink9 Nov 25, 2025
69b8a07
winit-x11: fix debug mode overflow panic in `set_timestamp`
SuchAFuriousDeath Feb 24, 2026
bccc568
fix(macOS): clamp IME selected_range to prevent substringToIndex crash
Takaranoao Mar 1, 2026
17a73f4
win32: fix ime setcontext lparam
Touma-Kazusa2 Mar 1, 2026
6bb43fd
wayland: implement resize increments
pedrohgmacedo Mar 1, 2026
a9baf5e
fix(android): Populate `KeyEvent.text` via `Key::to_text()`
kchibisov Mar 2, 2026
efb5b37
chore: fix ci
kchibisov Mar 1, 2026
e9809ef
Winit version 0.30.13
kchibisov Mar 1, 2026
78eafc0
Merge branch 'warpdotdev/v0.30.x' into ben/apply-v0.30.1-patches-to-v…
oz-agent May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Android
/src/platform/android.rs @msiglreith @MarijnS95
/src/platform_impl/android @msiglreith @MarijnS95
/src/platform/android.rs @MarijnS95
/src/platform_impl/android @MarijnS95

# iOS
/src/platform/ios.rs @madsmtm
Expand All @@ -26,8 +26,8 @@
/src/platform_impl/web @daxpedda

# Windows
/src/platform/windows.rs @msiglreith
/src/platform_impl/windows @msiglreith
/src/platform/windows.rs @notgull
/src/platform_impl/windows @notgull

# Orbital (Redox OS)
/src/platform/orbital.rs @jackpot51
Expand Down
37 changes: 31 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
name: Check formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/checkout-action@v1
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
Expand All @@ -22,7 +22,7 @@
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: taiki-e/checkout-action@v1
- uses: taiki-e/install-action@v2
with:
tool: typos-cli
Expand Down Expand Up @@ -88,7 +88,7 @@
CMD: ${{ matrix.platform.cmd }}

steps:
- uses: actions/checkout@v4
- uses: taiki-e/checkout-action@v1

- name: Restore cache of cargo folder
# We use `restore` and later `save`, so that we can create the key after
Expand All @@ -107,7 +107,17 @@

- name: Generate lockfile
# Also updates the crates.io index
run: cargo generate-lockfile && cargo update -p ahash --precise 0.8.7 && cargo update -p bumpalo --precise 3.14.0
run: |
cargo generate-lockfile
cargo update -p ahash --precise 0.8.7
cargo update -p bumpalo --precise 3.14.0
cargo update -p softbuffer --precise 0.4.0
cargo update -p objc2-encode --precise 4.0.3
cargo update -p orbclient --precise 0.3.47
cargo update -p image --precise 0.25.0
cargo update -p gethostname@1.1.0 --precise 1.0.2
cargo update -p unicode-ident --precise 1.0.10
cargo update -p syn --precise 2.0.114

- name: Install GCC Multilib
if: (matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')
Expand Down Expand Up @@ -220,9 +230,24 @@
- { name: 'Windows', target: x86_64-pc-windows-gnu }

steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v1
- uses: taiki-e/checkout-action@v1
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check
log-level: error
arguments: --all-features --target ${{ matrix.platform.target }}

swc:
name: Minimize JavaScript
runs-on: ubuntu-latest

steps:
- uses: taiki-e/checkout-action@v1
- name: Install SWC
run: sudo npm i -g @swc/cli
- name: Run SWC
run: |
swc src/platform_impl/web/web_sys/worker.js -o src/platform_impl/web/web_sys/worker.min.js
- name: Check for diff
run: |
[[ -z $(git status -s) ]]

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
Comment on lines +241 to +253
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,5 @@ target/
rls/
.vscode/
*~
*.wasm
*.ts
*.js
#*#
.DS_Store
12 changes: 12 additions & 0 deletions .swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"minify": true,
"jsc": {
"target": "es2022",
"minify": {
"compress": {
"unused": true
},
"mangle": true
}
}
}
5 changes: 5 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ All patches have to be sent on Github as [pull requests][prs]. To simplify your
life during review it's recommended to check the "give contributors write access
to the branch" checkbox.

We use unstable Rustfmt options across the project, so please run
`cargo +nightly fmt` before submitting your work. If you are unable to do so,
the maintainers can do it for you before merging, just state so in your pull
request description.

#### Handling review

During the review process certain events could require an action from your side,
Expand Down
145 changes: 84 additions & 61 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "winit"
version = "0.30.1"
version = "0.30.13"
authors = [
"The winit contributors",
"Pierre Krieger <pierre.krieger1708@gmail.com>",
Expand All @@ -14,7 +14,17 @@ rust-version.workspace = true
repository.workspace = true
license.workspace = true
edition.workspace = true
exclude = ["/.cargo"]
include = [
"/build.rs",
"/docs",
"/examples",
"/FEATURES.md",
"/LICENSE",
"/src",
"!/src/platform_impl/web/script",
"/src/platform_impl/web/script/**/*.min.js",
"/tests",
]

[package.metadata.docs.rs]
features = [
Expand Down Expand Up @@ -86,11 +96,11 @@ rwh_06 = { package = "raw-window-handle", version = "0.6", features = [
], optional = true }
serde = { workspace = true, optional = true }
smol_str = "0.2.0"
tracing = { version = "0.1.40", default_features = false }
tracing = { version = "0.1.40", default-features = false }

[dev-dependencies]
image = { version = "0.25.0", default-features = false, features = ["png"] }
tracing = { version = "0.1.40", default_features = false, features = ["log"] }
tracing = { version = "0.1.40", default-features = false, features = ["log"] }
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
winit = { path = ".", features = ["rwh_05"] }

Expand All @@ -107,12 +117,12 @@ android-activity = "0.6.0"
ndk = { version = "0.9.0", default-features = false }

[target.'cfg(any(target_os = "ios", target_os = "macos"))'.dependencies]
block2 = "0.5.1"
core-foundation = "0.9.3"
objc2 = "0.5.2"
objc2 = { version = "0.5.2", features = ["relax-sign-encoding"] }

[target.'cfg(target_os = "macos")'.dependencies]
core-graphics = "0.23.1"
block2 = "0.5.1"

[target.'cfg(target_os = "macos")'.dependencies.objc2-foundation]
version = "0.2.2"
Expand All @@ -125,6 +135,7 @@ features = [
"NSDictionary",
"NSDistributedNotificationCenter",
"NSEnumerator",
"NSKeyValueObserving",
"NSNotification",
"NSObjCRuntime",
"NSPathUtilities",
Expand All @@ -142,6 +153,7 @@ features = [
"NSApplication",
"NSBitmapImageRep",
"NSButton",
"NSColor",
"NSControl",
"NSCursor",
"NSDragging",
Expand All @@ -168,11 +180,13 @@ features = [
[target.'cfg(target_os = "ios")'.dependencies.objc2-foundation]
version = "0.2.2"
features = [
"block2",
"dispatch",
"NSArray",
"NSEnumerator",
"NSGeometry",
"NSObjCRuntime",
"NSOperation",
"NSString",
"NSProcessInfo",
"NSThread",
Expand All @@ -187,6 +201,8 @@ features = [
"UIEvent",
"UIGeometry",
"UIGestureRecognizer",
"UITextInput",
"UITextInputTraits",
"UIOrientation",
"UIPanGestureRecognizer",
"UIPinchGestureRecognizer",
Expand Down Expand Up @@ -219,6 +235,7 @@ features = [
"Win32_System_Com",
"Win32_System_LibraryLoader",
"Win32_System_Ole",
"Win32_Security",
"Win32_System_SystemInformation",
"Win32_System_SystemServices",
"Win32_System_Threading",
Expand All @@ -238,7 +255,7 @@ features = [
[target.'cfg(all(unix, not(any(target_os = "redox", target_family = "wasm", target_os = "android", target_os = "ios", target_os = "macos"))))'.dependencies]
ahash = { version = "0.8.7", features = ["no-rng"], optional = true }
bytemuck = { version = "1.13.1", default-features = false, optional = true }
calloop = "0.12.3"
calloop = "0.13.0"
libc = "0.2.64"
memmap2 = { version = "0.9.0", optional = true }
percent-encoding = { version = "2.0", optional = true }
Expand All @@ -248,18 +265,18 @@ rustix = { version = "0.38.4", default-features = false, features = [
"thread",
"process",
] }
sctk = { package = "smithay-client-toolkit", version = "0.18.0", default-features = false, features = [
sctk = { package = "smithay-client-toolkit", version = "0.19.2", default-features = false, features = [
"calloop",
], optional = true }
sctk-adwaita = { version = "0.9.0", default_features = false, optional = true }
wayland-backend = { version = "0.3.0", default_features = false, features = [
sctk-adwaita = { version = "0.10.1", default-features = false, optional = true }
wayland-backend = { version = "0.3.10", default-features = false, features = [
"client_system",
], optional = true }
wayland-client = { version = "0.31.1", optional = true }
wayland-protocols = { version = "0.31.0", features = [
wayland-client = { version = "0.31.10", optional = true }
wayland-protocols = { version = "0.32.8", features = [
"staging",
], optional = true }
wayland-protocols-plasma = { version = "0.2.0", features = [
wayland-protocols-plasma = { version = "0.3.8", features = [
"client",
], optional = true }
x11-dl = { version = "2.19.1", optional = true }
Expand All @@ -277,57 +294,63 @@ xkbcommon-dl = "0.4.2"
orbclient = { version = "0.3.47", default-features = false }
redox_syscall = "0.4.1"

[target.'cfg(target_family = "wasm")'.dependencies.web_sys]
package = "web-sys"
version = "0.3.64"
features = [
'AbortController',
'AbortSignal',
'Blob',
'console',
'CssStyleDeclaration',
'Document',
'DomException',
'DomRect',
'DomRectReadOnly',
'Element',
'Event',
'EventTarget',
'FocusEvent',
'HtmlCanvasElement',
'HtmlElement',
'HtmlImageElement',
'ImageBitmap',
'ImageBitmapOptions',
'ImageBitmapRenderingContext',
'ImageData',
'IntersectionObserver',
'IntersectionObserverEntry',
'KeyboardEvent',
'MediaQueryList',
'MessageChannel',
'MessagePort',
'Node',
'PageTransitionEvent',
'PointerEvent',
'PremultiplyAlpha',
'ResizeObserver',
'ResizeObserverBoxOptions',
'ResizeObserverEntry',
'ResizeObserverOptions',
'ResizeObserverSize',
'VisibilityState',
'Window',
'WheelEvent',
'Url',
]

[target.'cfg(target_family = "wasm")'.dependencies]
js-sys = "0.3.64"
js-sys = "0.3.70"
pin-project = "1"
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
wasm-bindgen = "0.2.93"
wasm-bindgen-futures = "0.4.43"
web-time = "1"
web_sys = { package = "web-sys", version = "0.3.70", features = [
"AbortController",
"AbortSignal",
"Blob",
"BlobPropertyBag",
"console",
"CssStyleDeclaration",
"Document",
"DomException",
"DomRect",
"DomRectReadOnly",
"Element",
"Event",
"EventTarget",
"FocusEvent",
"HtmlCanvasElement",
"HtmlElement",
"HtmlImageElement",
"ImageBitmap",
"ImageBitmapOptions",
"ImageBitmapRenderingContext",
"ImageData",
"IntersectionObserver",
"IntersectionObserverEntry",
"KeyboardEvent",
"MediaQueryList",
"MessageChannel",
"MessagePort",
"Navigator",
"Node",
"OrientationLockType",
"OrientationType",
"PageTransitionEvent",
"Permissions",
"PermissionState",
"PermissionStatus",
"PointerEvent",
"PremultiplyAlpha",
"ResizeObserver",
"ResizeObserverBoxOptions",
"ResizeObserverEntry",
"ResizeObserverOptions",
"ResizeObserverSize",
"Screen",
"ScreenOrientation",
"Url",
"VisibilityState",
"WheelEvent",
"Window",
"Worker",
] }

[target.'cfg(all(target_family = "wasm", target_feature = "atomics"))'.dependencies]
atomic-waker = "1"
Expand Down
Loading
Loading