diff --git a/Cargo.lock b/Cargo.lock index fb87b4cc170..908148e9993 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2528,13 +2528,12 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "drm" @@ -5381,6 +5380,7 @@ dependencies = [ "const-field-offset", "criterion", "derive_more", + "enumflags2", "euclid", "fontique", "gettext-rs", @@ -14035,12 +14035,11 @@ dependencies = [ [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "cfg_aliases", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "libc", "raw-window-handle", "rustix 1.1.4", @@ -14061,11 +14060,10 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "android-activity 0.6.1", "bitflags 2.11.1", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "ndk 0.9.0", "raw-window-handle", "smol_str 0.3.2", @@ -14076,12 +14074,11 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", "dispatch2", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", @@ -14098,7 +14095,6 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "block2 0.6.2", "memmap2", @@ -14115,11 +14111,10 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "keyboard-types 0.8.3", "raw-window-handle", "smol_str 0.3.2", @@ -14129,10 +14124,9 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "libredox", "orbclient", "raw-window-handle", @@ -14145,12 +14139,11 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", "dispatch2", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -14165,12 +14158,11 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "calloop 0.14.4", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "foldhash 0.2.0", "libc", "memmap2", @@ -14191,13 +14183,12 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "atomic-waker", "bitflags 2.11.1", "concurrent-queue", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "js-sys", "pin-project", "raw-window-handle", @@ -14213,11 +14204,10 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "raw-window-handle", "smol_str 0.3.2", "tracing", @@ -14229,17 +14219,17 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" dependencies = [ "bitflags 2.11.1", "bytemuck", "calloop 0.14.4", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2", "libc", "percent-encoding", "raw-window-handle", "rustix 1.1.4", + "rustversion", "smol_str 0.3.2", "tracing", "winit-common", diff --git a/api/cpp/cbindgen.rs b/api/cpp/cbindgen.rs index 1bba7a7dccd..355a369b568 100644 --- a/api/cpp/cbindgen.rs +++ b/api/cpp/cbindgen.rs @@ -375,7 +375,6 @@ fn gen_corelib( "Rect", "SortOrder", "BitmapFont", - "DataTransferOpaque", ] .iter() .chain(items.iter()) @@ -579,7 +578,6 @@ fn gen_corelib( ), ( vec![ - "DataTransferOpaque", "slint_data_transfer_init_default", "slint_data_transfer_drop", "slint_data_transfer_clone", diff --git a/api/cpp/include/private/slint_data_transfer.h b/api/cpp/include/private/slint_data_transfer.h index ad72194e36c..a7c6a55ae06 100644 --- a/api/cpp/include/private/slint_data_transfer.h +++ b/api/cpp/include/private/slint_data_transfer.h @@ -156,10 +156,8 @@ struct DataTransfer } private: - /// Storage matching the size and alignment of `DataTransfer` in `i_slint_core`. /// All operations on this field go through the `slint_data_transfer_*` FFI functions; /// it is never inspected directly from C++. See - /// `i_slint_core::data_transfer::ffi::DataTransferOpaque`. - cbindgen_private::types::DataTransferOpaque _inner; + cbindgen_private::types::DataTransfer _inner; }; } diff --git a/api/rs/slint/Cargo.toml b/api/rs/slint/Cargo.toml index f517fd48067..041c1d4dce9 100644 --- a/api/rs/slint/Cargo.toml +++ b/api/rs/slint/Cargo.toml @@ -20,7 +20,9 @@ path = "lib.rs" [features] -default = ["std", "backend-default", "renderer-femtovg", "renderer-software", "accessibility", "compat-1-2"] +# default = ["std", "backend-default", "renderer-femtovg", "renderer-software", "accessibility", "compat-1-2"] +# HACK: Required to build on macOS. +default = ["std", "backend-default", "renderer-femtovg", "renderer-software", "compat-1-2"] ## Mandatory feature: ## This feature is required to keep the compatibility with Slint 1.2 diff --git a/examples/bevy/Cargo.lock b/examples/bevy/Cargo.lock index 66474940abc..2020252dae6 100644 --- a/examples/bevy/Cargo.lock +++ b/examples/bevy/Cargo.lock @@ -605,9 +605,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" @@ -626,11 +626,11 @@ dependencies = [ [[package]] name = "bevy" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ef678e8907c48bf206808fc5fb946e2de4fc5c3991de03a10a283bebdfbf78" +checksum = "d66de79f9778e3458ca92a5a855b9e11cc4ec1b15a6c4330d8244a08d22539d9" dependencies = [ - "bevy_internal 0.19.0-rc.1", + "bevy_internal 0.19.0-rc.2", ] [[package]] @@ -638,8 +638,8 @@ name = "bevy-example" version = "1.17.0" dependencies = [ "async-compat", - "bevy 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", + "bevy 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", "reqwest", "slint", "smol", @@ -660,8 +660,8 @@ dependencies = [ name = "bevy-hosts-slint-gpu" version = "1.17.0" dependencies = [ - "bevy 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", + "bevy 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", "slint", "spin_on", "wgpu 29.0.3", @@ -682,15 +682,15 @@ dependencies = [ [[package]] name = "bevy_a11y" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9c3464297ced2b785d3b1504cca11e01f0a9da824692665fd79940718e2692" +checksum = "ded05cb8442d7dae06bf4537b04ef962a955054da9cfe0f3696bcc1fd4030819" dependencies = [ "accesskit 0.24.0", - "bevy_app 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", ] [[package]] @@ -704,9 +704,9 @@ dependencies = [ [[package]] name = "bevy_android" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6947b105508d437424992d8c1b856a9e2c369b0fe7607e74847165ef3a08aba0" +checksum = "64541e1030f7da413ee8cdb33ab0f495faa9f6abc091f52ae3e6c92c62b87cc2" dependencies = [ "android-activity", ] @@ -746,23 +746,23 @@ dependencies = [ [[package]] name = "bevy_animation" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9001d23a5fbf83d3ae1f39e7dafa953fc78f44692d9b0776d61c76073b4c3dc" -dependencies = [ - "bevy_animation_macros 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0889790e52bde480f668587a47d9fcb22897eb52f7f9382347fd1cad0bee17" +dependencies = [ + "bevy_animation_macros 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "blake3", "derive_more", "downcast-rs 2.0.2", @@ -790,11 +790,11 @@ dependencies = [ [[package]] name = "bevy_animation_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd34925fff8a6bbb2ea26a62ca0d0151cbb8fe4e302c58b632e621f0c789157" +checksum = "dbfe909f9337dbde81937a8a0c2cd694fc922fd7965efbc2b97813cbe04f4ed6" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "quote", "syn", ] @@ -823,23 +823,23 @@ dependencies = [ [[package]] name = "bevy_anti_alias" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a9715d5282e4d33456927ad5a9ca7987e01da1ea231729365ab204e9d92827" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2068cd69ce074767740fa0b8918f194674fac65a96637809830a63970ff9d1bd" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "tracing", ] @@ -868,16 +868,16 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e63dc8d2c454ba3eb07775d741c3e73ce382c40430a65a6fe91449e08dc3c02" +checksum = "28f104d73dc68aeb3302cc707b0d7b9dfffc968af1e317eb2a8c763637978f87" dependencies = [ - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "console_error_panic_hook", "ctrlc", "downcast-rs 2.0.2", @@ -933,9 +933,9 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c3503406735c503018e015af8db601292f24f7f2842cf0e9f4269582a89545" +checksum = "344fcbc5ddd6d8bb30e345f49e57aaa09a0d0c1a1c3ff799f4e24d7d31a58f0d" dependencies = [ "async-broadcast", "async-channel", @@ -943,15 +943,15 @@ dependencies = [ "async-io", "async-lock", "atomicow", - "bevy_android 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset_macros 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_android 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset_macros 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bitflags 2.11.1", "blake3", "crossbeam-channel", @@ -988,11 +988,11 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a72fcaea57a407db6061044790cd6e7f9ff607e36ede25d6bb7b96f0b995e16" +checksum = "4c4df7c9dc906c5fe51eb04acf074da3da5a25dbd52a076d6ce411586e7b5866" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "proc-macro2", "quote", "syn", @@ -1018,16 +1018,16 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d02f6abd3a44c340d8189f2ed15b0a863fb38474ed1a5f6b9a1217a97255d41" +checksum = "f93a4c0fb3ceeb72f4c871f2e267bf7fb95b370abaa359a49a861fff304391b9" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", "rodio 0.22.2", "tracing", ] @@ -1060,22 +1060,22 @@ dependencies = [ [[package]] name = "bevy_camera" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0854bdfb1b50a3496722e1a609bcf7aa3d18d9731dc92770f2d00ee155930c3" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5067df9940c9a2cfff3afa16910b08b7ce4d1faeeb92cb3b58a3311e8f203d" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "derive_more", "downcast-rs 2.0.2", "serde", @@ -1086,14 +1086,14 @@ dependencies = [ [[package]] name = "bevy_clipboard" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5523079b3f4a25120109de0e80365d665551c7e2742f8fe13790c327994dd03b" +checksum = "de485eced85ffb469571a9cbb831d6a64aa2c1c95422a37fd00a3014fd89e5f0" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1117,12 +1117,12 @@ dependencies = [ [[package]] name = "bevy_color" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbfd50ea069378e87c609da8380f39c03f307648331448cc303efae9aa84d5ab" +checksum = "934c2aaae8a81c52abe727eb81775277474a8ae3fabcaa7b1043a95021d35c5c" dependencies = [ - "bevy_math 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", "bytemuck", "derive_more", "encase", @@ -1163,28 +1163,28 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aec5708a2e235aedc9700542f06bdb1c1a9882ba4615dc854f424d581f94ab06" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_light 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36fabecc78291f004067e67017ed0f659ba9e79fb0f1146b3b753527241f6e66" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_light 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "bitflags 2.11.1", "indexmap", "nonmax", @@ -1203,11 +1203,11 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4e389d7f9172ec485936442b531b05d3c655620809a7086c3a79b965a026c9f" +checksum = "77ce110186ef6ea695480a508070fda700f2186420b60c4a4095ab04c8010685" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "quote", "syn", ] @@ -1243,33 +1243,33 @@ dependencies = [ [[package]] name = "bevy_dev_tools" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0052fc4cb2be1f6c4f9f422ce16e11e5d408f7b218e42644703ffad7fc81341" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_pbr 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_state 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_ui 0.19.0-rc.1", - "bevy_ui_render 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b66f42bce99517524ebbacc739ef6e10c87dc45e1f9d3f40e6923dd19406a09" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_pbr 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_state 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_ui 0.19.0-rc.2", + "bevy_ui_render 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "tracing", ] @@ -1293,16 +1293,16 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b26a7607e9f2fbc7ae34a12574680307229377ded15729fa5d8c151740ee02e" +checksum = "e27715d97181fbfe169243cd2d8a629eff1538d81cb55198279d6ea8e4bdaa42" dependencies = [ "atomic-waker", - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", "const-fnv1a-hash", "log", "serde", @@ -1339,17 +1339,17 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0b0ce185ba075ea0f4217b9aaac9a78e0ca189fd6c0d5f28c7d355ed0c2b8f" +checksum = "f6129aba8aa2e48f834842233ac808205ff0a15dce1db5985ff9527a89e4f932" dependencies = [ "arrayvec", - "bevy_ecs_macros 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_ptr 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_ecs_macros 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_ptr 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bitflags 2.11.1", "bumpalo", "concurrent-queue", @@ -1367,11 +1367,11 @@ dependencies = [ [[package]] name = "bevy_ecs_macro_logic" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b92ee37a28c68aefa78e7aa845b4e5f0516cf0b66fd96739b65941ea63aba0a" +checksum = "04ea00892a6851d3eea365228b1e972805410656043eea137f91990ad0cf8dc6" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "proc-macro2", "quote", "syn", @@ -1391,12 +1391,12 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5696ec149460b77a70e40e7873cc750038ef628e4e52600d9bfebad6cd92120e" +checksum = "63c96cb4b5a81501b68f2d61f181cf0c868e69f2c005f55e530e8fbd2ed3a06b" dependencies = [ "bevy_ecs_macro_logic", - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "proc-macro2", "quote", "syn", @@ -1414,11 +1414,11 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a773cdf71a24589bdc7c37f344f27b2b5aad99bcae2b20e323616fe473ae1cf1" +checksum = "6e90eadd102769650cf65ae39b8722ce92bf53ab548685636e2f2101d1d7bd4b" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "encase_derive_impl", ] @@ -1454,33 +1454,33 @@ dependencies = [ [[package]] name = "bevy_feathers" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5010f0abf3bcb16f4e3767c604cad92bd756eddb3fe1ae17252cc704ca2d356a" +checksum = "015b76f0be981c6c4c4996b746e4e93aae7a968deeb150d0d70a0a7c8cd2ee24" dependencies = [ "accesskit 0.24.0", - "bevy_a11y 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_scene 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_ui 0.19.0-rc.1", - "bevy_ui_render 0.19.0-rc.1", - "bevy_ui_widgets 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_a11y 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_scene 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_ui 0.19.0-rc.2", + "bevy_ui_render 0.19.0-rc.2", + "bevy_ui_widgets 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "smol_str 0.2.2", ] @@ -1502,15 +1502,15 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70b355f0f86e468ee92468a2a259b83d895ba26600b7405e63349f3d7767cde" +checksum = "631d7fc3d0f5ce3a49c319b394c864f0507c7b859c7f490e4a93ced1cb7930c3" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", "gilrs", "thiserror 2.0.18", "tracing", @@ -1538,25 +1538,25 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3bb89879490c4b075ed77a8f79640e53bf0ddf5332d17b0a9d42fddd845c15" +checksum = "1f0f59390f390748562776b85e2fb2d14d51a49b1084b20a20c62c404f953ffb" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_gizmos_macros 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_gizmos_macros 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", ] [[package]] @@ -1572,11 +1572,11 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312eba9608cafe645ff4150bad8c5889583f57c46b3d019aea6235ed9ededb5c" +checksum = "b6f0643399765655d53c399ed7e3b5eaa1da1132a8349452dd52451dc612cbb5" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "quote", "syn", ] @@ -1608,29 +1608,29 @@ dependencies = [ [[package]] name = "bevy_gizmos_render" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ab3b6e339959624a08107b33933547fbdfb4f29e578cdab65fcea2fffee7bf" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_gizmos 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f350f91b5fc925fb6b9d7e3d038eb2f9f47a30f25e598337b151dd1287cfe5" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_gizmos 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", "bevy_material", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_pbr 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_sprite_render 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_pbr 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_sprite_render 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bytemuck", "tracing", ] @@ -1673,27 +1673,27 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea5d085070c077938f0d91db9f9942b40109332768f01284c623a7f94981e38" +checksum = "54f95e926b8b806ca48f7c01095648f373f8fd7079b9c76f3dceccd9ed086ce8" dependencies = [ "async-lock", "base64", - "bevy_animation 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_light 0.19.0-rc.1", + "bevy_animation 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_light 0.19.0-rc.2", "bevy_material", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", "bevy_world_serialization", "fixedbitset", "gltf", @@ -1738,18 +1738,18 @@ dependencies = [ [[package]] name = "bevy_image" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7786f818420a4053d53b0b56544fd7971bcd26b440990d95ccb7b6356223e32" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa87f3aeb7bef218a51d97309c596f280b9c74b247ceefb4ebc10047accd0df" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bitflags 2.11.1", "bytemuck", "futures-lite", @@ -1784,15 +1784,15 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f268ea8c952da8cbb930f320c1ea217dbedca1d67c0cfcd2205469754886c3" +checksum = "208968122f122a81e6022fbf46796defa805cb85a72bd27335dfa9e4f12e59a4" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", "derive_more", "log", "smol_str 0.2.2", @@ -1818,17 +1818,17 @@ dependencies = [ [[package]] name = "bevy_input_focus" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249266eb4b835996b44735042df58756eb3e21299c4f90f31dce7e9b0715cb0a" +checksum = "9570109dde25e58adb8b5a61e5229a65ed3db1b996c2f2af8689ec7d175df71b" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "log", "thiserror 2.0.18", ] @@ -1890,60 +1890,60 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d8d3fc5c40a0ab49c195a2dcbce38ffbb5c6028c0d35223ab9072a826c2e78" -dependencies = [ - "bevy_a11y 0.19.0-rc.1", - "bevy_android 0.19.0-rc.1", - "bevy_animation 0.19.0-rc.1", - "bevy_anti_alias 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_audio 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e246a3080097f5332f4ecd1e62fd9540912468f7ad3ceeb5b5acd3cc2ad42094" +dependencies = [ + "bevy_a11y 0.19.0-rc.2", + "bevy_android 0.19.0-rc.2", + "bevy_animation 0.19.0-rc.2", + "bevy_anti_alias 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_audio 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", "bevy_clipboard", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_dev_tools 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_feathers 0.19.0-rc.1", - "bevy_gilrs 0.19.0-rc.1", - "bevy_gizmos 0.19.0-rc.1", - "bevy_gizmos_render 0.19.0-rc.1", - "bevy_gltf 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_light 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_dev_tools 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_feathers 0.19.0-rc.2", + "bevy_gilrs 0.19.0-rc.2", + "bevy_gizmos 0.19.0-rc.2", + "bevy_gizmos_render 0.19.0-rc.2", + "bevy_gltf 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_light 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", "bevy_material", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_pbr 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_post_process 0.19.0-rc.1", - "bevy_ptr 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_scene 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_sprite 0.19.0-rc.1", - "bevy_sprite_render 0.19.0-rc.1", - "bevy_state 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_ui 0.19.0-rc.1", - "bevy_ui_render 0.19.0-rc.1", - "bevy_ui_widgets 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", - "bevy_winit 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_pbr 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_post_process 0.19.0-rc.2", + "bevy_ptr 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_scene 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_sprite 0.19.0-rc.2", + "bevy_sprite_render 0.19.0-rc.2", + "bevy_state 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_ui 0.19.0-rc.2", + "bevy_ui_render 0.19.0-rc.2", + "bevy_ui_widgets 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", + "bevy_winit 0.19.0-rc.2", "bevy_world_serialization", ] @@ -1970,23 +1970,24 @@ dependencies = [ [[package]] name = "bevy_light" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed48c0431e9b3f7616f4c729c8db7991919e8b86dc87e67342b9eb2d29009182" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_gizmos 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b9a83185f31f3d3a49e2b0768cf9ffd12664851e9e8ba8d6bc4658e54bd752" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_gizmos 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "half", "smallvec", "tracing", @@ -2013,15 +2014,15 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2cff1749cdb8f6b6ee382c7e4d4891e3f74e4c06d33a3ce8035164dddbb4a1" +checksum = "92cc20daad0dd2be92f86792c3ad9271d5db6a8bbbe0f4902cbf60e750c89414" dependencies = [ "android_log-sys", - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "tracing", "tracing-log", "tracing-oslog", @@ -2043,9 +2044,9 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61d51ef72e0c8833ba50cfddc173a48fc37b55db68e13e9e0b2a835c3faf4017" +checksum = "51ea607f95f39b4c5885ce62c526a687219eec645b50d2b62e245816bb0c5e55" dependencies = [ "proc-macro2", "quote", @@ -2055,19 +2056,19 @@ dependencies = [ [[package]] name = "bevy_material" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a1664c8af88717de6367e4c1e893f5abb396fbd98c0f1afcff8e1c39a202f2" +checksum = "886ee32dc90db56f24a6da4859ef19a0e1e014887ffa6e7317c207756439e64d" dependencies = [ - "bevy_asset 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", + "bevy_asset 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", "bevy_material_macros", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "encase", "smallvec", "thiserror 2.0.18", @@ -2078,11 +2079,11 @@ dependencies = [ [[package]] name = "bevy_material_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "569c421f161f66d18c6ef6cf17c542aeaed130b06344daecc7a1d9df88cd7978" +checksum = "5eacd3335d457d0fce081735c5d0e8c2d1a32c7b70bfa76b751af43c85299502" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "quote", "syn", ] @@ -2109,13 +2110,13 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a0bd2edbf75c96d4cba536ad110ee25c0321262743443b0ccd76ae98eb5da3" +checksum = "6c1b67383d4dbfc7852e2e020a33f71c69cbd94e8e0be670f423880517928e98" dependencies = [ "approx", "arrayvec", - "bevy_reflect 0.19.0-rc.1", + "bevy_reflect 0.19.0-rc.2", "derive_more", "glam 0.32.1", "itertools 0.14.0", @@ -2154,20 +2155,20 @@ dependencies = [ [[package]] name = "bevy_mesh" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a7bf1a816c5d4e41bc57ffa43dbd606d127433fef563f7c1f140957d5c3abda" +checksum = "1edf0a03cc43ce42606df561ac169f7f003436836b22f3f8c2551699a404db50" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_encase_derive 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_encase_derive 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", "bevy_mikktspace 1.0.0", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", "bitflags 2.11.1", "bytemuck", "derive_more", @@ -2231,33 +2232,33 @@ dependencies = [ [[package]] name = "bevy_pbr" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f821d07a6a543fa27ec5e9f4ee0ba6eda8be24fff3025332eb8f2b592cc6f30" +checksum = "be2e00046d3e3ae73e8e73c54fa32e2f5656df7738cda397d154b2c462d75738" dependencies = [ "arrayvec", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_gltf 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_light 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_gltf 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_light 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", "bevy_material", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bitflags 2.11.1", "bytemuck", "derive_more", @@ -2298,23 +2299,23 @@ dependencies = [ [[package]] name = "bevy_picking" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d066a84fa297e1241bbce52e660243966cf58c58b2773e259134f12bf17aab40" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "091d8ec6c32acd672d40d530f87533eeaec117cea1b981471219f733aaa7dbb5" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "crossbeam-channel", "tracing", "uuid", @@ -2342,9 +2343,9 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1bdb0a801c7a771487089fc710d20ba7bd297e218efb3bb6b016946c7c79757" +checksum = "20db1d0bfabbe4fd77b27ee559685235a214c29ccb0d7b20738cb58f7214bfac" dependencies = [ "critical-section", "foldhash 0.2.0", @@ -2394,24 +2395,24 @@ dependencies = [ [[package]] name = "bevy_post_process" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d856d6c56d3dc1b59c338bb0ac2a3b16da7aa98940c6cdfb7a2e2651aca688" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780142aedb1641831441c44186950d6c8f2bc5d338eecebf44673bfd9c461201" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "smallvec", "thiserror 2.0.18", "tracing", @@ -2425,9 +2426,9 @@ checksum = "c7a9329e8dc4e01ced480eeec4902e6d7cb56e56ec37f6fbc4323e5c937290a7" [[package]] name = "bevy_ptr" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487dba44ac16140b4ab42a28bbcafb5721de68c9053823bf1413186d5de58bb4" +checksum = "efda0a4a01ca8e81a8b872f824b1095fc7158b17e68763d6e9b3a5bcae6d1f2e" [[package]] name = "bevy_reflect" @@ -2460,15 +2461,15 @@ dependencies = [ [[package]] name = "bevy_reflect" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07efc3fbe291f18b1d6dfe457f40e9d08b44ca0a08177b953d582147d224223e" +checksum = "93acb7a4fa934897c953e831634eff7bd464abae4529978f3d80844e6729ccb6" dependencies = [ "assert_type_match", - "bevy_platform 0.19.0-rc.1", - "bevy_ptr 0.19.0-rc.1", - "bevy_reflect_derive 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_platform 0.19.0-rc.2", + "bevy_ptr 0.19.0-rc.2", + "bevy_reflect_derive 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "derive_more", "disqualified", "downcast-rs 2.0.2", @@ -2503,11 +2504,11 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d4315d77299fb40d83313ee78c010053e01e979aab8a813d796d8c029afc27" +checksum = "599b51bc40cda45073fd343aa5692e2846d2cb1e1e859144ebeac8471c6469fe" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "indexmap", "proc-macro2", "quote", @@ -2567,34 +2568,34 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3761732e30930c4d50218cf84877bef21280f42945a3470d414486a895d07604" +checksum = "6f12973b6953920328c56626a5bfa24324fa7ff761954ce1c6f2fc687c592899" dependencies = [ "async-channel", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_diagnostic 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_encase_derive 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_diagnostic 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_encase_derive 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", "bevy_material", "bevy_material_macros", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render_macros 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render_macros 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "bitflags 2.11.1", "bytemuck", "derive_more", @@ -2633,11 +2634,11 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b59345694497e51cb70146f564d2575e9ff4f4cb613f5ceea26c42ef957df296" +checksum = "a19c1272edca0b7c932ff6abae9b563d2a385ebf42502f30c7ed80be84530be0" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "proc-macro2", "quote", "syn", @@ -2667,19 +2668,19 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e779dd9d4285940ab77c5070d97d6aa75dc2a260603d92bc26c623568f85dc28" +checksum = "9cc34818c18ceca123a14a3e52753917b3a2969354b3dd054f1ab224e0f2b950" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", "bevy_scene_macros", - "bevy_utils 0.19.0-rc.1", + "bevy_utils 0.19.0-rc.2", "thiserror 2.0.18", "tracing", "variadics_please", @@ -2687,12 +2688,12 @@ dependencies = [ [[package]] name = "bevy_scene_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848e3816c7050ccfacc679a4edd492f90d88384cdb89806d6a4107b49c0541e5" +checksum = "edc3b66a9879c58998b95d9fe8ea17e31f5db5152a1cb0ee464aefcffb1e1041" dependencies = [ "bevy_ecs_macro_logic", - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "proc-macro2", "quote", "syn", @@ -2717,14 +2718,14 @@ dependencies = [ [[package]] name = "bevy_shader" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf6de0d0e590dd2d4bfaee419354bee9d81636f07374516457a3bebacc51977" +checksum = "28288dd8029513661be8e6c237efbef68d9585d8823671099d6ac806389c7991" dependencies = [ - "bevy_asset 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_asset 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "naga 29.0.3", "naga_oil 0.22.0", "serde", @@ -2761,25 +2762,25 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c9045230cd14080e6f2536794af4dfc8a6ec5f5f049e97ff88a5785b36169ed" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f872e74ebdcedc85bd6c6cd7ecf1467b3d7241ef9ff6f5b2d98b3f8684032d7" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "radsort", "tracing", "wgpu-types 29.0.3", @@ -2819,29 +2820,29 @@ dependencies = [ [[package]] name = "bevy_sprite_render" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256c9e1b8ee2255a4877bca8dba610b71c7144e6c72690a91bfd8e839d08d9cb" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d13c5820d517ba72bca7fd1fe93f0a9b17f81676dbe13937ccb56e4e05d27dcb" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", "bevy_material", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_sprite 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_sprite 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bitflags 2.11.1", "bytemuck", "derive_more", @@ -2868,16 +2869,16 @@ dependencies = [ [[package]] name = "bevy_state" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aed75e22c7defc7a4bd33923e11d8fb9b60d9d747bc18c07e87274fd4b9f218" +checksum = "5223226ca2ecbe56f156b0bb14dfad34b46039c99f151867cc256c7e711c4df7" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_state_macros 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_state_macros 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "log", "variadics_please", ] @@ -2895,11 +2896,11 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa5e317eeae06c39671a8dd9c8db8af8244ee4d275a96e6ef14a8082dea39f5" +checksum = "c52f21d1e9923daad5ecc56993f83f9e39482a957297a9265df0e3a6ab71e401" dependencies = [ - "bevy_macro_utils 0.19.0-rc.1", + "bevy_macro_utils 0.19.0-rc.2", "quote", "syn", ] @@ -2925,15 +2926,15 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b53f6d37cfe22973182f173c7eae2fbe19f9460349cdf4ed67a93e03fbdf0db" +checksum = "1ec5fde381db053fa4145149fc25f4204fe23809aaf5bd4d45093c7c66c5ee3b" dependencies = [ "async-channel", "async-executor", "async-task", "atomic-waker", - "bevy_platform 0.19.0-rc.1", + "bevy_platform 0.19.0-rc.2", "concurrent-queue", "crossbeam-queue", "derive_more", @@ -2970,22 +2971,22 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0adaa32cb6c134776c7b821a09166a32ae6b5507d50fbddb646f78a6ca746f93" +checksum = "eddc937d1bd8f17b6271bd1b40836237b9e0c57492a05707e84f0ebd6ddad7b1" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", "bevy_clipboard", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "parley", "serde", "smallvec", @@ -3014,14 +3015,14 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1116e5c244a7d5d8697446b58bde2944ef3450c8941bd77345718ed6a50ffa6" +checksum = "3ac75a7ade9d89394bd5baf6de4a5694e45791de330620d39a42b58e5bbadb43" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", "crossbeam-channel", "log", "serde", @@ -3047,16 +3048,16 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2426454ba88ef3afd96a68fcf044abbe906ddd09f5591a29b69990f3bbcc13fd" +checksum = "eb3940d9f743431dd75309b55d77a7235fdeb4dbbc9d5ac893aefd607cb2e3ec" dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", + "bevy_app 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "derive_more", "serde", "thiserror 2.0.18", @@ -3098,32 +3099,32 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9950f8c086a905f7fbaeef01ea31ea097371ba590eb7017d80b67e19f2df27" +checksum = "2bd2b553bb0f0894c37fd75857061a449b84adbbb5b548b900249e1bff21301b" dependencies = [ "accesskit 0.24.0", - "bevy_a11y 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_sprite 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_time 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_a11y 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_sprite 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_time 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "derive_more", "parley", "smallvec", @@ -3167,31 +3168,31 @@ dependencies = [ [[package]] name = "bevy_ui_render" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9313fa7ed39cbece335c7b5f368583291dfded7ca2464a52169856e79d08b146" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_color 0.19.0-rc.1", - "bevy_core_pipeline 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_mesh 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_render 0.19.0-rc.1", - "bevy_shader 0.19.0-rc.1", - "bevy_sprite 0.19.0-rc.1", - "bevy_sprite_render 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_ui 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139a5b1910dbb0d0319f9ea922a0da10a8127752f40f7d23a87ba2a87017834d" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_color 0.19.0-rc.2", + "bevy_core_pipeline 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_mesh 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_render 0.19.0-rc.2", + "bevy_shader 0.19.0-rc.2", + "bevy_sprite 0.19.0-rc.2", + "bevy_sprite_render 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_ui 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "bytemuck", "derive_more", "indexmap", @@ -3220,24 +3221,24 @@ dependencies = [ [[package]] name = "bevy_ui_widgets" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0493afaac0e32624524e5587d58a243fd28a2c7e110591a614f914db96a27884" +checksum = "82793b5903f53e72034318907d4a708287678eb77b3ef720e0fe4a6b83cfa7ed" dependencies = [ "accesskit 0.24.0", - "bevy_a11y 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_picking 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_text 0.19.0-rc.1", - "bevy_ui 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_a11y 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_picking 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_text 0.19.0-rc.2", + "bevy_ui 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "parley", "smol_str 0.2.2", ] @@ -3255,12 +3256,12 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a95c788f91302b7d6422aa1eeeaaefca5c07ccd8d82c1775fb2fb8f2c052752e" +checksum = "4a97edfa769c752ea30b9c5f1a5bcd440c5665be4b20f0e94e6ca22cad3ed7c1" dependencies = [ "async-channel", - "bevy_platform 0.19.0-rc.1", + "bevy_platform 0.19.0-rc.2", "disqualified", "indexmap", "thread_local", @@ -3287,18 +3288,18 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0947d592b5f57576789059b26532b48a5d9b11e9d703382ebe19439fe03d1bc7" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0af4a50f23e1c006504eb249603379a4c68f06cf5558a3fd501c780723ae129" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", "log", "raw-window-handle", "serde", @@ -3340,28 +3341,28 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.19.0-rc.1" +version = "0.19.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378cd3f4d6093131c119a1d678683ea3f32f1977206f05a338697d1094ceb20d" +checksum = "a4a753a869232c1c3e7ae4087443b5ead34d772cb219917baf29c2d81dd15243" dependencies = [ "accesskit 0.24.0", "accesskit_winit 0.32.2", "approx", - "bevy_a11y 0.19.0-rc.1", - "bevy_android 0.19.0-rc.1", - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_image 0.19.0-rc.1", - "bevy_input 0.19.0-rc.1", - "bevy_input_focus 0.19.0-rc.1", - "bevy_log 0.19.0-rc.1", - "bevy_math 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_tasks 0.19.0-rc.1", - "bevy_window 0.19.0-rc.1", + "bevy_a11y 0.19.0-rc.2", + "bevy_android 0.19.0-rc.2", + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_image 0.19.0-rc.2", + "bevy_input 0.19.0-rc.2", + "bevy_input_focus 0.19.0-rc.2", + "bevy_log 0.19.0-rc.2", + "bevy_math 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_tasks 0.19.0-rc.2", + "bevy_window 0.19.0-rc.2", "bytemuck", "js-sys", "tracing", @@ -3373,19 +3374,19 @@ dependencies = [ [[package]] name = "bevy_world_serialization" -version = "0.19.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f78b8e9d214ef27a34f9dd5874406a76ca343a828cb8c08a4035caf02deaf1a" -dependencies = [ - "bevy_app 0.19.0-rc.1", - "bevy_asset 0.19.0-rc.1", - "bevy_camera 0.19.0-rc.1", - "bevy_derive 0.19.0-rc.1", - "bevy_ecs 0.19.0-rc.1", - "bevy_platform 0.19.0-rc.1", - "bevy_reflect 0.19.0-rc.1", - "bevy_transform 0.19.0-rc.1", - "bevy_utils 0.19.0-rc.1", +version = "0.19.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b190022ab0d6e6cc3cb8fbd8ac661fb5c720cacc4c09c96b8539c2115275e63c" +dependencies = [ + "bevy_app 0.19.0-rc.2", + "bevy_asset 0.19.0-rc.2", + "bevy_camera 0.19.0-rc.2", + "bevy_derive 0.19.0-rc.2", + "bevy_ecs 0.19.0-rc.2", + "bevy_platform 0.19.0-rc.2", + "bevy_reflect 0.19.0-rc.2", + "bevy_transform 0.19.0-rc.2", + "bevy_utils 0.19.0-rc.2", "derive_more", "ron", "serde", @@ -4248,7 +4249,7 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" [[package]] name = "drm" @@ -5178,9 +5179,9 @@ dependencies = [ [[package]] name = "harfrust" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ce5e848d21ba97a324266e41c70e0eb5e2577a610c1fbd546e15096f2e8e37" +checksum = "551ed25397e4b444e89686602877d5cf3a7f6e3d548dcac37a8357d1e195f4df" dependencies = [ "bitflags 2.11.1", "bytemuck", @@ -7470,7 +7471,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fad031076f48f0d4d85ce1aea9b94b4e715a4d636a030a123038f8f5b5e4343" dependencies = [ "fontique", - "harfrust 0.6.0", + "harfrust 0.6.2", "hashbrown 0.17.1", "icu_normalizer", "icu_properties", @@ -7958,7 +7959,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ "bytemuck", - "core_maths", "font-types 0.11.3", ] @@ -8442,9 +8442,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -11079,12 +11079,12 @@ dependencies = [ [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "cfg_aliases", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "libc", "raw-window-handle", "rustix 1.1.4", @@ -11105,11 +11105,11 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "android-activity", "bitflags 2.11.1", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "ndk 0.9.0", "raw-window-handle", "smol_str 0.3.6", @@ -11120,12 +11120,12 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", "dispatch2", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", @@ -11142,7 +11142,7 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "block2 0.6.2", "memmap2", @@ -11159,11 +11159,11 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "keyboard-types 0.8.3", "raw-window-handle", "smol_str 0.3.6", @@ -11173,10 +11173,10 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "libredox", "orbclient", "raw-window-handle", @@ -11189,12 +11189,12 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", "dispatch2", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -11209,12 +11209,12 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "calloop 0.14.4", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "foldhash 0.2.0", "libc", "memmap2", @@ -11235,13 +11235,13 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "atomic-waker", "bitflags 2.11.1", "concurrent-queue", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "js-sys", "pin-project", "raw-window-handle", @@ -11257,11 +11257,11 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "raw-window-handle", "smol_str 0.3.6", "tracing", @@ -11273,13 +11273,13 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/rust-windowing/winit.git?rev=c4afadbf#c4afadbfabf7b1e7989b40b493db1a4c7bd8ff4e" +source = "git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e#61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e" dependencies = [ "bitflags 2.11.1", "bytemuck", "calloop 0.14.4", "cursor-icon", - "dpi 0.1.2 (git+https://github.com/rust-windowing/winit.git?rev=c4afadbf)", + "dpi 0.1.2 (git+https://github.com/slint-ui/winit.git?rev=61ab9c8b2fd52f5ada6a2cceb976e8337fc9b01e)", "libc", "percent-encoding", "raw-window-handle", diff --git a/examples/dnd-kanban/main.rs b/examples/dnd-kanban/main.rs index 186067afade..b43c2762f2e 100644 --- a/examples/dnd-kanban/main.rs +++ b/examples/dnd-kanban/main.rs @@ -11,7 +11,7 @@ slint::include_modules!(); // What we attach to each `DataTransfer` via `set_user_data`. A clone of the // `TaskData` plus the row it came from, so `can-drop` recognizes our own // payloads and `dropped` knows what to remove on a move. -#[derive(Clone)] +#[derive(Debug, Clone)] struct DragPayload { task: TaskData, source_column: usize, @@ -41,11 +41,14 @@ fn main() -> Result<(), slint::PlatformError> { api.on_make_data(|task, source_column, source_index| { let mut transfer = DataTransfer::default(); - transfer.set_user_data(Rc::new(DragPayload { - task, - source_column: source_column as usize, - source_index: source_index as usize, - })); + let title = task.title.clone(); + transfer + .set_user_data(Rc::new(DragPayload { + task, + source_column: source_column as usize, + source_index: source_index as usize, + })) + .set_plaintext(title); transfer }); diff --git a/internal/backends/winit/Cargo.toml b/internal/backends/winit/Cargo.toml index 949b9650141..916101df187 100644 --- a/internal/backends/winit/Cargo.toml +++ b/internal/backends/winit/Cargo.toml @@ -77,7 +77,8 @@ lyon_path = { workspace = true } pin-weak = "1" scoped-tls-hkt = "0.1" strum = { workspace = true } -winit = { git = "https://github.com/rust-windowing/winit.git", rev = "c4afadbf", default-features = false } +# winit = { git = "https://github.com/slint-ui/winit.git", branch = "drag-n-drop", default-features = false } +winit = { path = "../../../../winit/winit", default-features = false } raw-window-handle = { version = "0.6", features = ["alloc"] } scopeguard = { version = "1.1.0", default-features = false } @@ -112,8 +113,10 @@ accesskit_winit = { version = "0.32", optional = true, default-features = false, copypasta = { version = "0.10", default-features = false } [target.'cfg(not(any(target_family = "windows", target_vendor = "apple", target_arch = "wasm32", target_os = "android")))'.dependencies] -winit-wayland = { git = "https://github.com/rust-windowing/winit.git", rev = "c4afadbf", optional = true } -winit-x11 = { git = "https://github.com/rust-windowing/winit.git", rev = "c4afadbf", optional = true } +# winit-wayland = { git = "https://github.com/slint-ui/winit.git", branch = "drag-n-drop", optional = true } +# winit-x11 = { git = "https://github.com/slint-ui/winit.git", branch = "drag-n-drop", optional = true } +winit-wayland = { path = "../../../../winit/winit-wayland", optional = true } +winit-x11 = { path = "../../../../winit/winit-x11", optional = true } # Use same version and executor as accesskit zbus = { version = "5.14.0", default-features = false, features = ["async-io"] } futures = { version = "0.3.31" } diff --git a/internal/backends/winit/event_loop.rs b/internal/backends/winit/event_loop.rs index 75be930bb14..ffaa1d71547 100644 --- a/internal/backends/winit/event_loop.rs +++ b/internal/backends/winit/event_loop.rs @@ -11,21 +11,32 @@ use crate::EventResult; use crate::SharedBackendData; use crate::drag_resize_window::{handle_cursor_move_for_resize, handle_resize}; use crate::winitwindowadapter::WindowVisibility; -use corelib::SharedString; use corelib::graphics::euclid; use corelib::input::{InternalKeyEvent, KeyEvent, KeyEventType, MouseEvent, TouchPhase}; -use corelib::items::{ColorScheme, PointerEventButton}; +use corelib::items::{ColorScheme, DropEvent, PointerEventButton}; use corelib::lengths::LogicalPoint; use corelib::platform::PlatformError; use corelib::window::*; +use corelib::{DataTransfer, SharedString}; use i_slint_core as corelib; +use i_slint_core::data_transfer::data_transfer_set_image_getter; +use i_slint_core::data_transfer::data_transfer_set_plaintext_getter; +use i_slint_core::graphics::load_image_from_dynamic_data; +use i_slint_core::items::DragAction; +use winit::data_transfer::DataTransferId; +use winit::data_transfer::DataTransferSendBuilder; +use winit::data_transfer::TypeHint; +use winit::dpi::PhysicalPosition; +use winit::event_loop::DndActions; +use winit::event_loop::DragIcon; #[allow(unused_imports)] use std::cell::{RefCell, RefMut}; use std::rc::Rc; -use winit::event::WindowEvent; -use winit::event_loop::ActiveEventLoop; +use winit::event::{PointerSource, WindowEvent}; +use winit::event_loop::{ActiveEventLoop, ControlFlow}; use winit::keyboard::Key; +use winit::window::ResizeDirection; fn winit_touch_phase(phase: winit::event::TouchPhase) -> corelib::input::TouchPhase { match phase { @@ -35,9 +46,6 @@ fn winit_touch_phase(phase: winit::event::TouchPhase) -> corelib::input::TouchPh winit::event::TouchPhase::Cancelled => corelib::input::TouchPhase::Cancelled, } } -use winit::event::PointerSource; -use winit::event_loop::ControlFlow; -use winit::window::ResizeDirection; /// This enum captures run-time specific events that can be dispatched to the event loop in /// addition to the winit events. @@ -65,6 +73,12 @@ impl std::fmt::Debug for CustomEvent { } } +#[derive(Debug)] +struct DndState { + data_transfer: DataTransfer, + id: winit::data_transfer::DataTransferId, +} + pub struct EventLoopState { shared_backend_data: Rc, // last seen cursor position @@ -85,6 +99,8 @@ pub struct EventLoopState { pumping_events_instantly: bool, custom_application_handler: Option>, + + dnd_state: Option, } impl EventLoopState { @@ -101,6 +117,7 @@ impl EventLoopState { pending_mouse_move: Default::default(), pumping_events_instantly: Default::default(), custom_application_handler, + dnd_state: None, } } @@ -131,6 +148,79 @@ impl EventLoopState { } } +fn build_external_data_transfer( + event_loop: &dyn ActiveEventLoop, + id: DataTransferId, +) -> Option { + let type_info = event_loop.data_transfer(id).ok()?; + let mut data_transfer = DataTransfer::default(); + // `extension_hint: None` to accept any image + // TODO: We should probably be a bit smarter about how we do this, e.g. with `image::ImageFormat::reading_enabled`. + if type_info.has_type(&TypeHint::Image { extension_hint: None }) + && let Ok(image) = + event_loop.fetch_data_transfer(id, &TypeHint::Image { extension_hint: None }) + { + let image = RefCell::new(image); + data_transfer_set_image_getter(&mut data_transfer, move || { + let mut data = vec![]; + let mut image = image.borrow_mut(); + image.try_read()?.read_to_end(&mut data).ok()?; + let format = match image.type_().hint() { + Some(TypeHint::Image { extension_hint }) => extension_hint, + _ => None, + }; + // If `load_image_from_dynamic_data` can't find a format from the extension it'll + // use the `image` crate's automatic data-based detection, so supplying an empty + // string will trigger that. + load_image_from_dynamic_data(&data, format.unwrap_or_default()).ok() + }); + } + + // `extension_hint: None` to accept any image + // TODO: We should probably be a bit smarter about how we do this, e.g. with `image::ImageFormat::reading_enabled`. + if type_info.has_type(&TypeHint::Plaintext) + && let Ok(text) = event_loop.fetch_data_transfer(id, &TypeHint::Plaintext) + { + let text = RefCell::new(text); + data_transfer_set_plaintext_getter(&mut data_transfer, move || { + text.borrow_mut().try_as_string().map(SharedString::from).ok() + }); + } + + Some(data_transfer) +} + +fn build_drop_event( + event_loop: &dyn ActiveEventLoop, + cursor_pos: LogicalPoint, + data_transfer_id: DataTransferId, + data_transfer: DataTransfer, +) -> DropEvent { + let actions @ [allow_move, allow_copy, allow_link] = event_loop + .valid_actions(data_transfer_id) + .ok() + .map(|drop_effects| { + let mask = drop_effects.hint(); + match mask { + DndActions::Flags { move_, copy, link } => [move_, copy, link], + DndActions::All => [true; 3], + } + }) + .unwrap_or_default(); + DropEvent { + data: data_transfer, + position: corelib::lengths::logical_position_to_api(cursor_pos), + allow_copy, + allow_move, + allow_link, + proposed_action: [DragAction::Move, DragAction::Copy, DragAction::Link] + .into_iter() + .zip(actions) + .find_map(|(op, allowed)| allowed.then_some(op)) + .unwrap_or(i_slint_core::items::DragAction::None), + } +} + impl winit::application::ApplicationHandler for EventLoopState { fn resumed(&mut self, event_loop: &dyn ActiveEventLoop) { if let Some(handler) = self.custom_application_handler.as_mut() { @@ -209,6 +299,49 @@ impl winit::application::ApplicationHandler for EventLoopState { self.flush_pending_mouse_move(); } + if let Some(drop_event) = runtime_window.take_new_started_drag_event() { + let icon = runtime_window.started_drag_event_icon(); + let rgba_icon = icon.and_then(|(icon, offset)| { + let size = icon.size(); + let icon_size = euclid::Size2D::new(size.width as f32, size.height as f32); + let icon = crate::winitwindowadapter::icon_to_winit(icon, icon_size)?; + + Some(DragIcon { + icon, + offset: PhysicalPosition::new( + offset.x - size.width as i32, + offset.y - size.height as i32, + ), + }) + }); + + let has_plaintext = drop_event.data.has_plaintext(); + let plaintext = + if has_plaintext { drop_event.data.fetch_plaintext().ok() } else { None }; + // TODO: Encode image to an available image type (see winit example) + // let has_image = drop_event.data.has_image(); + // let image = if has_image { drop_event.data.fetch_image().ok() } else { None }; + let action_mask = DndActions::Flags { + move_: drop_event.allow_move, + copy: drop_event.allow_move, + link: drop_event.allow_link, + }; + let mut sender = DataTransferSendBuilder::new((plaintext, ())); + if has_plaintext { + sender.add_type(TypeHint::Plaintext, |(plaintext, _), _| { + plaintext.as_deref().map(ToString::to_string) + }); + } + + // TODO: Error handling + if let Ok(id) = + event_loop.start_drag(window_id, sender.build(), &action_mask, rgba_icon) + { + self.dnd_state = Some(DndState { data_transfer: drop_event.data.clone(), id }); + runtime_window.hide_drag_image(); + } + } + match event { WindowEvent::RedrawRequested => { self.loop_error = window.draw().err(); @@ -533,6 +666,115 @@ impl winit::application::ApplicationHandler for EventLoopState { phase: winit_touch_phase(phase), }); } + + WindowEvent::DragEntered { id, position } => { + self.pressed = true; + + let pos = position.map(|pos| { + let pos = pos.to_logical(runtime_window.scale_factor() as f64); + let pos = euclid::point2(pos.x, pos.y); + self.cursor_pos = pos; + pos + }); + + if self.dnd_state.as_ref().is_none_or(|state| state.id != id) { + let Some(data_transfer) = build_external_data_transfer(event_loop, id) else { + return; + }; + + self.dnd_state = Some(DndState { id, data_transfer: data_transfer.clone() }); + runtime_window.hide_drag_image(); + } + + runtime_window.set_drop_event(build_drop_event( + event_loop, + self.cursor_pos, + id, + self.dnd_state.as_ref().unwrap().data_transfer.clone(), + )); + + runtime_window.process_mouse_input(MouseEvent::Moved { + position: self.cursor_pos, + touch_finger_id: 0, + }); + + let target_action = runtime_window.drop_target_action(); + + let actions = match target_action { + Some(DragAction::Copy) => DndActions::new_copy(), + Some(DragAction::Move) => DndActions::new_move(), + Some(DragAction::Link) => DndActions::new_link(), + _ => DndActions::none(), + }; + // TODO: Don't unwrap + event_loop.set_valid_actions(id, &actions).unwrap(); + } + WindowEvent::DragPosition { id, position } => { + let pos = position.to_logical(runtime_window.scale_factor() as f64); + let pos = euclid::point2(pos.x, pos.y); + self.cursor_pos = pos; + + if self.dnd_state.as_ref().is_none_or(|state| state.id != id) { + let Some(data_transfer) = build_external_data_transfer(event_loop, id) else { + return; + }; + + self.dnd_state = Some(DndState { id, data_transfer }); + runtime_window.hide_drag_image(); + } + + runtime_window.set_drop_event(build_drop_event( + event_loop, + self.cursor_pos, + id, + self.dnd_state.as_ref().unwrap().data_transfer.clone(), + )); + + runtime_window.process_mouse_input(MouseEvent::Moved { + position: self.cursor_pos, + touch_finger_id: 0, + }); + + let target_action = runtime_window.drop_target_action(); + + let actions = match target_action { + Some(DragAction::Copy) => DndActions::new_copy(), + Some(DragAction::Move) => DndActions::new_move(), + Some(DragAction::Link) => DndActions::new_link(), + _ => DndActions::none(), + }; + // TODO: Don't unwrap + event_loop.set_valid_actions(id, &actions).unwrap(); + } + WindowEvent::DragDropped { id } => { + self.pressed = false; + + if self.dnd_state.as_ref().is_none_or(|state| state.id != id) { + let Some(data_transfer) = build_external_data_transfer(event_loop, id) else { + return; + }; + + self.dnd_state = Some(DndState { id, data_transfer }); + runtime_window.hide_drag_image(); + } + + runtime_window.set_drop_event(build_drop_event( + event_loop, + self.cursor_pos, + id, + self.dnd_state.as_ref().unwrap().data_transfer.clone(), + )); + + runtime_window.process_mouse_input(MouseEvent::Released { + position: self.cursor_pos, + button: PointerEventButton::Left, + click_count: 0, + touch_finger_id: 0, + }); + } + WindowEvent::DragLeft { .. } => { + runtime_window.process_mouse_input(corelib::input::MouseEvent::Exit); + } _ => {} } diff --git a/internal/backends/winit/winitwindowadapter.rs b/internal/backends/winit/winitwindowadapter.rs index b5abf992813..8904d0427b4 100644 --- a/internal/backends/winit/winitwindowadapter.rs +++ b/internal/backends/winit/winitwindowadapter.rs @@ -109,7 +109,7 @@ fn apply_scale_factor_to_logical_sizes_in_attributes( fixup(&mut attributes.surface_resize_increments); } -fn icon_to_winit( +pub(crate) fn icon_to_winit( icon: corelib::graphics::Image, size: euclid::Size2D, ) -> Option { diff --git a/internal/core/Cargo.toml b/internal/core/Cargo.toml index be096b348bb..4007293e506 100644 --- a/internal/core/Cargo.toml +++ b/internal/core/Cargo.toml @@ -94,6 +94,7 @@ vtable = { workspace = true } portable-atomic = { version = "1", features = ["critical-section"] } auto_enums = { version = "0.8.0", optional = true } +enumflags2 = "0.7" cfg-if = "1" derive_more = { workspace = true, features = ["error", "deref", "deref_mut"] } euclid = { workspace = true } diff --git a/internal/core/data_transfer.rs b/internal/core/data_transfer.rs index b1750f7a9fb..e968800ac58 100644 --- a/internal/core/data_transfer.rs +++ b/internal/core/data_transfer.rs @@ -5,26 +5,100 @@ //! data transfer both within an application and between applications. use alloc::rc::Rc; -use core::any::Any; +use core::{ + any::Any, + cell::RefCell, + fmt::{self, Pointer}, +}; use crate::{SharedString, api::Image}; #[cfg(feature = "ffi")] pub mod ffi; -/// Hidden type to make `DataTransfer` smaller and easier to use in FFI. -/// -/// In particular, `Image` is a different size depending on feature flags, so this -/// allows `DataTransfer` to have a normalized size no matter what flags are enabled. -#[derive(Default, Clone, PartialEq)] -struct DataTransferInner { - // TODO: Custom binary data providers with custom MIME types. - /// Special-cased support for images, as the precise implementation of transferring - /// images differs between platforms. - image: Option, - /// Special-cased support for plaintext, as the precise implementation of transferring - /// text differs between platforms. - plaintext: Option, +#[derive(Clone)] +enum FetcherState { + Loaded(T), + Unloaded(Rc Option>), + // Separate "empty" state instead of `Self::Unloaded(|| None)` so we don't + // need to actually call the getter to know if the data exists. + Empty, +} + +#[derive(Clone)] +struct Fetcher { + state: RefCell>, +} + +impl Default for Fetcher { + fn default() -> Self { + Self { state: FetcherState::Empty.into() } + } +} + +impl PartialEq for Fetcher +where + T: PartialEq, +{ + fn eq(&self, other: &Self) -> bool { + match (&*self.state.borrow(), &*other.state.borrow()) { + (FetcherState::Loaded(self_value), FetcherState::Loaded(other_value)) => { + self_value == other_value + } + (FetcherState::Unloaded(self_getter), FetcherState::Unloaded(other_getter)) => { + core::ptr::addr_eq(&**self_getter, &**other_getter) + } + _ => false, + } + } +} + +impl fmt::Debug for Fetcher { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match &*self.state.borrow() { + FetcherState::Loaded(value) => value.fmt(f), + FetcherState::Unloaded(_) => write!(f, "{{unloaded}}"), + FetcherState::Empty => write!(f, "{{none}}"), + } + } +} + +impl Fetcher { + fn unloaded Option + 'static>(func: F) -> Self { + Self { state: FetcherState::Unloaded(Rc::new(func)).into() } + } + + fn loaded(value: T) -> Self { + Self { state: FetcherState::Loaded(value).into() } + } + + fn is_empty(&self) -> bool { + matches!(&*self.state.borrow(), FetcherState::Empty) + } +} + +impl Fetcher +where + T: Clone, +{ + fn get(&self) -> Option { + let state = self.state.borrow(); + match &*state { + FetcherState::Loaded(val) => Some(val.clone()), + FetcherState::Unloaded(func) => { + // Short-circuiting here means that calling `get` again will re-run + // the function. It's not yet clear if this is correct behaviour. + let value = func()?; + + core::mem::drop(state); + + self.state.replace(FetcherState::Loaded(value)); + + self.get() + } + FetcherState::Empty => None, + } + } } /// `DataTransfer` abstracts over the various ways of transferring data within an application @@ -63,9 +137,13 @@ struct DataTransferInner { #[derive(Clone, Default)] #[repr(C)] pub struct DataTransfer { - /// Special-cased types. `Option` to prevent allocating if this `DataTransfer` - /// only contains `user_data`. - inner: Option>, + // TODO: Custom binary data providers with custom MIME types. + /// Special-cased support for images, as the precise implementation of transferring + /// images differs between platforms. + image: Fetcher, + /// Special-cased support for plaintext, as the precise implementation of transferring + /// text differs between platforms. + plaintext: Fetcher, /// A custom in-memory value. No MIME type-based dispatch is done here - if the user /// wants to store one of a set of possible values, they should store their own enum /// and handle the dispatch themselves. @@ -89,7 +167,7 @@ impl core::fmt::Debug for DataTransfer { // identical. impl PartialEq for DataTransfer { fn eq(&self, other: &Self) -> bool { - self.inner == other.inner + self.image == other.image && self.user_data.as_ref().map(Rc::as_ptr) == other.user_data.as_ref().map(Rc::as_ptr) } } @@ -134,6 +212,26 @@ impl core::fmt::Display for DataTransferError { } } +// ================= +// Free functions for internal use, so we don't need to re-export them from the main Slint library. +// ================= + +/// Set a lazy getter for plaintext data +pub fn data_transfer_set_plaintext_getter Option + 'static>( + transfer: &mut DataTransfer, + getter: F, +) { + transfer.plaintext = Fetcher::unloaded(getter); +} + +/// Set a lazy getter for image data +pub fn data_transfer_set_image_getter Option + 'static>( + transfer: &mut DataTransfer, + getter: F, +) { + transfer.image = Fetcher::unloaded(getter); +} + impl DataTransfer { /// Sets an image to be transferred by this [`DataTransfer`]. /// @@ -146,7 +244,7 @@ impl DataTransfer { /// However, you can have, for example, both an image representation and a /// plaintext representation set simultaneously on the same [`DataTransfer`]. pub fn set_image(&mut self, image: Image) -> &mut Self { - Rc::make_mut(self.inner.get_or_insert_default()).image = Some(image); + self.image = Fetcher::loaded(image); self } @@ -162,7 +260,7 @@ impl DataTransfer { /// representation and a plaintext representation set simultaneously on the /// same [`DataTransfer`]. pub fn set_plaintext(&mut self, plaintext: SharedString) -> &mut Self { - Rc::make_mut(self.inner.get_or_insert_default()).plaintext = Some(plaintext); + self.plaintext = Fetcher::loaded(plaintext); self } @@ -171,7 +269,7 @@ impl DataTransfer { /// This does not necessarily mean that `fetch_image` will return `Ok`, as an I/O error /// may occur. pub fn has_image(&self) -> bool { - self.inner.as_ref().is_some_and(|inner| inner.image.is_some()) + !self.image.is_empty() } /// Returns `true` if this data transfer advertises that it is readable as plaintext. @@ -179,7 +277,7 @@ impl DataTransfer { /// This does not necessarily mean that `fetch_plaintext` will return `Ok`, as an I/O /// error may occur. pub fn has_plaintext(&self) -> bool { - self.inner.as_ref().is_some_and(|inner| inner.plaintext.is_some()) + !self.plaintext.is_empty() } /// Set the application-internal data represented by this [`DataTransfer`]. @@ -195,20 +293,14 @@ impl DataTransfer { /// /// The caller should assume that this method call may do I/O. pub fn fetch_plaintext(&self) -> Result { - self.inner - .as_ref() - .and_then(|inner| inner.plaintext.clone()) - .ok_or(DataTransferError::TypeNotFound) + self.plaintext.get().ok_or(DataTransferError::TypeNotFound) } /// Helper to read this [`DataTransfer`] as an image, supporting multiple image types. /// /// The caller should assume that this method call may do I/O. pub fn fetch_image(&self) -> Result { - self.inner - .as_ref() - .and_then(|inner| inner.image.clone()) - .ok_or(DataTransferError::TypeNotFound) + self.image.get().ok_or(DataTransferError::TypeNotFound) } /// Get the application-internal data represented by this [`DataTransfer`], if diff --git a/internal/core/data_transfer/ffi.rs b/internal/core/data_transfer/ffi.rs index 3218788ddf4..d85d762207a 100644 --- a/internal/core/data_transfer/ffi.rs +++ b/internal/core/data_transfer/ffi.rs @@ -10,27 +10,6 @@ use super::DataTransfer; use crate::SharedString; use crate::api::Image; -/// Opaque placeholder used by C++ to reserve storage with the same size and -/// alignment as Rust's `DataTransfer`. The actual `DataTransfer` contains -/// `Option>` fields whose layout cannot be expressed via cbindgen, so -/// C++ never inspects these fields directly: copy/destruction goes through -/// the `slint_data_transfer_*` FFI functions below, which operate on a real -/// `DataTransfer`. -/// -/// The three pointer-sized fields correspond to: -/// - `_rc_inner`: thin `Rc` pointer for `Option>` (null = `None`) -/// - `_rc_any_0`/`_rc_any_1`: data + vtable pointers of the -/// `Option>` user data fat pointer (null data = `None`) -#[repr(C)] -pub struct DataTransferOpaque { - _rc_inner: *mut core::ffi::c_void, - _rc_any_0: *mut core::ffi::c_void, - _rc_any_1: *mut core::ffi::c_void, -} - -static_assertions::assert_eq_align!(DataTransferOpaque, DataTransfer); -static_assertions::assert_eq_size!(DataTransferOpaque, DataTransfer); - /// Default-construct a `DataTransfer` in place at `out`. /// /// # Safety diff --git a/internal/core/graphics/wgpu_29.rs b/internal/core/graphics/wgpu_29.rs index eda5468320c..a8deb2cfb01 100644 --- a/internal/core/graphics/wgpu_29.rs +++ b/internal/core/graphics/wgpu_29.rs @@ -378,13 +378,7 @@ pub fn init_instance_adapter_device_queue_surface( // Helper function to poll a future once. Remove once the suspension API uses async. fn poll_once(future: F) -> Option { - struct DummyWaker(); - impl std::task::Wake for DummyWaker { - fn wake(self: std::sync::Arc) {} - } - - let waker = std::sync::Arc::new(DummyWaker()).into(); - let mut ctx = std::task::Context::from_waker(&waker); + let mut ctx = std::task::Context::from_waker(std::task::Waker::noop()); let future = std::pin::pin!(future); diff --git a/internal/core/input.rs b/internal/core/input.rs index 73dba7d8fd1..31a5ec891d3 100644 --- a/internal/core/input.rs +++ b/internal/core/input.rs @@ -21,6 +21,7 @@ use core::cell::Cell; use core::fmt::Display; use core::pin::Pin; use core::time::Duration; +use portable_atomic::AtomicBool; /// A mouse or touch event /// @@ -1224,6 +1225,8 @@ pub struct MouseInputState { /// When this is Some, it means we are in the middle of a drag-drop operation and it contains the dragged data. /// The `position` field has no signification pub(crate) drag_data: Option, + /// If `true`, the drag image is handled by the OS. + pub(crate) hide_drag_image: bool, /// The `DragArea` that initiated the in-flight drag. /// `None` for drags coming from outside (native cross-window/cross-process DnD). pub(crate) drag_source: Option, @@ -1271,6 +1274,7 @@ pub(crate) fn handle_mouse_grab( mouse_event: &MouseEvent, window_adapter: &Rc, mouse_input_state: &mut MouseInputState, + start_drag_pending: &AtomicBool, ) -> Option { if !mouse_input_state.grabbed || mouse_input_state.item_stack.is_empty() { return Some(mouse_event.clone()); @@ -1351,6 +1355,11 @@ pub(crate) fn handle_mouse_grab( .position() .map(crate::lengths::logical_position_to_api) .unwrap_or_default(); + // TODO: We should probably have a better way of figuring out if a drag event is + // internal-only. + if drop_event.data.has_image() || drop_event.data.has_plaintext() { + start_drag_pending.store(true, core::sync::atomic::Ordering::Relaxed); + } mouse_input_state.drag_data = Some(drop_event); mouse_input_state.drag_source = Some(grabber.downgrade()); drag_area.dragging.set(true); @@ -1429,6 +1438,7 @@ pub fn process_mouse_input( drag_source: mouse_input_state.drag_source.clone(), drop_target: mouse_input_state.drop_target.clone(), cursor: mouse_input_state.cursor, + hide_drag_image: mouse_input_state.hide_drag_image, ..Default::default() }; let r = send_mouse_event_to_item( @@ -1624,6 +1634,9 @@ fn send_mouse_event_to_item( result.item_stack.last_mut().unwrap().1 = InputEventFilterResult::ForwardAndInterceptGrab; result.grabbed = false; + let runtime_window = WindowInner::from_pub(window_adapter.window()); + runtime_window.set_new_drag_pending(true); + let drag_area_item = item_rc.downcast::().unwrap(); let drag_area = drag_area_item.as_pin_ref(); let mut drop_event = drag_area.initial_drop_event(); diff --git a/internal/core/window.rs b/internal/core/window.rs index 952c298212f..4a7d866729d 100644 --- a/internal/core/window.rs +++ b/internal/core/window.rs @@ -9,6 +9,7 @@ use crate::api::{ CloseRequestResponse, LogicalPosition, LogicalSize, PhysicalPosition, PhysicalSize, PlatformError, Window, WindowPosition, WindowSize, }; +use crate::graphics::Image; use crate::input::{ ClickState, FocusEvent, FocusReason, InternalKeyEvent, KeyEventResult, KeyEventType, Keys, MouseEvent, MouseInputState, PointerEventButton, TextCursorBlinker, TouchPhase, TouchState, @@ -18,7 +19,9 @@ use crate::item_tree::{ ItemRc, ItemTreeRc, ItemTreeRef, ItemTreeRefPin, ItemTreeVTable, ItemTreeWeak, ItemWeak, ParentItemTraversalMode, }; -use crate::items::{InputType, ItemRef, MenuEntry, MouseCursor, PopupClosePolicy}; +use crate::items::{ + DragArea, DropArea, DropEvent, InputType, ItemRef, MenuEntry, MouseCursor, PopupClosePolicy, +}; use crate::lengths::{LogicalLength, LogicalPoint, LogicalRect, LogicalVector, SizeLengths}; use crate::menus::MenuVTable; use crate::properties::{Property, PropertyTracker}; @@ -30,7 +33,9 @@ use alloc::vec::Vec; use core::cell::{Cell, RefCell}; use core::num::NonZeroU32; use core::pin::Pin; +use euclid::UnknownUnit; use euclid::num::Zero; +use portable_atomic::AtomicBool; use vtable::{VRc, VRcMapped}; pub mod popup; @@ -472,8 +477,9 @@ pub struct WindowInner { component: RefCell, /// When the window is visible, keep a strong reference strong_component_ref: RefCell>, - mouse_input_state: Cell, + mouse_input_state: RefCell, touch_state: RefCell, + pub(crate) start_drag_pending: AtomicBool, /// ItemRC that currently have the focus (possibly an instance of TextInput) pub focus_item: RefCell, @@ -533,6 +539,7 @@ impl WindowInner { component: Default::default(), strong_component_ref: Default::default(), mouse_input_state: Default::default(), + start_drag_pending: AtomicBool::new(false), touch_state: Default::default(), pinned_fields: Box::pin(WindowPinnedFields { redraw_tracker, @@ -562,6 +569,68 @@ impl WindowInner { } } + /// TODO: Docs + pub fn drop_event(&self) -> Option { + let mouse_input = self.mouse_input_state.borrow(); + mouse_input.drag_data.clone() + } + + /// TODO: Docs + pub fn set_new_drag_pending(&self, pending: bool) { + self.start_drag_pending.store(pending, core::sync::atomic::Ordering::Relaxed); + } + + /// TODO: Docs + pub fn take_new_started_drag_event(&self) -> Option { + if !self.start_drag_pending.swap(false, core::sync::atomic::Ordering::Relaxed) { + return None; + } + + self.mouse_input_state.borrow().drag_data.clone() + } + + /// `move`, `copy`, `link` + /// TODO: this should be a separate struct + pub fn drop_target_action(&self) -> Option { + self.mouse_input_state.borrow().drop_target_action() + } + + /// TODO: Docs + pub fn is_drag_event_internal(&self) -> bool { + self.mouse_input_state.borrow().drag_source.is_some() + } + + /// TODO: Docs + pub fn hide_drag_image(&self) { + self.mouse_input_state.borrow_mut().hide_drag_image = true; + } + + /// TODO: Docs + pub fn set_drop_event(&self, event: DropEvent) { + self.mouse_input_state.borrow_mut().drag_data = Some(event); + } + + /// TODO: Docs + pub fn started_drag_event_icon(&self) -> Option<(Image, euclid::Point2D)> { + let drag_area = self + .mouse_input_state + .borrow() + .drag_source + .as_ref()? + .upgrade()? + .downcast::()?; + + // The drag image can't be updated after the drag has started, so it probably makes sense to use + // `get_internal` here. TODO: Confirm that this is correct. + let image = drag_area.drag_image.get_internal(); + let offset = euclid::Point2D::new( + drag_area.drag_image_offset_x.get_internal(), + drag_area.drag_image_offset_y.get_internal(), + ); + + Some((image, offset)) + } + /// Associates this window with the specified component. Further event handling and rendering, etc. will be /// done with that component. pub fn set_component(&self, component: &ItemTreeRc) { @@ -661,15 +730,6 @@ impl WindowInner { mouse_input_state.drag_data = None; let source = mouse_input_state.drag_source.take(); if let Some(target_weak) = mouse_input_state.drop_target.take() { - // Seed `proposed-action` for the dropped callback with the action the - // target last chose during hover; the callback's return value will - // become the final action reported to the source. - let hovered = target_weak - .upgrade() - .and_then(|t| t.downcast::()) - .map(|d| d.as_pin_ref().current_action()) - .unwrap_or(crate::items::DragAction::None); - drop_event.proposed_action = hovered; drop_event.position = crate::lengths::logical_position_to_api(*position); event = MouseEvent::Drop(drop_event); if let Some(s) = source { @@ -717,11 +777,11 @@ impl WindowInner { event = MouseEvent::DragMove(drop_event); } MouseEvent::Exit => { - mouse_input_state.drag_data = None; - mouse_input_state.drop_target = None; - if let Some(s) = mouse_input_state.drag_source.take() { - pending_drag_finished = Some((s, None)); - } + // mouse_input_state.drag_data = None; + // mouse_input_state.drop_target = None; + // if let Some(s) = mouse_input_state.drag_source.take() { + // pending_drag_finished = Some((s, None)); + // } } _ => {} } @@ -785,9 +845,12 @@ impl WindowInner { .then_some(popup.popup_id) }); - mouse_input_state = if let Some(mut event) = - crate::input::handle_mouse_grab(&event, &window_adapter, &mut mouse_input_state) - { + mouse_input_state = if let Some(mut event) = crate::input::handle_mouse_grab( + &event, + &window_adapter, + &mut mouse_input_state, + &self.start_drag_pending, + ) { // The grab handler may have fired callbacks that modified models or // other state, so materialize any pending repeater/conditional // changes before hit-testing with the returned event. @@ -879,7 +942,7 @@ impl WindowInner { let is_dragging = mouse_input_state.drag_data.is_some(); let drop_target_action = mouse_input_state.drop_target_action(); - self.mouse_input_state.set(mouse_input_state); + self.mouse_input_state.replace(mouse_input_state); // The drag-image overlay follows the cursor and lives outside any item tree, so // partial renderers won't otherwise know to repaint it on mouse motion or after @@ -940,7 +1003,7 @@ impl WindowInner { /// Called by the input code's internal timer to send an event that was delayed pub(crate) fn process_delayed_event(&self) { - self.mouse_input_state.set(crate::input::process_delayed_event( + self.mouse_input_state.replace(crate::input::process_delayed_event( &self.window_adapter(), self.mouse_input_state.take(), )); @@ -1516,9 +1579,14 @@ impl WindowInner { item_renderer: &mut dyn crate::item_rendering::ItemRenderer, ) { let state = self.mouse_input_state.take(); - let cursor = state.drag_data.as_ref().map(|d| d.position); + + // TODO: Clean this up. We don't want to double-render the overlay if the compositor/OS is + // already rendering one, but we also can't rely on the compositor to render the image if + // the drag is internal-only + let cursor = + state.drag_data.as_ref().map(|d| d.position).filter(|_| !state.hide_drag_image); let source = state.drag_source.as_ref().and_then(|w| w.upgrade()); - self.mouse_input_state.set(state); + self.mouse_input_state.replace(state); let (Some(cursor), Some(source)) = (cursor, source) else { return }; let Some(drag_area) = source.downcast::() else { return };