diff --git a/CHANGELOG.md b/CHANGELOG.md index 42d8421..d9f028f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,12 +13,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 This crate will maintain feature flags that allow picking whatever versions winit is exposing. As of writing this note, the choices are `rwh_05` and `rwh_06`. `rwh_05` was the feature that was activated in v0.2.0. +- `winit` has been updated to 0.30.0. +- `Window::id` now returns `Option`, as a window may be opened before + the event loop has been started. +- `WindowBehavior::build`, `WindowBehavior::build_with`, `WindowBehavior::open`, + and `WindowBehavior::open_with` now require exclusive references to the + application. +- These gesture events have been renamed to match `winit`'s updated nomenclature: + - `WindowBehavior::touchpad_magnify` -> `WindowBehavior::pinch_gesture` + - `WindowBehavior::smart_magnify` -> `WindowBehavior::double_tap_gesture` ### Changed - All `&Appplication` bounds now are `?Sized`, enabling `&dyn Application` parameters. +### Added + +- `AsApplication` now provides `as_application_mut`. +- `WindowBeahvior::pan_gesture` is a new event provided by `winit`. + ## v0.2.0 (2023-12-27) ### Breaking Changes diff --git a/Cargo.lock b/Cargo.lock index fec35ca..3e5e9f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -20,9 +20,9 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -33,12 +33,12 @@ dependencies = [ [[package]] name = "android-activity" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052ad56e336bcc615a214bffbeca6c181ee9550acec193f0327e0b103b033a4d" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.4.1", + "bitflags 2.5.0", "cc", "cesu8", "jni", @@ -91,9 +91,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -103,54 +103,44 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" - -[[package]] -name = "block-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dd7cf50912cddc06dc5ea7c08c5e81c1b2c842a70d19def1848d54c586fed92" -dependencies = [ - "objc-sys", -] +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "block2" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +checksum = "43ff7d91d3c1d568065b06c899777d1e48dcf76103a672a0adbc238a7f247f1e" dependencies = [ - "block-sys", "objc2", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "calloop" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "log", "polling", "rustix", @@ -172,12 +162,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -194,15 +185,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -210,9 +201,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -235,9 +226,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -259,12 +250,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.17" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "cursor-icon" @@ -284,14 +272,20 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.1", + "libloading", ] [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" [[package]] name = "equivalent" @@ -338,19 +332,19 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "gethostname" -version = "0.3.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "winapi", + "windows-targets 0.48.5", ] [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", @@ -359,26 +353,21 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] -name = "icrate" -version = "0.0.4" +name = "hermit-abi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" -dependencies = [ - "block2", - "dispatch", - "objc2", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown", @@ -408,46 +397,36 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.151" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "winapi", -] - -[[package]] -name = "libloading" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.5", ] [[package]] @@ -456,60 +435,51 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", + "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a69c7c189ae418f83003da62820aca28d15a07725ce51fb924999335d622ff" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "ndk" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "jni-sys", "log", "ndk-sys", "num_enum", "raw-window-handle 0.5.2", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.1", "thiserror", ] @@ -521,39 +491,27 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.5.0+25.2.9519653" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", -] - [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -563,25 +521,59 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" +checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" [[package]] name = "objc2" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +checksum = "b4b25e1034d0e636cd84707ccdaa9f81243d399196b8a773946dcffec0401659" dependencies = [ "objc-sys", "objc2-encode", ] [[package]] -name = "objc2-encode" -version = "3.0.0" +name = "objc2-app-kit" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" +checksum = "fb79768a710a9a1798848179edb186d1af7e8a8679f369e4b8d201dd2a034047" +dependencies = [ + "block2", + "objc2", + "objc2-core-data", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e092bc42eaf30a08844e6a076938c60751225ec81431ab89f5d1ccd9f958d6c" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88658da63e4cc2c8adb1262902cd6af51094df0488b760d6fd27194269c0950a" + +[[package]] +name = "objc2-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904" +dependencies = [ + "block2", + "dispatch", + "objc2", +] [[package]] name = "once_cell" @@ -614,25 +606,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] -name = "pin-project-lite" -version = "0.2.13" +name = "pin-project" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polling" -version = "3.3.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi", "pin-project-lite", "rustix", "tracing", @@ -641,37 +654,36 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_datetime", "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -684,18 +696,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] +checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" [[package]] name = "redox_syscall" @@ -708,11 +711,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -736,9 +739,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "sctk-adwaita" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729a30a469de249c6effc17ec8d039b0aa29b3af79b819b7f51cb6ab8046a90" +checksum = "7de61fa7334ee8ee1f5c3c58dcc414fb9361e7e8f5bff9d45f4d69eeb89a7169" dependencies = [ "ab_glyph", "log", @@ -749,18 +752,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", @@ -778,17 +781,17 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay-client-toolkit" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -809,9 +812,9 @@ dependencies = [ [[package]] name = "smol_str" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" dependencies = [ "serde", ] @@ -824,9 +827,9 @@ checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "syn" -version = "2.0.41" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -835,18 +838,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", @@ -855,9 +858,9 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", "arrayvec", @@ -869,9 +872,9 @@ dependencies = [ [[package]] name = "tiny-skia-path" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ "arrayref", "bytemuck", @@ -880,15 +883,15 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", @@ -925,9 +928,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "version_check" @@ -937,9 +940,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -953,9 +956,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -963,9 +966,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -978,9 +981,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -990,9 +993,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1000,9 +1003,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -1013,19 +1016,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wayland-backend" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" dependencies = [ "cc", "downcast-rs", - "nix", + "rustix", "scoped-tls", "smallvec", "wayland-sys", @@ -1033,12 +1036,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ - "bitflags 2.4.1", - "nix", + "bitflags 2.5.0", + "rustix", "wayland-backend", "wayland-scanner", ] @@ -1049,29 +1052,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" dependencies = [ - "nix", + "rustix", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.31.0" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -1083,7 +1086,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1096,7 +1099,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1105,9 +1108,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" dependencies = [ "proc-macro2", "quick-xml", @@ -1128,9 +1131,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -1138,54 +1141,23 @@ dependencies = [ [[package]] name = "web-time" -version = "0.2.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57099a701fb3a8043f993e8228dc24229c7b942e2b009a1b962e54489ba1d3bf" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] -[[package]] -name = "winapi-wsapoll" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" version = "0.45.0" @@ -1195,22 +1167,13 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1245,17 +1208,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -1272,9 +1236,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -1290,9 +1254,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -1308,9 +1272,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -1326,9 +1296,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -1344,9 +1314,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -1362,9 +1332,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -1380,43 +1350,46 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winit" -version = "0.29.4" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25d662bb83b511acd839534bb2d88521b0bbc81440969cb077d23c4db9e62c7" +checksum = "ea9e6d5d66cbf702e0dd820302144f51b69a95acdc495dd98ca280ff206562b1" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.4.1", + "bitflags 2.5.0", "bytemuck", "calloop", "cfg_aliases", + "concurrent-queue", "core-foundation", "core-graphics", "cursor-icon", - "icrate", + "dpi", "js-sys", "libc", - "log", "memmap2", "ndk", - "ndk-sys", "objc2", - "once_cell", + "objc2-app-kit", + "objc2-foundation", "orbclient", "percent-encoding", + "pin-project", "raw-window-handle 0.5.2", - "redox_syscall 0.3.5", + "raw-window-handle 0.6.1", + "redox_syscall", "rustix", "sctk-adwaita", "smithay-client-toolkit", "smol_str", + "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", @@ -1426,7 +1399,7 @@ dependencies = [ "wayland-protocols-plasma", "web-sys", "web-time", - "windows-sys 0.48.0", + "windows-sys 0.52.0", "x11-dl", "x11rb", "xkbcommon-dl", @@ -1434,9 +1407,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] @@ -1454,29 +1427,24 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.7.4", - "nix", + "libloading", "once_cell", - "winapi", - "winapi-wsapoll", + "rustix", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" -dependencies = [ - "nix", -] +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xcursor" @@ -1486,11 +1454,11 @@ checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] name = "xkbcommon-dl" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "dlib", "log", "once_cell", @@ -1505,18 +1473,18 @@ checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index be22d5b..d2a5ecc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,4 +20,4 @@ rwh_05 = ["winit/rwh_05"] [dependencies] -winit = { version = "0.29.3", default-features = false } +winit = { version = "0.30.0", default-features = false } diff --git a/src/lib.rs b/src/lib.rs index 165c9ce..2c2af94 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,13 +11,12 @@ use std::collections::HashMap; use std::process::exit; use std::sync::{mpsc, Arc, Mutex, PoisonError}; +use private::{OpenedWindow, WindowSpawner}; pub use window::{RunningWindow, Window, WindowAttributes, WindowBehavior, WindowBuilder}; pub use winit; +use winit::application::ApplicationHandler; use winit::error::{EventLoopError, OsError}; -use winit::event::Event; -use winit::event_loop::{ - ControlFlow, EventLoop, EventLoopBuilder, EventLoopProxy, EventLoopWindowTarget, -}; +use winit::event_loop::{ActiveEventLoop, ControlFlow, EventLoop, EventLoopProxy}; use winit::window::WindowId; use crate::private::{EventLoopMessage, WindowEvent, WindowMessage}; @@ -30,6 +29,16 @@ where event_loop: EventLoop>, message_callback: BoxedEventCallback, running: App, + pending_windows: Vec>, +} + +struct PendingWindow +where + AppMessage: Message, +{ + window: WindowAttributes, + sender: Arc>>, + spawner: WindowSpawner, } type BoxedEventCallback = Box< @@ -65,7 +74,7 @@ where event_callback: impl FnMut(AppMessage, &Windows) -> AppMessage::Response + 'static, ) -> Self { - let event_loop = EventLoopBuilder::with_user_event() + let event_loop = EventLoop::with_user_event() .build() .expect("should be able to create an EventLoop"); let proxy = event_loop.create_proxy(); @@ -76,6 +85,7 @@ where windows: Windows::default(), }, message_callback: Box::new(event_callback), + pending_windows: Vec::new(), } } @@ -87,55 +97,99 @@ where /// /// Returns an [`EventLoopError`] upon the loop exiting due to an error. See /// [`EventLoop::run`] for more information. - pub fn run(mut self) -> Result<(), EventLoopError> { - self.event_loop.run(move |event, target| { - target.set_control_flow(ControlFlow::Wait); - match event { - Event::WindowEvent { window_id, event } => { - let event = WindowEvent::from(event); - self.running - .windows - .send(window_id, WindowMessage::Event(event)); - } - Event::UserEvent(message) => match message { - EventLoopMessage::CloseWindow(window_id) => { - if self.running.windows.close(window_id) { - exit(0) - } - } - EventLoopMessage::WindowPanic(window_id) => { - if self.running.windows.close(window_id) { - exit(1) - } - } - EventLoopMessage::OpenWindow { - attrs, - sender, - open_sender, - } => { - let result = self.running.windows.open(target, attrs, sender); - let _result = open_sender.send(result); - } - EventLoopMessage::User { - message, - response_sender, - } => { - let _result = response_sender - .send((self.message_callback)(message, &self.running.windows)); - } - }, - Event::NewEvents(_) - | Event::MemoryWarning - | Event::DeviceEvent { .. } - | Event::Suspended - | Event::Resumed - | Event::LoopExiting - | Event::AboutToWait => {} - } + pub fn run(self) -> Result<(), EventLoopError> { + let Self { + event_loop, + message_callback, + running, + pending_windows, + } = self; + event_loop.run_app(&mut RunningApp:: { + message_callback, + running, + pending_windows, }) } } +struct RunningApp +where + AppMessage: Message, +{ + message_callback: BoxedEventCallback, + running: App, + pending_windows: Vec>, +} + +impl ApplicationHandler> for RunningApp +where + AppMessage: Message, +{ + fn resumed(&mut self, event_loop: &ActiveEventLoop) { + event_loop.set_control_flow(ControlFlow::Wait); + for PendingWindow { + window, + sender, + spawner, + } in self.pending_windows.drain(..) + { + // TODO how to handle open failure errors for pending windows? + let window = self + .running + .windows + .open(event_loop, window, sender) + .expect("error spawning initial window"); + spawner(window); + } + } + + fn window_event( + &mut self, + _event_loop: &ActiveEventLoop, + window_id: WindowId, + event: winit::event::WindowEvent, + ) { + let event = WindowEvent::from(event); + self.running + .windows + .send(window_id, WindowMessage::Event(event)); + } + + fn user_event(&mut self, event_loop: &ActiveEventLoop, message: EventLoopMessage) { + match message { + EventLoopMessage::CloseWindow(window_id) => { + if self.running.windows.close(window_id) { + exit(0) + } + } + EventLoopMessage::WindowPanic(window_id) => { + if self.running.windows.close(window_id) { + exit(1) + } + } + EventLoopMessage::OpenWindow { + attrs, + sender, + open_sender, + spawner, + } => { + let result = self.running.windows.open(event_loop, attrs, sender); + if let Ok(open) = &result { + spawner(open.clone()); + } + let _result = open_sender.send(result); + } + EventLoopMessage::User { + message, + response_sender, + } => { + let _result = + response_sender.send((self.message_callback)(message, &self.running.windows)); + } + } + } +} + /// A reference to a multi-window application. pub struct App where @@ -180,6 +234,11 @@ pub trait AsApplication { fn as_application(&self) -> &dyn Application where AppMessage: Message; + + /// Returns this type's application. + fn as_application_mut(&mut self) -> &mut dyn Application + where + AppMessage: Message; } impl AsApplication for T @@ -193,6 +252,13 @@ where { self } + + fn as_application_mut(&mut self) -> &mut dyn Application + where + AppMessage: Message, + { + self + } } /// A message with an associated response type. @@ -226,14 +292,17 @@ where AppMessage: Message, { fn open( - &self, + &mut self, window: WindowAttributes, sender: Arc>>, - ) -> Result>, OsError> { - self.running - .windows - .open(&self.event_loop, window, sender) - .map(Some) + spawner: WindowSpawner, + ) -> Result, OsError> { + self.pending_windows.push(PendingWindow { + window, + sender, + spawner, + }); + Ok(None) } } @@ -262,10 +331,11 @@ where AppMessage: Message, { fn open( - &self, + &mut self, attrs: WindowAttributes, sender: Arc>>, - ) -> Result>, OsError> { + spawner: WindowSpawner, + ) -> Result, OsError> { let (open_sender, open_receiver) = mpsc::sync_channel(1); if self .proxy @@ -273,6 +343,7 @@ where attrs, sender, open_sender, + spawner, }) .is_err() { @@ -305,24 +376,21 @@ impl Clone for Windows { } impl Windows { - /// Gets an instance of the winit window for the given window id, if it is - /// still open. + /// Gets an instance of the winit window for the given window id, if it has + /// been opened and is still open. pub fn get(&self, id: WindowId) -> Option> { let windows = self.data.lock().map_or_else(PoisonError::into_inner, |g| g); - windows.get(&id).map(|w| w.winit.clone()) + windows.get(&id).and_then(|w| w.winit.winit()) } #[allow(unsafe_code)] - fn open( + fn open( &self, - target: &EventLoopWindowTarget>, + target: &ActiveEventLoop, attrs: WindowAttributes, sender: Arc>>, - ) -> Result, OsError> - where - AppMessage: crate::Message, - { - let mut builder = winit::window::WindowBuilder::new() + ) -> Result { + let mut builder = winit::window::WindowAttributes::default() .with_active(attrs.active) .with_resizable(attrs.resizable) .with_enabled_buttons(attrs.enabled_buttons) @@ -370,10 +438,12 @@ impl Windows { if let Some(resize_increments) = attrs.resize_increments { builder = builder.with_resize_increments(resize_increments); } - let winit = Arc::new(builder.build(target)?); + let winit = Arc::new(target.create_window(builder)?); + let id = winit.id(); + let winit = OpenedWindow(Arc::new(Mutex::new(Some(winit)))); let mut windows = self.data.lock().map_or_else(PoisonError::into_inner, |g| g); windows.insert( - winit.id(), + id, OpenWindow { winit: winit.clone(), sender, @@ -406,6 +476,6 @@ impl Windows { } struct OpenWindow { - winit: Arc, + winit: OpenedWindow, sender: Arc>>, } diff --git a/src/private.rs b/src/private.rs index c636438..0b41a42 100644 --- a/src/private.rs +++ b/src/private.rs @@ -1,5 +1,5 @@ use std::path::PathBuf; -use std::sync::{mpsc, Arc}; +use std::sync::{mpsc, Arc, Mutex, PoisonError}; use winit::dpi::{PhysicalPosition, PhysicalSize}; use winit::error::OsError; @@ -13,15 +13,30 @@ use winit::window::{ActivationToken, Theme, WindowId}; use crate::window::WindowAttributes; use crate::Message; +pub type WindowSpawner = Box; + pub trait ApplicationSealed where AppMessage: Message, { fn open( - &self, + &mut self, window: WindowAttributes, sender: Arc>>, - ) -> Result>, OsError>; + spawner: WindowSpawner, + ) -> Result, OsError>; +} + +#[derive(Clone, Debug)] +pub struct OpenedWindow(pub(crate) Arc>>>); + +impl OpenedWindow { + pub fn winit(&self) -> Option> { + self.0 + .lock() + .map_or_else(PoisonError::into_inner, |g| g) + .clone() + } } pub enum EventLoopMessage @@ -31,7 +46,8 @@ where OpenWindow { attrs: WindowAttributes, sender: Arc>>, - open_sender: mpsc::SyncSender, OsError>>, + open_sender: mpsc::SyncSender>, + spawner: WindowSpawner, }, CloseWindow(WindowId), WindowPanic(WindowId), @@ -219,15 +235,20 @@ pub enum WindowEvent { /// - **iOS / Android / Web / Wayland / Windows:** Unsupported. Occluded(bool), - TouchpadMagnify { + PinchGesture { device_id: DeviceId, delta: f64, phase: TouchPhase, }, - SmartMagnify { + PanGesture { + device_id: DeviceId, + delta: PhysicalPosition, + phase: TouchPhase, + }, + DoubleTapGesture { device_id: DeviceId, }, - TouchpadRotate { + RotationGesture { device_id: DeviceId, delta: f32, phase: TouchPhase, @@ -329,23 +350,30 @@ impl From for WindowEvent { }, winit::event::WindowEvent::ThemeChanged(theme) => Self::ThemeChanged(theme), winit::event::WindowEvent::Occluded(occluded) => Self::Occluded(occluded), - winit::event::WindowEvent::TouchpadMagnify { + winit::event::WindowEvent::PinchGesture { device_id, delta, phase, - } => Self::TouchpadMagnify { + } => Self::PinchGesture { device_id, delta, phase, }, - winit::event::WindowEvent::SmartMagnify { device_id } => { - Self::SmartMagnify { device_id } + winit::event::WindowEvent::PanGesture { device_id, delta, phase } => { + Self::PanGesture { + device_id, + delta, + phase, + } } - winit::event::WindowEvent::TouchpadRotate { + winit::event::WindowEvent::DoubleTapGesture { device_id } => { + Self::DoubleTapGesture { device_id } + } + winit::event::WindowEvent::RotationGesture { device_id, delta, phase, - } => Self::TouchpadRotate { + } => Self::RotationGesture { device_id, delta, phase, diff --git a/src/window.rs b/src/window.rs index 0079935..3139afb 100644 --- a/src/window.rs +++ b/src/window.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use std::ops::{Deref, DerefMut}; use std::panic::AssertUnwindSafe; use std::path::PathBuf; -use std::sync::{mpsc, Arc, Weak}; +use std::sync::{mpsc, Arc, PoisonError, Weak}; use std::thread; use std::time::{Duration, Instant}; @@ -15,7 +15,7 @@ use winit::event::{ use winit::keyboard::PhysicalKey; use winit::window::{Fullscreen, Icon, Theme, WindowButtons, WindowId, WindowLevel}; -use crate::private::{self, WindowEvent}; +use crate::private::{self, OpenedWindow, WindowEvent, WindowSpawner}; use crate::{ App, Application, AsApplication, EventLoopMessage, Message, PendingApp, WindowMessage, Windows, }; @@ -23,15 +23,20 @@ use crate::{ /// A weak reference to a running window. #[derive(Debug, Clone)] pub struct Window { - id: WindowId, + opened: OpenedWindow, sender: Weak>>, } impl Window { /// Returns the winit id of the window. #[must_use] - pub const fn id(&self) -> WindowId { - self.id + pub fn id(&self) -> Option { + self.opened + .0 + .lock() + .map_or_else(PoisonError::into_inner, |g| g) + .as_ref() + .map(|w| w.id()) } /// Sends a message to the window. @@ -68,7 +73,7 @@ where AppMessage: Message, Application: ?Sized, { - owner: &'a Application, + owner: &'a mut Application, context: Behavior::Context, attributes: WindowAttributes, } @@ -156,7 +161,7 @@ pub struct WindowAttributes { impl Default for WindowAttributes { fn default() -> Self { let defaults = winit::window::WindowAttributes::default(); - let fullscreen = defaults.fullscreen().cloned(); + let fullscreen = defaults.fullscreen.clone(); Self { inner_size: defaults.inner_size, min_inner_size: defaults.min_inner_size, @@ -187,7 +192,7 @@ where Application: crate::AsApplication + ?Sized, AppMessage: Message, { - pub(crate) fn new(owner: &'a Application, context: Behavior::Context) -> Self { + pub(crate) fn new(owner: &'a mut Application, context: Behavior::Context) -> Self { Self { owner, context, @@ -212,37 +217,45 @@ where // by always using try_send. let (sender, receiver) = mpsc::sync_channel(65536); let sender = Arc::new(sender); - let Some(winit) = self - .owner - .as_application() - .open(self.attributes, sender.clone())? + let app = self.owner.as_application().app(); + let Some(winit) = self.owner.as_application_mut().open( + self.attributes, + sender.clone(), + Box::new({ + let sender = sender.clone(); + move |opened| { + let winit = opened.winit().expect("just opened"); + let running_window = RunningWindow { + messages: (sender, receiver), + responses: mpsc::sync_channel(1), + app, + occluded: winit.is_visible().unwrap_or(false), + focused: winit.has_focus(), + inner_size: winit.inner_size(), + position: winit.inner_position().unwrap_or_default(), + scale: winit.scale_factor(), + theme: winit.theme().unwrap_or(Theme::Dark), + window: winit, + opened, + next_redraw_target: None, + close: false, + modifiers: Modifiers::default(), + cursor_position: None, + mouse_buttons: HashSet::default(), + keys: HashSet::default(), + }; + + thread::spawn(move || running_window.run_with::(self.context)); + } + }), + )? else { return Ok(None); }; let window = Window { - id: winit.id(), + opened: winit.clone(), sender: Arc::downgrade(&sender), }; - let running_window = RunningWindow { - messages: (sender, receiver), - responses: mpsc::sync_channel(1), - app: self.owner.as_application().app(), - occluded: winit.is_visible().unwrap_or(false), - focused: winit.has_focus(), - inner_size: winit.inner_size(), - position: winit.inner_position().unwrap_or_default(), - scale: winit.scale_factor(), - theme: winit.theme().unwrap_or(Theme::Dark), - window: winit, - next_redraw_target: None, - close: false, - modifiers: Modifiers::default(), - cursor_position: None, - mouse_buttons: HashSet::default(), - keys: HashSet::default(), - }; - - thread::spawn(move || running_window.run_with::(self.context)); Ok(Some(window)) } @@ -257,6 +270,7 @@ where AppMessage: Message, { window: Arc, + opened: OpenedWindow, next_redraw_target: Option, messages: SyncArcChannel>, responses: SyncChannel, @@ -288,7 +302,7 @@ where #[must_use] pub fn handle(&self) -> Window { Window { - id: self.window.id(), + opened: self.opened.clone(), sender: Arc::downgrade(&self.messages.0), } } @@ -625,24 +639,31 @@ where WindowEvent::Touch(touch) => { behavior.touch(self, touch); } - WindowEvent::TouchpadMagnify { + WindowEvent::PinchGesture { device_id, delta, phase, } => { - behavior.touchpad_magnify(self, device_id, delta, phase); + behavior.pinch_gesture(self, device_id, delta, phase); } - WindowEvent::SmartMagnify { device_id } => { - behavior.smart_magnify(self, device_id); + WindowEvent::PanGesture { + device_id, + delta, + phase, + } => { + behavior.pan_gesture(self, device_id, delta, phase); } - WindowEvent::TouchpadRotate { + WindowEvent::DoubleTapGesture { device_id } => { + behavior.double_tap_gesture(self, device_id); + } + WindowEvent::RotationGesture { device_id, delta, phase, } => { behavior.touchpad_rotate(self, device_id, delta, phase); } - WindowEvent::ActivationTokenDone { .. } => todo!(), + WindowEvent::ActivationTokenDone { .. } => {} }, } @@ -707,10 +728,11 @@ where AppMessage: Message, { fn open( - &self, + &mut self, attrs: WindowAttributes, sender: Arc>>, - ) -> Result>, OsError> { + spawner: WindowSpawner, + ) -> Result, OsError> { let (open_sender, open_receiver) = mpsc::sync_channel(1); if self .app @@ -719,6 +741,7 @@ where attrs, sender, open_sender, + spawner, }) .is_ok() { @@ -774,7 +797,7 @@ where type Context: Send; /// Returns a new window builder for this behavior. When the window is /// initialized, a default [`Context`](Self::Context) will be passed. - fn build(app: &App) -> WindowBuilder<'_, Self, App, AppMessage> + fn build(app: &mut App) -> WindowBuilder<'_, Self, App, AppMessage> where App: AsApplication + ?Sized, Self::Context: Default, @@ -785,7 +808,7 @@ where /// Returns a new window builder for this behavior. When the window is /// initialized, the provided context will be passed. fn build_with( - app: &App, + app: &mut App, context: Self::Context, ) -> WindowBuilder<'_, Self, App, AppMessage> where @@ -815,8 +838,8 @@ where where Self::Context: Default, { - let app = PendingApp::new_with_event_callback(app_callback); - Self::open(&app).expect("error opening initial window"); + let mut app = PendingApp::new_with_event_callback(app_callback); + Self::open(&mut app).expect("error opening initial window"); app.run() } @@ -838,8 +861,8 @@ where app_callback: impl FnMut(AppMessage, &Windows) -> AppMessage::Response + 'static, ) -> Result<(), EventLoopError> { - let app = PendingApp::new_with_event_callback(app_callback); - Self::open_with(&app, context).expect("error opening initial window"); + let mut app = PendingApp::new_with_event_callback(app_callback); + Self::open_with(&mut app, context).expect("error opening initial window"); app.run() } @@ -853,7 +876,7 @@ where /// /// The only errors this funciton can return arise from /// [`winit::window::WindowBuilder::build`]. - fn open(app: &App) -> Result>, OsError> + fn open(app: &mut App) -> Result>, OsError> where App: AsApplication + ?Sized, Self::Context: Default, @@ -872,7 +895,7 @@ where /// The only errors this funciton can return arise from /// [`winit::window::WindowBuilder::build`]. fn open_with( - app: &App, + app: &mut App, context: Self::Context, ) -> Result>, OsError> where @@ -1025,9 +1048,9 @@ where #[allow(unused_variables)] fn touch(&mut self, window: &mut RunningWindow, touch: Touch) {} - /// A touchpad-originated magnification gesture. + /// A magnification gesture. #[allow(unused_variables)] - fn touchpad_magnify( + fn pinch_gesture( &mut self, window: &mut RunningWindow, device_id: DeviceId, @@ -1036,9 +1059,20 @@ where ) { } + /// A pan/scroll gesture. + #[allow(unused_variables)] + fn pan_gesture( + &mut self, + window: &mut RunningWindow, + device_id: DeviceId, + delta: PhysicalPosition, + phase: TouchPhase, + ) { + } + /// A request to smart-magnify the window. #[allow(unused_variables)] - fn smart_magnify(&mut self, window: &mut RunningWindow, device_id: DeviceId) {} + fn double_tap_gesture(&mut self, window: &mut RunningWindow, device_id: DeviceId) {} /// A touchpad-originated rotation gesture. #[allow(unused_variables)] @@ -1066,8 +1100,8 @@ pub trait Run: WindowBehavior<()> { where Self::Context: Default, { - let app = PendingApp::new(); - Self::open(&app).expect("error opening initial window"); + let mut app = PendingApp::new(); + Self::open(&mut app).expect("error opening initial window"); app.run() } @@ -1076,8 +1110,8 @@ pub trait Run: WindowBehavior<()> { /// This function is shorthand for creating a [`PendingApp`], opening this /// window inside of it, and running the pending app. fn run_with(context: Self::Context) -> Result<(), EventLoopError> { - let app = PendingApp::new(); - Self::open_with(&app, context).expect("error opening initial window"); + let mut app = PendingApp::new(); + Self::open_with(&mut app, context).expect("error opening initial window"); app.run() } }