diff --git a/Cargo.lock b/Cargo.lock index 70883ae..ba298e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,15 +18,6 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "1.0.2" @@ -40,6 +31,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", + "getrandom", "once_cell", "version_check", "zerocopy", @@ -54,12 +46,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - [[package]] name = "allocator-api2" version = "0.2.16" @@ -68,20 +54,23 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "android-activity" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 1.3.2", + "bitflags 2.4.2", "cc", + "cesu8", + "jni", "jni-sys", "libc", "log", "ndk", "ndk-context", "ndk-sys", - "num_enum 0.6.1", + "num_enum", + "thiserror", ] [[package]] @@ -126,6 +115,12 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + [[package]] name = "ash" version = "0.37.3+1.3.251" @@ -135,27 +130,18 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base64" version = "0.21.7" @@ -203,21 +189,21 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-sys" -version = "0.1.0-beta.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" dependencies = [ "objc-sys", ] [[package]] name = "block2" -version = "0.2.0-alpha.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" dependencies = [ "block-sys", - "objc2-encode", + "objc2", ] [[package]] @@ -253,18 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "calloop" -version = "0.10.6" +name = "bytes" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" -dependencies = [ - "bitflags 1.3.2", - "log", - "nix 0.25.1", - "slotmap", - "thiserror", - "vec_map", -] +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "calloop" @@ -286,10 +264,10 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" dependencies = [ - "calloop 0.12.4", + "calloop", "rustix", - "wayland-backend 0.3.3", - "wayland-client 0.31.2", + "wayland-backend", + "wayland-client", ] [[package]] @@ -301,6 +279,12 @@ dependencies = [ "libc", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.0" @@ -313,6 +297,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" + [[package]] name = "chrono" version = "0.4.34" @@ -327,13 +317,11 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "4.5.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297" dependencies = [ "error-code", - "str-buf", - "winapi", ] [[package]] @@ -363,14 +351,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" dependencies = [ "thiserror", - "x11rb 0.13.0", + "x11rb", ] [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", @@ -424,10 +412,45 @@ dependencies = [ ] [[package]] -name = "com-rs" -version = "0.2.1" +name = "com" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] [[package]] name = "concurrent-queue" @@ -456,9 +479,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" -version = "0.22.3" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -480,16 +503,17 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b68966c2543609f8d92f9d33ac3b719b2a67529b0c6c0b3e025637b477eef9" +checksum = "75acbfb314aeb4f5210d379af45ed1ec2c98c7f1790bf57b8a4c562ac0c51b71" dependencies = [ - "aliasable", "fontdb", "libm", "log", "rangemap", + "rustc-hash", "rustybuzz", + "self_cell", "swash", "sys-locale", "unicode-bidi", @@ -538,6 +562,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "ctor" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" +dependencies = [ + "quote", + "syn 2.0.50", +] + [[package]] name = "cursor-icon" version = "1.1.0" @@ -546,12 +580,12 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "d3d12" -version = "0.6.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ - "bitflags 1.3.2", - "libloading 0.7.4", + "bitflags 2.4.2", + "libloading 0.8.1", "winapi", ] @@ -597,6 +631,45 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "drm" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" +dependencies = [ + "bitflags 2.4.2", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "rustix", +] + +[[package]] +name = "drm-ffi" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" +dependencies = [ + "drm-sys", + "rustix", +] + +[[package]] +name = "drm-fourcc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" +dependencies = [ + "libc", + "linux-raw-sys 0.6.4", +] + [[package]] name = "either" version = "1.10.0" @@ -621,13 +694,9 @@ dependencies = [ [[package]] name = "error-code" -version = "2.3.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" -dependencies = [ - "libc", - "str-buf", -] +checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" [[package]] name = "etagere" @@ -672,12 +741,9 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" @@ -736,13 +802,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bd7f3ea17572640b606b35df42cfb6ecdf003704b062580e59918692190b73d" [[package]] -name = "fontdb" -version = "0.14.1" +name = "fontconfig-parser" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8d8cbea8f21307d7e84bca254772981296f058a1d36b461bf4d83a7499fc9e" +checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020e203f177c0fb250fb19455a252e838d2bbbce1f80f25ecc42402aafa8cd38" +dependencies = [ + "fontconfig-parser", "log", - "memmap2 0.6.2", + "memmap2 0.8.0", "slotmap", "tinyvec", "ttf-parser 0.19.2", @@ -750,18 +826,30 @@ dependencies = [ [[package]] name = "foreign-types" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ + "foreign-types-macros", "foreign-types-shared", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "foreign-types-macros" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" @@ -862,16 +950,6 @@ dependencies = [ "slab", ] -[[package]] -name = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "gethostname" version = "0.4.3" @@ -904,22 +982,27 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.28.1" +name = "gl_generator" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] [[package]] name = "glam" -version = "0.24.2" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" [[package]] name = "glow" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" dependencies = [ "js-sys", "slotmap", @@ -928,10 +1011,19 @@ dependencies = [ ] [[package]] -name = "glyphon" -version = "0.3.0" +name = "glutin_wgl_sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e87caa7459145f5e5f167bf34db4532901404c679e62339fb712a0e3ccf722a" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glyphon" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a62d0338e4056db6a73221c2fb2e30619452f6ea9651bac4110f51b0f7a7581" dependencies = [ "cosmic-text", "etagere", @@ -941,31 +1033,31 @@ dependencies = [ [[package]] name = "gpu-alloc" -version = "0.5.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "gpu-alloc-types", ] [[package]] name = "gpu-alloc-types" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", ] [[package]] name = "gpu-allocator" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ - "backtrace", "log", + "presser", "thiserror", "winapi", "windows", @@ -979,7 +1071,7 @@ checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.4.2", "gpu-descriptor-types", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -1011,12 +1103,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.3" @@ -1029,14 +1115,14 @@ dependencies = [ [[package]] name = "hassle-rs" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 1.3.2", - "com-rs", + "bitflags 2.4.2", + "com", "libc", - "libloading 0.7.4", + "libloading 0.8.1", "thiserror", "widestring", "winapi", @@ -1079,9 +1165,9 @@ dependencies = [ [[package]] name = "iced" -version = "0.10.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c708807ec86f99dd729dc4d42db5239acf118cec14d3c5f57679dcfdbbc472b1" +checksum = "7d4eb0fbbefb8c428b70680e77ed9013887b17c1d6be366b40f264f956d1a096" dependencies = [ "iced_core", "iced_futures", @@ -1094,23 +1180,27 @@ dependencies = [ [[package]] name = "iced_core" -version = "0.10.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d0bc4fbf018576d08d93f838e6058cc6f10bbc05e04ae249a2a44dffb4ebc8" +checksum = "7d7e6bbd197f311ed3d8b71651876b0ce01318fde52cda862a9a7a4373c9b930" dependencies = [ - "bitflags 1.3.2", - "instant", + "bitflags 2.4.2", + "glam", "log", + "num-traits", "palette", + "raw-window-handle", + "smol_str", "thiserror", - "twox-hash", + "web-time", + "xxhash-rust", ] [[package]] name = "iced_futures" -version = "0.7.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dab0054a9c7a1cbce227a8cd9ee4a094497b3d06094551ac6c1488d563802e" +checksum = "370bad88fb3832cbeeb3fa6c486b4701fb7e8da32a753b3101d4ce81fc1d9497" dependencies = [ "futures", "iced_core", @@ -1121,52 +1211,57 @@ dependencies = [ [[package]] name = "iced_graphics" -version = "0.9.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ff14447a221e9e9205a13d84d7bbdf0636a3b1daa02cfca690ed09689c4d2b" +checksum = "6a044c193ef0840eacabfa05424717331d1fc5b3ecb9a89316200c75da2ba9a4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "bytemuck", - "glam", + "cosmic-text", "half", "iced_core", + "iced_futures", "image", "kamadak-exif", "log", + "once_cell", "raw-window-handle", + "rustc-hash", "thiserror", + "unicode-segmentation", + "xxhash-rust", ] [[package]] name = "iced_renderer" -version = "0.1.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1033385b0db0099a0d13178c9ff93c1ce11e7d0177522acf578bf79febdb2af8" +checksum = "5c281e03001d566058f53dec9325bbe61c62da715341206d2627f57a3ecc7f69" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "raw-window-handle", "thiserror", ] [[package]] name = "iced_runtime" -version = "0.1.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c6c89853e1250c6fac82c5015fa2144517be9b33d4b8e456f10e198b23e28bd" +checksum = "a79f852c01cc6d61663c94379cb3974ac3ad315a28c504e847d573e094f46822" dependencies = [ "iced_core", "iced_futures", + "raw-window-handle", "thiserror", ] [[package]] name = "iced_style" -version = "0.9.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85c47d9d13e2281f75ddf98c865daf2101632bd2b855c401dd0b1c8b81a31a0" +checksum = "2ea42a740915d2a5a9ff9c3aa0bca28b16e9fb660bc8f675eed71d186cadb579" dependencies = [ "iced_core", "once_cell", @@ -1175,29 +1270,28 @@ dependencies = [ [[package]] name = "iced_tiny_skia" -version = "0.1.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7715f6222c9470bbbd75a39f70478fa0d1bdfb81a377a34fd1b090ffccc480b" +checksum = "8c2228781f4d381a1cbbd7905a9f077351aa8d37269094021d5d9e779f130aff" dependencies = [ "bytemuck", "cosmic-text", "iced_graphics", "kurbo", "log", - "raw-window-handle", "rustc-hash", "softbuffer", - "tiny-skia 0.10.0", - "twox-hash", + "tiny-skia", + "xxhash-rust", ] [[package]] name = "iced_wgpu" -version = "0.11.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f7c5de46b997ed7b18e05ec67059dcdf3beeac51e917c21071b021bb848b9" +checksum = "e3c243b6700452886aac1ee1987e84d9fb43b56b53fea9a1eb67713fd0fde244" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "bytemuck", "futures", "glam", @@ -1206,17 +1300,14 @@ dependencies = [ "iced_graphics", "log", "once_cell", - "raw-window-handle", - "rustc-hash", - "twox-hash", "wgpu", ] [[package]] name = "iced_widget" -version = "0.1.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177219ae51c3ba08f228ab932354b360cc669e94aec50c01e7c9b675f074c7c" +checksum = "7e01b2212adecf1cb80e2267f302c0e0c263e55f97812056949199ccf9f0b908" dependencies = [ "iced_renderer", "iced_runtime", @@ -1228,22 +1319,33 @@ dependencies = [ [[package]] name = "iced_winit" -version = "0.10.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0c884bcb14722a57192b40a5ef6b5e170fa2f01fe2ff28d6cdd9efe37acf70" +checksum = "63f66831d0e399b93f631739121a6171780d344b275d56808b9504d8ca75c7d2" dependencies = [ "iced_graphics", "iced_runtime", "iced_style", "log", - "raw-window-handle", "thiserror", + "tracing", "web-sys", "winapi", "window_clipboard", "winit", ] +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2", + "dispatch", + "objc2", +] + [[package]] name = "idna" version = "0.5.0" @@ -1272,16 +1374,6 @@ dependencies = [ "tiff", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.2.3" @@ -1289,7 +1381,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -1299,20 +1391,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", ] [[package]] @@ -1332,6 +1410,22 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -1367,22 +1461,29 @@ dependencies = [ [[package]] name = "khronos-egl" -version = "4.1.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.7.4", + "libloading 0.8.1", "pkg-config", ] [[package]] -name = "kurbo" -version = "0.9.5" +name = "khronos_api" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "kurbo" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" dependencies = [ "arrayvec", + "smallvec", ] [[package]] @@ -1457,6 +1558,12 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "linux-raw-sys" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" + [[package]] name = "lock_api" version = "0.4.11" @@ -1475,11 +1582,11 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" -version = "0.11.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -1499,18 +1606,9 @@ checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" -version = "0.5.10" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[package]] -name = "memmap2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d28bba84adfe6646737845bc5ebbfa2c08424eb1c37e94a1fd2a82adb56a872" +checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed" dependencies = [ "libc", ] @@ -1524,36 +1622,19 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "metal" -version = "0.24.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "block", "core-graphics-types", "foreign-types", "log", "objc", + "paste", ] [[package]] @@ -1566,18 +1647,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - [[package]] name = "mutate_once" version = "0.1.1" @@ -1586,15 +1655,15 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "0.12.3" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbcc2e0513220fd2b598e6068608d4462db20322c0e77e47f6f488dfcfc279cb" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ "bit-set", - "bitflags 1.3.2", + "bitflags 2.4.2", "codespan-reporting", "hexf-parse", - "indexmap 1.9.3", + "indexmap", "log", "num-traits", "rustc-hash", @@ -1606,14 +1675,15 @@ dependencies = [ [[package]] name = "ndk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "jni-sys", + "log", "ndk-sys", - "num_enum 0.5.11", + "num_enum", "raw-window-handle", "thiserror", ] @@ -1626,51 +1696,13 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", - "pin-utils", -] - [[package]] name = "num-traits" version = "0.2.18" @@ -1692,39 +1724,18 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ - "num_enum_derive 0.5.11", -] - -[[package]] -name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" -dependencies = [ - "num_enum_derive 0.6.1", + "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "num_enum_derive" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1755,29 +1766,25 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.2.0-beta.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" +checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" [[package]] name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" dependencies = [ - "block2", "objc-sys", "objc2-encode", ] [[package]] name = "objc2-encode" -version = "2.0.0-pre.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" -dependencies = [ - "objc-sys", -] +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" [[package]] name = "objc_exception" @@ -1797,15 +1804,6 @@ dependencies = [ "objc", ] -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.19.0" @@ -1907,6 +1905,12 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2006,6 +2010,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2040,15 +2050,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "quick-xml" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.31.0" @@ -2111,9 +2112,9 @@ checksum = "795915a3930a5d6bafd9053d37602fea3e61be2e5d4d788983a8ba9654c1c6f2" [[package]] name = "raw-window-handle" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" [[package]] name = "rayon" @@ -2242,10 +2243,10 @@ dependencies = [ ] [[package]] -name = "rustc-demangle" -version = "0.1.23" +name = "roxmltree" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" [[package]] name = "rustc-hash" @@ -2262,7 +2263,7 @@ dependencies = [ "bitflags 2.4.2", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] @@ -2299,18 +2300,18 @@ dependencies = [ [[package]] name = "rustybuzz" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82eea22c8f56965eeaf3a209b3d24508256c7b920fb3b6211b8ba0f7c0583250" +checksum = "2ee8fe2a8461a0854a37101fe7a1b13998d0cfa987e43248e81d2a5f4570f6fa" dependencies = [ "bitflags 1.3.2", "bytemuck", "libm", "smallvec", - "ttf-parser 0.19.2", + "ttf-parser 0.20.0", "unicode-bidi-mirroring", "unicode-ccc", - "unicode-general-category", + "unicode-properties", "unicode-script", ] @@ -2320,6 +2321,15 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -2334,17 +2344,23 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.5.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" dependencies = [ "ab_glyph", "log", - "memmap2 0.5.10", - "smithay-client-toolkit 0.16.1", - "tiny-skia 0.8.4", + "memmap2 0.9.4", + "smithay-client-toolkit", + "tiny-skia", ] +[[package]] +name = "self_cell" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" + [[package]] name = "serde" version = "1.0.197" @@ -2421,25 +2437,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" -[[package]] -name = "smithay-client-toolkit" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" -dependencies = [ - "bitflags 1.3.2", - "calloop 0.10.6", - "dlib", - "lazy_static", - "log", - "memmap2 0.5.10", - "nix 0.24.3", - "pkg-config", - "wayland-client 0.29.5", - "wayland-cursor 0.29.5", - "wayland-protocols 0.29.5", -] - [[package]] name = "smithay-client-toolkit" version = "0.18.1" @@ -2447,7 +2444,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ "bitflags 2.4.2", - "calloop 0.12.4", + "calloop", "calloop-wayland-source", "cursor-icon", "libc", @@ -2455,13 +2452,13 @@ dependencies = [ "memmap2 0.9.4", "rustix", "thiserror", - "wayland-backend 0.3.3", - "wayland-client 0.31.2", + "wayland-backend", + "wayland-client", "wayland-csd-frame", - "wayland-cursor 0.31.1", - "wayland-protocols 0.31.2", + "wayland-cursor", + "wayland-protocols", "wayland-protocols-wlr", - "wayland-scanner 0.31.1", + "wayland-scanner", "xkeysym", ] @@ -2472,36 +2469,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" dependencies = [ "libc", - "smithay-client-toolkit 0.18.1", - "wayland-backend 0.3.3", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", ] [[package]] name = "softbuffer" -version = "0.2.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b953f6ba7285f0af131eb748aabd8ddaf53e0b81dda3ba5d803b0847d6559f" +checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" dependencies = [ + "as-raw-xcb-connection", "bytemuck", - "cfg_aliases", + "cfg_aliases 0.2.0", "cocoa", "core-graphics", + "drm", "fastrand", "foreign-types", + "js-sys", "log", - "nix 0.26.4", + "memmap2 0.9.4", "objc", "raw-window-handle", - "redox_syscall 0.3.5", - "thiserror", + "redox_syscall 0.4.1", + "rustix", + "tiny-xlib", "wasm-bindgen", - "wayland-backend 0.1.2", - "wayland-client 0.30.2", - "wayland-sys 0.30.1", + "wayland-backend", + "wayland-client", + "wayland-sys", "web-sys", - "windows-sys 0.48.0", - "x11-dl", - "x11rb 0.11.1", + "windows-sys 0.52.0", + "x11rb", ] [[package]] @@ -2515,12 +2524,11 @@ dependencies = [ [[package]] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 1.3.2", - "num-traits", + "bitflags 2.4.2", ] [[package]] @@ -2536,7 +2544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6" dependencies = [ "bitflags 1.3.2", - "cfg_aliases", + "cfg_aliases 0.1.1", "libc", "parking_lot 0.11.2", "parking_lot_core 0.8.6", @@ -2550,19 +2558,13 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf" dependencies = [ - "cfg_aliases", + "cfg_aliases 0.1.1", "memchr", "proc-macro2", "quote", "syn 1.0.109", ] -[[package]] -name = "str-buf" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" - [[package]] name = "strict-num" version = "0.1.1" @@ -2676,23 +2678,9 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.8.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" -dependencies = [ - "arrayref", - "arrayvec", - "bytemuck", - "cfg-if", - "png", - "tiny-skia-path 0.8.4", -] - -[[package]] -name = "tiny-skia" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db11798945fa5c3e5490c794ccca7c6de86d3afdd54b4eb324109939c6f37bc" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", "arrayvec", @@ -2700,14 +2688,14 @@ dependencies = [ "cfg-if", "log", "png", - "tiny-skia-path 0.10.0", + "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.8.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ "arrayref", "bytemuck", @@ -2715,14 +2703,15 @@ dependencies = [ ] [[package]] -name = "tiny-skia-path" -version = "0.10.0" +name = "tiny-xlib" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f60aa35c89ac2687ace1a2556eaaea68e8c0d47408a2e3e7f5c98a489e7281c" +checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" dependencies = [ - "arrayref", - "bytemuck", - "strict-num", + "as-raw-xcb-connection", + "ctor", + "libloading 0.8.1", + "tracing", ] [[package]] @@ -2767,7 +2756,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.3", + "indexmap", "toml_datetime", "winnow 0.5.40", ] @@ -2778,7 +2767,7 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" dependencies = [ - "indexmap 2.2.3", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -2792,14 +2781,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + [[package]] name = "tracing-core" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] [[package]] name = "ttf-parser" @@ -2813,17 +2817,6 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" -[[package]] -name = "twox-hash" -version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "rand", - "static_assertions", -] - [[package]] name = "uad-ng" version = "1.0.2" @@ -2863,12 +2856,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" -[[package]] -name = "unicode-general-category" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7" - [[package]] name = "unicode-ident" version = "1.0.12" @@ -2890,6 +2877,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" + [[package]] name = "unicode-script" version = "0.5.6" @@ -2950,18 +2943,22 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3049,21 +3046,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8" -dependencies = [ - "cc", - "downcast-rs", - "io-lifetimes", - "nix 0.26.4", - "scoped-tls", - "smallvec", - "wayland-sys 0.30.1", -] - [[package]] name = "wayland-backend" version = "0.3.3" @@ -3075,35 +3057,7 @@ dependencies = [ "rustix", "scoped-tls", "smallvec", - "wayland-sys 0.31.1", -] - -[[package]] -name = "wayland-client" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" -dependencies = [ - "bitflags 1.3.2", - "downcast-rs", - "libc", - "nix 0.24.3", - "scoped-tls", - "wayland-commons", - "wayland-scanner 0.29.5", - "wayland-sys 0.29.5", -] - -[[package]] -name = "wayland-client" -version = "0.30.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8" -dependencies = [ - "bitflags 1.3.2", - "nix 0.26.4", - "wayland-backend 0.1.2", - "wayland-scanner 0.30.1", + "wayland-sys", ] [[package]] @@ -3114,20 +3068,8 @@ checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ "bitflags 2.4.2", "rustix", - "wayland-backend 0.3.3", - "wayland-scanner 0.31.1", -] - -[[package]] -name = "wayland-commons" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" -dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys 0.29.5", + "wayland-backend", + "wayland-scanner", ] [[package]] @@ -3138,18 +3080,7 @@ checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ "bitflags 2.4.2", "cursor-icon", - "wayland-backend 0.3.3", -] - -[[package]] -name = "wayland-cursor" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" -dependencies = [ - "nix 0.24.3", - "wayland-client 0.29.5", - "xcursor", + "wayland-backend", ] [[package]] @@ -3159,22 +3090,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" dependencies = [ "rustix", - "wayland-client 0.31.2", + "wayland-client", "xcursor", ] -[[package]] -name = "wayland-protocols" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" -dependencies = [ - "bitflags 1.3.2", - "wayland-client 0.29.5", - "wayland-commons", - "wayland-scanner 0.29.5", -] - [[package]] name = "wayland-protocols" version = "0.31.2" @@ -3182,9 +3101,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ "bitflags 2.4.2", - "wayland-backend 0.3.3", - "wayland-client 0.31.2", - "wayland-scanner 0.31.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", ] [[package]] @@ -3194,32 +3126,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ "bitflags 2.4.2", - "wayland-backend 0.3.3", - "wayland-client 0.31.2", - "wayland-protocols 0.31.2", - "wayland-scanner 0.31.1", -] - -[[package]] -name = "wayland-scanner" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" -dependencies = [ - "proc-macro2", - "quote", - "xml-rs", -] - -[[package]] -name = "wayland-scanner" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e" -dependencies = [ - "proc-macro2", - "quick-xml 0.28.2", - "quote", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", ] [[package]] @@ -3229,33 +3139,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" dependencies = [ "proc-macro2", - "quick-xml 0.31.0", + "quick-xml", "quote", ] -[[package]] -name = "wayland-sys" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" -dependencies = [ - "dlib", - "lazy_static", - "pkg-config", -] - -[[package]] -name = "wayland-sys" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" -dependencies = [ - "dlib", - "lazy_static", - "log", - "pkg-config", -] - [[package]] name = "wayland-sys" version = "0.31.1" @@ -3270,9 +3157,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3295,12 +3192,13 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" -version = "0.16.3" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c965c9306872eb6255fa55e4b4953be55a8b64d57e61d7ff840d3dcc051cd" +checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb" dependencies = [ "arrayvec", "cfg-if", + "cfg_aliases 0.1.1", "js-sys", "log", "naga", @@ -3319,16 +3217,19 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.16.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" +checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78" dependencies = [ "arrayvec", "bit-vec", "bitflags 2.4.2", + "cfg_aliases 0.1.1", "codespan-reporting", + "indexmap", "log", "naga", + "once_cell", "parking_lot 0.12.1", "profiling", "raw-window-handle", @@ -3342,9 +3243,9 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.16.2" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecb3258078e936deee14fd4e0febe1cfe9bbb5ffef165cb60218d2ee5eb4448" +checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e" dependencies = [ "android_system_properties", "arrayvec", @@ -3352,10 +3253,11 @@ dependencies = [ "bit-set", "bitflags 2.4.2", "block", + "cfg_aliases 0.1.1", "core-graphics-types", "d3d12", - "foreign-types", "glow", + "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", @@ -3367,7 +3269,9 @@ dependencies = [ "log", "metal", "naga", + "ndk-sys", "objc", + "once_cell", "parking_lot 0.12.1", "profiling", "range-alloc", @@ -3384,9 +3288,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.16.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ "bitflags 2.4.2", "js-sys", @@ -3433,15 +3337,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winapi-wsapoll" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3450,9 +3345,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63287c9c4396ccf5346d035a9b0fcaead9e18377637f5eaa78b7ac65c873ff7d" +checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" dependencies = [ "clipboard-win", "clipboard_macos", @@ -3464,11 +3359,12 @@ dependencies = [ [[package]] name = "windows" -version = "0.44.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-targets 0.42.2", + "windows-core", + "windows-targets 0.52.3", ] [[package]] @@ -3680,37 +3576,50 @@ checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" [[package]] name = "winit" -version = "0.28.7" +version = "0.29.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" +checksum = "a7a3db69ffbe53a9babec7804da7a90f21020fcce1f2f5e5291e2311245b993d" dependencies = [ + "ahash", "android-activity", - "bitflags 1.3.2", - "cfg_aliases", + "atomic-waker", + "bitflags 2.4.2", + "bytemuck", + "calloop", + "cfg_aliases 0.1.1", "core-foundation", "core-graphics", - "dispatch", - "instant", + "cursor-icon", + "icrate", + "js-sys", "libc", "log", - "mio", + "memmap2 0.9.4", "ndk", + "ndk-sys", "objc2", "once_cell", "orbclient", "percent-encoding", "raw-window-handle", "redox_syscall 0.3.5", + "rustix", "sctk-adwaita", - "smithay-client-toolkit 0.16.1", + "smithay-client-toolkit", + "smol_str", + "unicode-segmentation", "wasm-bindgen", - "wayland-client 0.29.5", - "wayland-commons", - "wayland-protocols 0.29.5", - "wayland-scanner 0.29.5", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.45.0", + "web-time", + "windows-sys 0.48.0", "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -3742,40 +3651,19 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x11rb" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617" -dependencies = [ - "gethostname 0.2.3", - "libc", - "libloading 0.7.4", - "nix 0.25.1", - "once_cell", - "winapi", - "winapi-wsapoll", - "x11rb-protocol 0.11.1", -] - [[package]] name = "x11rb" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" dependencies = [ - "gethostname 0.4.3", + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.1", + "once_cell", "rustix", - "x11rb-protocol 0.13.0", -] - -[[package]] -name = "x11rb-protocol" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0b1513b141123073ce54d5bb1d33f801f17508fbd61e02060b1214e96d39c56" -dependencies = [ - "nix 0.25.1", + "x11rb-protocol", ] [[package]] @@ -3791,7 +3679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "rustix", ] @@ -3801,6 +3689,19 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.4.2", + "dlib", + "log", + "once_cell", + "xkeysym", +] + [[package]] name = "xkeysym" version = "0.2.0" @@ -3813,6 +3714,12 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +[[package]] +name = "xxhash-rust" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" + [[package]] name = "yazi" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index 3db9df4..9e729f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ toml = "^0" dirs = "^5.0.0" ureq = { version = "*", features = ["json"] } retry = "^2.0.0" -iced = { version = "^0.10.0", features = ["advanced", "image"] } +iced = { version = "^0.12.0", features = ["advanced", "image"] } [target.'cfg(not(target_os = "windows"))'.dependencies] flate2 = { version = "^1", optional = true } diff --git a/resources/assets/uad_lists.json b/resources/assets/uad_lists.json index 507257b..03d4715 100644 --- a/resources/assets/uad_lists.json +++ b/resources/assets/uad_lists.json @@ -3543,7 +3543,7 @@ }, "com.knox.vpn.proxyhandler": { "list": "Oem", - "description": "Third-party package that provides caller profile information to help consumers identify incoming calls and block unwanted ones.\nhttps://en.wikipedia.org/wiki/Hiya_(company)\nhttps://hiya.com/\nNOTE: Never trust a company that promotes spam blocking features.\nhttps://itmunch.com/robocall-caught-sending-customers-confidential-data-without-consent/\nHave a look at their privacy policy. It's... pretty scary: https://hiya.com/fr/hiya-data-policy\nNeeded for Samsung Smart Call (com.samsung.android.smartcallprovider)\nSamsung Knox allows business and personal content to \"securely\" coexist on the same handset.\nThis package handles proxies alongside KNOX.", + "description": "Samsung Knox allows business and personal content to \"securely\" coexist on the same handset.\nThis package handles proxies alongside KNOX.", "dependencies": [], "neededBy": [], "labels": [], @@ -3999,7 +3999,7 @@ }, "com.samsung.android.app.sharelive": { "list": "Oem", - "description": "Samsung Quick Share from the Galaxy Store\nDoesn't break anything if you remove it. But obviously you can't use Quick Share.", + "description": "Samsung Quick Share (from the Galaxy Store)\nBreaks Quick Share if you remove it.", "dependencies": [], "neededBy": [], "labels": [], @@ -4111,7 +4111,7 @@ }, "com.samsung.android.easysetup": { "list": "Oem", - "description": "Samsung Connect Easy Setup (now SmartThings)\nUsed to connect every Samsung device you have in your house.\nWhat's weird is that Galaxy S10 has this package (available nowhere) but S9 has com.samsung.android.oneconnect\navailable on the Playstore (https://play.google.com/store/apps/details?id=com.samsung.android.oneconnect)\n#\nNeeds \"com.samsung.android.beaconmanager\" to be useful.\n", + "description": "Samsung Nearby device scanning\nRequires \"com.samsung.android.beaconmanager\" to be useful.", "dependencies": [], "neededBy": [], "labels": [], @@ -4319,7 +4319,7 @@ }, "com.samsung.android.mdx.kit": { "list": "Oem", - "description": "MDE Service Framework / Quick Share Connectivity\nMDE = Multi Devices Experience (https://www.samsung.com/levant/multi-device-experience/)\nFramework for IoT stuff.\nAsks for a LOT of dangerous permissions\nInteracts with \"com.samsung.android.mobileservice\" and \"com.osp.app.signin\"\n", + "description": "Quick Share Connectivity / MDE Service Framework\nMDX = Multi Devices Experience (https://www.samsung.com/levant/multi-device-experience/)\nFramework for IoT stuff.\nAsks for a LOT of dangerous permissions\nInteracts with \"com.samsung.android.mobileservice\" and \"com.osp.app.signin\"\n", "dependencies": [], "neededBy": [], "labels": [], @@ -4335,7 +4335,7 @@ }, "com.samsung.android.mobileservice": { "list": "Oem", - "description": "Group Sharing (earlier Samsung Experience Service, before One UI 1.0). The legacy version was similar to Samsung Core Services (citation needed).\nCan remove safely if you don't use any group sharing features (shared albums in gallery, etc.).\nHandles your Samsung account and is needed to use some Samsung apps features.\nIt allows you to use multiple Samsung apps, such as Samsung Health, Samsung Pay, Galaxy Apps, Samsung Members, and SmartThings, \nwith your Samsung account credentials.\nhttps://techshift.net/what-is-samsung-group-sharing/", + "description": "Group Sharing (earlier Samsung Experience Service). The legacy version was similar to Samsung Core Services (citation needed).\nCan remove safely if you don't use any group sharing features (shared albums in gallery, etc.).\nHandles your Samsung account and is needed to use some Samsung apps features.\nIt allows you to use Samsung apps, such as Samsung Health, Samsung Pay, Galaxy Apps, Samsung Members, and SmartThings with your Samsung account credentials.\nhttps://techshift.net/what-is-samsung-group-sharing/", "dependencies": [], "neededBy": [], "labels": [], @@ -5098,11 +5098,11 @@ }, "com.samsung.ucs.agent.boot": { "list": "Oem", - "description": "Boot agent\nUCS is a company which has partnered with Samsung to provide licenses for Samsung Knox\nhttps://www.ucssolutions.com/blog/samsung-knox/\nI don't have precise information about the package itself but there are chances that it verifies some files on boot. If theses files are not verified\nthen it prevent the phone to boot \n", + "description": "Boot agent\nUCS is a company which has partnered with Samsung to provide licenses for Samsung Knox\nhttps://www.ucssolutions.com/blog/samsung-knox/\nI don't have precise information about the package itself but there are chances that it verifies some files on boot. If these files are not verified then it may prevent the phone from booting.", "dependencies": [], "neededBy": [], "labels": [], - "removal": "Recommended" + "removal": "Unsafe" }, "com.samsung.ucs.agent.ese": { "list": "Oem", @@ -5178,7 +5178,7 @@ }, "com.sec.android.app.bluetoothtest": { "list": "Oem", - "description": "Bluetooth Test\nHidden feature accessible by entering *#*#232331#*#* in the samsung dialer\nWas calling home back in 2015 (https://forum.xda-developers.com/galaxy-s5/help/bluetoothtest-apk-calling-home-t3035182)\n", + "description": "Bluetooth Test\nHidden feature accessible by entering *#*#232331#*#* in the Samsung dialer.\nIt was found to be calling home back in 2015:\nhttps://forum.xda-developers.com/galaxy-s5/help/bluetoothtest-apk-calling-home-t3035182", "dependencies": [], "neededBy": [], "labels": [], @@ -5210,11 +5210,11 @@ }, "com.sec.android.diagmonagent": { "list": "Oem", - "description": "Diagnostic Monitoring Agent\nUsed to send diagnostic data to Samsung\nData collection from Settings > Biometrics and security > Send diagnostic data\nDisabling this causes scheduled services to aggressively launch it every second, spamming the android crash log and overheating the device, thus draining battery. More info is needed on the dependencies that trigger this behavior. Version tested: 9.0.11.", + "description": "Diagnostic Monitoring Agent\nUsed to send diagnostic data to Samsung\nData collection from Settings > Biometrics and security > Send diagnostic data\nWARNING: disabling this causes scheduled services to aggressively launch it every second, spamming the Android crash log and overheating the device, thus draining battery. More info is needed on the dependencies that trigger this behavior. Version tested: 9.0.11.", "dependencies": [], "neededBy": [], "labels": [], - "removal": "Recommended" + "removal": "Advanced" }, "com.sec.android.app.dictionary": { "list": "Oem", @@ -6068,7 +6068,7 @@ }, "com.samsung.android.app.galaxyfinder": { "list": "Oem", - "description": "S Finder is a search application that allows you to find what you want in an instant by searching the content on your Galaxy smartphone and on the web as well. (https://www.samsung.com/global/galaxy/what-is/s-finder/)\nNOTE: Removing this will remove the search in the app drawer.\n", + "description": "Samsung Finder is a search application that allows you to find what you want in an instant by searching the content on your Galaxy smartphone and on the web as well. (https://www.samsung.com/global/galaxy/what-is/s-finder/)\nNOTE: Removing this will remove the search in the app drawer.\n", "dependencies": [], "neededBy": [], "labels": [], @@ -6092,7 +6092,7 @@ }, "com.samsung.android.app.smartcapture": { "list": "Oem", - "description": "Lets you group widgets on OneUI 4", + "description": "Samsung Capture\nSamsung's implementation of screenshot. Show the bottom toolbar after taking a screenshot\nLets you group widgets on OneUI 4 (?)", "dependencies": [], "neededBy": [], "labels": [], @@ -6108,7 +6108,7 @@ }, "com.sec.android.app.soundalive": { "list": "Oem", - "description": "Responsible for Dolby Atmos and other pre-programmed equalizer stuff (accessible from the Settings app)\nNeeded by Adapt Sound (com.sec.hearingadjust) which a pretty useful but little known feature.", + "description": "Responsible for Dolby Atmos and other equalizer stuff (accessible from the Settings app).\nNeeded by Adapt Sound (com.sec.hearingadjust) which is a pretty useful feature.", "dependencies": [], "neededBy": [], "labels": [], @@ -6116,7 +6116,7 @@ }, "com.samsung.android.mcfserver": { "list": "Oem", - "description": "Samsung Multi Connectivity (starting from Galaxy S20)\nSee https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/12\n", + "description": "Samsung Multi Connectivity\n\nSee https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/12\n", "dependencies": [], "neededBy": [], "labels": [], @@ -6132,7 +6132,7 @@ }, "com.sec.epdg": { "list": "Oem", - "description": "Huh... that's hard to explain quickly. Let's try : \nFirst you need to know that there is a standards organization which develops protocols for mobile telephony called 3GPP (mobile network : 2G/3G/4G/5G).\nRAT (physical connection method to a wireless communication network) non specified by the 3GPP is called non-3GPP. RAT Wifi is non-3GPP.\n\nePDG means Evolved Packet Data Gateway. The main role of the ePDG is to provide security mechanisms such as IPsec tunnelling of connections \nwith the device over an untrusted non-3GPP access. It is mainly use for VoWifi (Voice over wifi).\nFor further information : \n- https://www.3gpp.org/technologies/keywords-acronyms/100-the-evolved-packet-core\n- https://www.aptilo.com/solutions/mobile-data-offloading/3gpp-wifi-access/\n- https://en.wikipedia.org/wiki/System_Architecture_Evolution#Evolved_Packet_Core_(EPC)\n#\nSafe to remove if not using VoWifi.\n", + "description": "Safe to remove if you're not using VoWifi.\nYou need to know that:\n3GPP is a standards organization for mobile telephony (2G/3G/4G/5G).\nNon-3GPP RAT refers to wireless connection methods not specified by 3GPP, including Wi-Fi.\nePDG (evolved Packet Data Gateway) secures connections over untrusted non-3GPP access, commonly used for VoWiFi (Voice over Wi-Fi). For more information:\n- https://www.3gpp.org/technologies/keywords-acronyms/100-the-evolved-packet-core\n- https://www.aptilo.com/solutions/mobile-data-offloading/3gpp-wifi-access/\n- https://en.wikipedia.org/wiki/System_Architecture_Evolution#Evolved_Packet_Core_(EPC)\n", "dependencies": [], "neededBy": [], "labels": [], @@ -6180,7 +6180,7 @@ }, "com.samsung.android.app.contacts": { "list": "Oem", - "description": "Samsung contacts app\nSafe to debloat if you use another contacts app. NOTE: if you do, you will no longer be able to access Contacts from the Samsung dialer app.\nRemoving the contacts app will disable the user from being able to modify the Safety and emergency tab within the Samsung Android native settings app. Specifically the Medical info & Emergency contacts. This information is pulled on the lockscreen by first responders or in emergency sharing mode for emergency contacts.", + "description": "Samsung Contacts\nSafe to debloat if you use another contacts app. NOTE: if you do, you will no longer be able to access Contacts from the Samsung dialer app.\nRemoving the contacts app will disable the user from being able to modify the Safety and emergency tab within the Samsung Android native settings app. Specifically the Medical info & Emergency contacts. This information is pulled on the lockscreen by first responders or in emergency sharing mode for emergency contacts.", "dependencies": [], "neededBy": [], "labels": [], @@ -6196,7 +6196,7 @@ }, "com.samsung.android.lool": { "list": "Oem", - "description": "Samsung Device Care (phone optimizer) (https://play.google.com/store/apps/details?id=com.samsung.android.lool)\nThis package phone home (China, Qihoo 360)\nThe clean feature (in storage setting) is provided by Qihoo 360 which is a shady company (https://en.wikipedia.org/wiki/Qihoo_360)\nhttps://www.reddit.com/r/Android/comments/ektg8u/chinese_spyware_preinstalled_on_all_samsung/\nhttps://www.virustotal.com/gui/file/048ead2be8d18bbe2b05651380069b3740dd05703e9bd66630da986026518398/details\n\nWARNING:Disabling/Removing this package may remove the option to manage Power Saving, Fast Charging & Battery Protection on some devices\nNOTE : If you don't want to delete this package, at least use a firewall (Netguard/AfWall+) to block internet access\n", + "description": "Samsung Device Care\n(https://play.google.com/store/apps/details?id=com.samsung.android.lool)\nThis package phone home (China, Qihoo 360)\nThe clean feature (in storage setting) is provided by Qihoo 360 which is a shady company (https://en.wikipedia.org/wiki/Qihoo_360)\nhttps://www.reddit.com/r/Android/comments/ektg8u/chinese_spyware_preinstalled_on_all_samsung/\nhttps://www.virustotal.com/gui/file/048ead2be8d18bbe2b05651380069b3740dd05703e9bd66630da986026518398/details\n\nWARNING:Disabling/Removing this package may remove the option to manage Power Saving, Fast Charging & Battery Protection on some devices\nNOTE : If you don't want to delete this package, at least use a firewall (Netguard/AfWall+) to block internet access\n", "dependencies": [], "neededBy": [], "labels": [], @@ -8994,7 +8994,7 @@ }, "com.oneplus.camera.service": { "list": "Oem", - "description": "Runs in the background on some phones.\nNot sure what it does; camera functions fine without it. Could be related to photo backup?", + "description": "Runs in the background on some phones.\nNot sure what it does; camera functions fine without it. Could be related to photo backup? WARNING: may cause a bootloop when using a custom ROM on Android 14 (in this case, Nameless AOSP). Does not affect users running OxygenOS.", "dependencies": [], "neededBy": [], "labels": [], @@ -16074,7 +16074,7 @@ }, "com.fido.xiaomi.uafclient": { "list": "Oem", - "description": "UAF client for FIDO.\nFido is a set of open technical specifications for mechanisms of authenticating users to online services that do not depend on passwords.\nhttps://fidoalliance.org/specs/u2f-specs-1.0-bt-nfc-id-amendment/fido-glossary.html\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-overview-v2.0-rd-20170927.html\nThe UAF protocol is designed to enable online services to offer passwordless and multi-factor security by allowing users to register their device to the online service and using a local authentication mechanism such as iris or fingerprint recognition.\nhttps://developers.google.com/identity/fido/android/native-apps\nSafe to remove if you don't use password-less authentification to access online services.", + "description": "UAF client for FIDO.\nFido is a set of open technical specifications for mechanisms of authenticating users to online services that do not depend on passwords.\nhttps://fidoalliance.org/specs/u2f-specs-1.0-bt-nfc-id-amendment/fido-glossary.html\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-overview-v2.0-rd-20170927.html\nThe UAF protocol is designed to enable online services to offer passwordless and multi-factor security by allowing users to register their device to the online service and using a local authentication mechanism such as iris or fingerprint recognition.\nhttps://developers.google.com/identity/fido/android/native-apps\nSafe to remove if you don't use password-less authentication to access online services.", "dependencies": [], "neededBy": [], "labels": [], @@ -23612,7 +23612,7 @@ "labels": [] }, "com.hoffnung": { - "description": "TPMS\nRemote Config Test. Instead Uninstall better Disable this app\nbecause it uninstalling cause screen flicker", + "description": "TPMS\nRemote Config Test. WARNING: you should DISABLE this package instead of uninstalling, because uninstalling causes screen flicker", "removal": "Recommended", "list": "Oem", "dependencies": [], @@ -26705,7 +26705,7 @@ }, "com.google.android.apps.authenticator2": { "list": "Google", - "description": "Google authentificator app (https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2)\n", + "description": "Google Authenticator app (https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2)\n", "dependencies": [], "neededBy": [], "labels": [], @@ -27353,7 +27353,7 @@ }, "com.google.android.tts": { "list": "Google", - "description": "Speech Services by Google (https://play.google.com/store/apps/details?id=com.google.android.tts)\nDefault Text To Speech (TTS) engine on most of Android devices. It enables apps to convert text into voice.\n\nPithus analysis: https://beta.pithus.org/report/08f97758fbfae1e17c4a8e5ee1a1e6d2726ce6b0b4931d5452f2376d60f1b4fb\n\nNote: many apps like navigation and health/sport apps rely on a TTS engine to provide speech services. Open-source TTS engines available on Android exists but, as of the end of 2022, there is only RHVoice (https://f-droid.org/en/packages/com.github.olga_yakovleva.rhvoice.android/) and it doesn't support a lot of languages. Mimic3 (https://mycroft.ai/mimic-3/) is probably the future of IoT open-source TTS engine but there is no Android support yet", + "description": "Speech Recognition and Synthesis from Google (https://play.google.com/store/apps/details?id=com.google.android.tts)\nDefault Text To Speech (TTS) engine on most of Android devices. It enables apps to convert text into voice.\n\nPithus analysis (2024-03-03): https://beta.pithus.org/report/f0a2303e1c1bd049bf1cdc5a3454dfe19b2aaf26008662c7a307aaec2538558b\n\nNote: Many navigation and health/sports apps rely on a TTS engine to provide speech services. Open-source TTS engines available on Android exists but, as of the end of 2022, there is only RHVoice (https://f-droid.org/en/packages/com.github.olga_yakovleva.rhvoice.android/) and it doesn't support a lot of languages. Mimic3 (https://mycroft.ai/mimic-3/) is probably the future of IoT open-source TTS engine but there is no Android support yet", "dependencies": [], "neededBy": [], "labels": [], diff --git a/src/core/sync.rs b/src/core/sync.rs index d802792..766be2b 100644 --- a/src/core/sync.rs +++ b/src/core/sync.rs @@ -70,8 +70,7 @@ pub fn adb_shell_command(shell: bool, args: &str) -> Result { Err(e) => { // TODO: better error handling with anyhow + thiserror error!("ADB: {}", e); - error!("ADB was not found"); - std::process::exit(1); + Err("ADB was not found".to_string()) } Ok(o) => { if o.status.success() { @@ -331,3 +330,10 @@ pub async fn get_devices_list() -> Vec { ) .unwrap_or_default() } + +pub async fn initial_load() -> bool { + match adb_shell_command(false, "devices") { + Ok(_devices) => true, + Err(_err) => false, + } +} diff --git a/src/core/theme.rs b/src/core/theme.rs index ffc1379..1e0e126 100644 --- a/src/core/theme.rs +++ b/src/core/theme.rs @@ -65,7 +65,7 @@ impl Theme { foreground: color!(0xE0E0E0), }, normal: NormalColors { - primary: color!(0x230F08), + primary: color!(0x818181), secondary: color!(0xF9D659), surface: color!(0x818181), error: color!(0x992B2B), diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 873fed3..fd04645 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -2,7 +2,7 @@ pub mod style; pub mod views; pub mod widgets; -use crate::core::sync::{get_devices_list, perform_adb_commands, CommandType, Phone}; +use crate::core::sync::{get_devices_list, initial_load, perform_adb_commands, CommandType, Phone}; use crate::core::theme::Theme; use crate::core::uad_lists::UadListState; use crate::core::update::{get_latest_release, Release, SelfUpdateState, SelfUpdateStatus}; @@ -69,6 +69,7 @@ pub enum Message { GetLatestRelease(Result, ()>), FontLoaded(Result<(), iced::font::Error>), Nothing, + ADBSatisfied(bool), } impl Application for UadGui { @@ -84,6 +85,7 @@ impl Application for UadGui { // Used in crate::gui::widgets::navigation_menu::ICONS. Name is `icomoon`. font::load(include_bytes!("../../resources/assets/icons.ttf").as_slice()) .map(Message::FontLoaded), + Command::perform(initial_load(), Message::ADBSatisfied), Command::perform(get_devices_list(), Message::LoadDevices), Command::perform( async move { get_latest_release() }, @@ -119,6 +121,8 @@ impl Application for UadGui { #[allow(unused_must_use)] { self.update(Message::SettingsAction(SettingsMessage::LoadDeviceSettings)); + self.update(Message::AppsAction(AppsMessage::ToggleAllSelected(false))); + self.update(Message::AppsAction(AppsMessage::ClearSelectedPackages)); } self.update(Message::AppsAction(AppsMessage::LoadUadList(true))) @@ -328,11 +332,15 @@ impl Application for UadGui { Command::none() } + Message::ADBSatisfied(result) => match result { + true => self.update(Message::AppsAction(AppsMessage::ADBSatisfied(true))), + false => self.update(Message::AppsAction(AppsMessage::ADBSatisfied(false))), + }, Message::Nothing => Command::none(), } } - fn view(&self) -> Element> { + fn view(&self) -> Element { let navigation_container = nav_menu( &self.devices_list, self.selected_device.clone(), @@ -369,13 +377,16 @@ impl UadGui { Self::run(Settings { window: Window { - size: (820, 640), + size: iced::Size { + width: 1000.0, + height: 820.0, + }, resizable: true, decorations: true, icon: icon::from_file_data(logo, Some(ImageFormat::Png)).ok(), ..iced::window::Settings::default() }, - default_text_size: 16.0, + default_text_size: iced::Pixels(16.0), ..Settings::default() }) } diff --git a/src/gui/style.rs b/src/gui/style.rs index ef0011a..ee17a12 100644 --- a/src/gui/style.rs +++ b/src/gui/style.rs @@ -3,7 +3,7 @@ use iced::overlay::menu; use iced::widget::{ button, checkbox, container, pick_list, radio, rule, scrollable, text, text_input, }; -use iced::{application, Background, Color}; +use iced::{application, Background, Border, Color, Shadow}; #[derive(Default, Debug, Clone, Copy)] pub enum Application { @@ -41,28 +41,42 @@ impl container::StyleSheet for Theme { Container::Frame => container::Appearance { background: Some(Background::Color(self.palette().base.foreground)), text_color: Some(self.palette().bright.surface), - border_radius: 5.0.into(), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, ..container::Appearance::default() }, Container::BorderedFrame => container::Appearance { background: Some(Background::Color(self.palette().base.foreground)), text_color: Some(self.palette().bright.surface), - border_radius: 5.0.into(), - border_width: 1.0, - border_color: self.palette().normal.error, + border: Border { + color: self.palette().normal.error, + width: 1.0, + radius: 5.0.into(), + }, + shadow: Shadow::default(), }, Container::Tooltip => container::Appearance { background: Some(Background::Color(self.palette().base.foreground)), text_color: Some(self.palette().bright.surface), - border_radius: 8.0.into(), - border_width: 1.0, - border_color: self.palette().normal.primary, + border: Border { + color: self.palette().normal.primary, + width: 1.0, + radius: 8.0.into(), + }, + shadow: Shadow::default(), }, Container::Background => container::Appearance { background: Some(Background::Color(self.palette().base.background)), text_color: Some(self.palette().bright.surface), - border_radius: 5.0.into(), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, ..container::Appearance::default() }, } @@ -90,14 +104,21 @@ impl button::StyleSheet for Theme { let p = self.palette(); let appearance = button::Appearance { - border_width: 1.0, - border_radius: 2.0.into(), + border: Border { + color: self.palette().normal.primary, + width: 1.0, + radius: 2.0.into(), + }, ..button::Appearance::default() }; let active_appearance = |bg: Option, mc| button::Appearance { background: Some(Background::Color(bg.unwrap_or(p.base.foreground))), - border_color: Color { a: 0.5, ..mc }, + border: Border { + color: Color { a: 0.5, ..mc }, + width: 1.0, + radius: 2.0.into(), + }, text_color: mc, ..appearance }; @@ -110,9 +131,11 @@ impl button::StyleSheet for Theme { Button::NormalPackage => button::Appearance { background: Some(Background::Color(p.base.foreground)), text_color: p.bright.surface, - border_radius: 5.0.into(), - border_width: 0.0, - border_color: p.base.background, + border: Border { + color: p.base.background, + width: 0.0, + radius: 5.0.into(), + }, ..appearance }, Button::SelectedPackage => button::Appearance { @@ -121,9 +144,11 @@ impl button::StyleSheet for Theme { ..p.normal.primary })), text_color: p.bright.primary, - border_radius: 5.0.into(), - border_width: 0.0, - border_color: p.normal.primary, + border: Border { + color: p.normal.primary, + width: 0.0, + radius: 5.0.into(), + }, ..appearance }, Button::Unavailable | Button::UninstallPackage => { @@ -132,9 +157,11 @@ impl button::StyleSheet for Theme { Button::Hidden => button::Appearance { background: Some(Background::Color(Color::TRANSPARENT)), text_color: Color::TRANSPARENT, - border_radius: 5.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, ..appearance }, } @@ -200,17 +227,25 @@ pub enum Scrollable { impl scrollable::StyleSheet for Theme { type Style = Scrollable; - fn active(&self, style: &Self::Style) -> scrollable::Scrollbar { - let from_appearance = |c: Color| scrollable::Scrollbar { - background: Some(Background::Color(Color::TRANSPARENT)), - border_radius: 5.0.into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, - scroller: scrollable::Scroller { - color: c, - border_radius: 5.0.into(), - border_width: 1.0, - border_color: Color::TRANSPARENT, + fn active(&self, style: &Self::Style) -> scrollable::Appearance { + let from_appearance = |c: Color| scrollable::Appearance { + container: container::Appearance::default(), + gap: Some(Background::Color(Color::TRANSPARENT)), + scrollbar: scrollable::Scrollbar { + background: Some(Background::Color(Color::TRANSPARENT)), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, + scroller: scrollable::Scroller { + color: c, + border: Border { + color: Color::TRANSPARENT, + width: 1.0, + radius: 5.0.into(), + }, + }, }, }; @@ -220,17 +255,17 @@ impl scrollable::StyleSheet for Theme { } } - fn hovered(&self, style: &Self::Style, _mouse_over_scrollbar: bool) -> scrollable::Scrollbar { - scrollable::Scrollbar { - scroller: self.active(style).scroller, + fn hovered(&self, style: &Self::Style, _mouse_over_scrollbar: bool) -> scrollable::Appearance { + scrollable::Appearance { + scrollbar: self.active(style).scrollbar, ..self.active(style) } } - fn dragging(&self, style: &Self::Style) -> scrollable::Scrollbar { + fn dragging(&self, style: &Self::Style) -> scrollable::Appearance { let hovered = self.hovered(style, true); - scrollable::Scrollbar { - scroller: hovered.scroller, + scrollable::Appearance { + scrollbar: hovered.scrollbar, ..hovered } } @@ -253,9 +288,11 @@ impl checkbox::StyleSheet for Theme { CheckBox::PackageEnabled => checkbox::Appearance { background: Background::Color(self.palette().base.background), icon_color: self.palette().bright.primary, - border_radius: 5.0.into(), - border_width: 1.0, - border_color: self.palette().base.background, + border: Border { + color: self.palette().base.background, + width: 1.0, + radius: 5.0.into(), + }, text_color: Some(self.palette().bright.surface), }, CheckBox::PackageDisabled => checkbox::Appearance { @@ -263,26 +300,33 @@ impl checkbox::StyleSheet for Theme { a: 0.55, ..self.palette().base.background }), + icon_color: self.palette().bright.primary, - border_radius: 5.0.into(), - border_width: 1.0, - border_color: self.palette().normal.primary, + border: Border { + color: self.palette().normal.primary, + width: 1.0, + radius: 5.0.into(), + }, text_color: Some(self.palette().normal.primary), }, CheckBox::SettingsEnabled => checkbox::Appearance { background: Background::Color(self.palette().base.background), icon_color: self.palette().bright.primary, - border_radius: 5.0.into(), - border_width: 1.0, - border_color: self.palette().bright.primary, + border: Border { + color: self.palette().bright.primary, + width: 1.0, + radius: 5.0.into(), + }, text_color: Some(self.palette().bright.surface), }, CheckBox::SettingsDisabled => checkbox::Appearance { background: Background::Color(self.palette().base.foreground), icon_color: self.palette().bright.primary, - border_radius: 5.0.into(), - border_width: 1.0, - border_color: self.palette().normal.primary, + border: Border { + color: self.palette().normal.primary, + width: 1.0, + radius: 5.0.into(), + }, text_color: Some(self.palette().bright.surface), }, } @@ -292,9 +336,11 @@ impl checkbox::StyleSheet for Theme { let from_appearance = || checkbox::Appearance { background: Background::Color(self.palette().base.foreground), icon_color: self.palette().bright.primary, - border_radius: 5.0.into(), - border_width: 2.0, - border_color: self.palette().bright.primary, + border: Border { + color: self.palette().bright.primary, + width: 2.0, + radius: 5.0.into(), + }, text_color: Some(self.palette().bright.surface), }; @@ -319,9 +365,11 @@ impl text_input::StyleSheet for Theme { fn active(&self, _style: &Self::Style) -> text_input::Appearance { text_input::Appearance { background: Background::Color(self.palette().base.foreground), - border_radius: 5.0.into(), - border_width: 0.0, - border_color: self.palette().base.foreground, + border: Border { + color: self.palette().base.foreground, + width: 0.0, + radius: 5.0.into(), + }, icon_color: Color { a: 0.5, ..self.palette().normal.primary @@ -332,11 +380,13 @@ impl text_input::StyleSheet for Theme { fn focused(&self, _style: &Self::Style) -> text_input::Appearance { text_input::Appearance { background: Background::Color(self.palette().base.foreground), - border_radius: 2.0.into(), - border_width: 1.0, - border_color: Color { - a: 0.5, - ..self.palette().normal.primary + border: Border { + color: Color { + a: 0.5, + ..self.palette().normal.primary + }, + width: 1.0, + radius: 2.0.into(), }, icon_color: Color { a: 0.5, @@ -355,11 +405,13 @@ impl text_input::StyleSheet for Theme { fn disabled(&self, _style: &Self::Style) -> text_input::Appearance { text_input::Appearance { background: Background::Color(self.palette().base.background), - border_radius: 2.0.into(), - border_width: 1.0, - border_color: Color { - a: 0.5, - ..self.palette().base.foreground + border: Border { + color: Color { + a: 0.5, + ..self.palette().base.foreground + }, + width: 1.0, + radius: 2.0.into(), }, icon_color: Color { a: 0.5, @@ -401,9 +453,11 @@ impl menu::StyleSheet for Theme { menu::Appearance { text_color: p.bright.surface, background: p.base.background.into(), - border_width: 1.0, - border_radius: 2.0.into(), - border_color: p.base.background, + border: Border { + color: p.base.background, + width: 1.0, + radius: 2.0.into(), + }, selected_text_color: p.bright.surface, selected_background: p.normal.primary.into(), } @@ -417,12 +471,14 @@ impl pick_list::StyleSheet for Theme { pick_list::Appearance { text_color: self.palette().bright.surface, background: self.palette().base.background.into(), - border_width: 1.0, - border_color: Color { - a: 0.5, - ..self.palette().normal.primary + border: Border { + color: Color { + a: 0.5, + ..self.palette().normal.primary + }, + width: 1.0, + radius: 2.0.into(), }, - border_radius: 2.0.into(), handle_color: self.palette().bright.surface, placeholder_color: self.palette().bright.surface, } @@ -431,7 +487,11 @@ impl pick_list::StyleSheet for Theme { fn hovered(&self, style: &()) -> pick_list::Appearance { let active = self.active(style); pick_list::Appearance { - border_color: self.palette().normal.primary, + border: Border { + color: self.palette().normal.primary, + width: 1.0, + radius: 2.0.into(), + }, ..active } } diff --git a/src/gui/views/about.rs b/src/gui/views/about.rs index e84aa08..16beca5 100644 --- a/src/gui/views/about.rs +++ b/src/gui/views/about.rs @@ -26,7 +26,7 @@ impl About { } // other events are handled by UadGui update() } - pub fn view(&self, update_state: &UpdateState) -> Element> { + pub fn view(&self, update_state: &UpdateState) -> Element { let about_text = text( "Universal Android Debloater Next Generation (UAD-ng) is a Free and Open-Source community project aiming at simplifying \ the removal of pre-installed apps on any Android device.", @@ -42,13 +42,13 @@ impl About { let last_update_text = text(update_state.uad_list.to_string()); let uad_lists_btn = button("Update") .on_press(Message::UpdateUadLists) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); #[cfg(feature = "self-update")] let self_update_btn = button("Update") .on_press(Message::DoSelfUpdate) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); #[cfg(feature = "self-update")] @@ -102,26 +102,26 @@ impl About { .on_press(Message::UrlPressed(PathBuf::from( "https://github.com/Universal-Debloater-Alliance/universal-android-debloater", ))) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let issue_btn = button("Have an issue?") .on_press(Message::UrlPressed(PathBuf::from( "https://github.com/Universal-Debloater-Alliance/universal-android-debloater/issues", ))) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let log_btn = button("Locate the logfiles") .on_press(Message::UrlPressed(CACHE_DIR.to_path_buf())) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let wiki_btn = button("Wiki") .on_press(Message::UrlPressed(PathBuf::from( "https://github.com/Universal-Debloater-Alliance/universal-android-debloater/wiki", ))) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let row = row![website_btn, wiki_btn, issue_btn, log_btn,].spacing(20); diff --git a/src/gui/views/list.rs b/src/gui/views/list.rs index 0399205..21f3f68 100644 --- a/src/gui/views/list.rs +++ b/src/gui/views/list.rs @@ -52,6 +52,7 @@ pub struct List { description: String, selection_modal: bool, current_package_index: usize, + is_adb_satisfied: bool, } #[derive(Debug, Clone)] @@ -73,6 +74,8 @@ pub enum Message { ModalHide, ModalUserSelected(User), ModalValidate, + ClearSelectedPackages, + ADBSatisfied(bool), } pub struct SummaryEntry { @@ -289,6 +292,14 @@ impl List { Message::UserSelected(user), ) } + Message::ClearSelectedPackages => { + self.selected_packages = Vec::new(); + Command::none() + } + Message::ADBSatisfied(result) => { + self.is_adb_satisfied = result; + Command::none() + } Message::Nothing => Command::none(), } } @@ -297,35 +308,52 @@ impl List { &self, settings: &Settings, selected_device: &Phone, - ) -> Element> { + ) -> Element { match &self.loading_state { LoadingState::DownloadingList => { let text = "Downloading latest UAD-ng lists from GitHub. Please wait..."; - waiting_view(settings, text, true) - } - LoadingState::FindingPhones => { - waiting_view(settings, "Finding connected devices...", false) + waiting_view(settings, text, true, style::Text::Default) } + LoadingState::FindingPhones => match self.is_adb_satisfied { + true => waiting_view( + settings, + "Finding connected devices...", + false, + style::Text::Default, + ), + false => waiting_view( + settings, + "ADB is not installed on your system, install ADB and relaunch application.", + false, + style::Text::Danger, + ), + }, LoadingState::LoadingPackages => { let text = "Pulling packages from the device. Please wait..."; - waiting_view(settings, text, false) - } - LoadingState::_UpdatingUad => { - waiting_view(settings, "Updating UAD-ng. Please wait...", false) - } - LoadingState::RestoringDevice(device) => { - waiting_view(settings, &format!("Restoring device: {device}"), false) + waiting_view(settings, text, false, style::Text::Default) } + LoadingState::_UpdatingUad => waiting_view( + settings, + "Updating UAD-ng. Please wait...", + false, + style::Text::Default, + ), + LoadingState::RestoringDevice(device) => waiting_view( + settings, + &format!("Restoring device: {device}"), + false, + style::Text::Default, + ), LoadingState::Ready => { let search_packages = text_input("Search packages...", &self.input_value) .width(Length::Fill) .on_input(Message::SearchInputChanged) - .padding(5); + .padding([5, 10]); - let select_all_checkbox = - checkbox("", self.all_selected, Message::ToggleAllSelected) - .style(style::CheckBox::SettingsEnabled) - .spacing(0); // no label, so remove space entirely + let select_all_checkbox = checkbox("", self.all_selected) + .on_toggle(Message::ToggleAllSelected) + .style(style::CheckBox::SettingsEnabled) + .spacing(0); // no label, so remove space entirely let col_sel_all = row![tooltip( select_all_checkbox, @@ -404,14 +432,14 @@ impl List { self.selected_packages.len() ))) .on_press(Message::ApplyActionOnSelection) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary) } else { button(text(format!( "Review selection ({})", self.selected_packages.len() ))) - .padding(5) + .padding([5, 10]) }; let action_row = row![Space::new(Length::Fill, Length::Shrink), review_selection] @@ -478,7 +506,7 @@ impl List { device: &Phone, settings: &Settings, packages: &[PackageRow], - ) -> Element> { + ) -> Element { // 5 element slice is cheap let mut summaries = Removal::CATEGORIES.map(SummaryEntry::from); for p in packages.iter().filter(|p| p.selected) { @@ -544,7 +572,7 @@ impl List { let modal_btn_row = row![ button(text("Cancel")).on_press(Message::ModalHide), - horizontal_space(Length::Fill), + horizontal_space(), button(text("Apply")).on_press(Message::ModalValidate), ] .padding([0, 15, 10, 10]); @@ -591,7 +619,7 @@ impl List { .name .clone() ),], - horizontal_space(Length::Fill), + horizontal_space(), row![match self.phone_packages[selection.0] [selection.1] .state @@ -728,23 +756,24 @@ fn waiting_view<'a>( _settings: &Settings, displayed_text: &str, btn: bool, -) -> Element<'a, Message, Renderer> { + text_style: style::Text, +) -> Element<'a, Message, Theme, Renderer> { let col = if btn { let no_internet_btn = button("No internet?") - .padding(5) + .padding([5, 10]) .on_press(Message::LoadUadList(false)) .style(style::Button::Primary); column![] .spacing(10) .align_items(Alignment::Center) - .push(text(displayed_text).size(20)) + .push(text(displayed_text).style(text_style).size(20)) .push(no_internet_btn) } else { column![] .spacing(10) .align_items(Alignment::Center) - .push(text(displayed_text).size(20)) + .push(text(displayed_text).style(text_style).size(20)) }; container(col) @@ -797,10 +826,10 @@ fn build_action_pkg_commands( commands } -fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, Renderer> { +fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, Theme, Renderer> { container( row![ - text(recap.category).size(24).width(Length::FillPortion(1)), + text(recap.category).size(19).width(Length::FillPortion(1)), vertical_rule(5), row![ if settings.device.disable_mode { @@ -808,7 +837,7 @@ fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, } else { text("Uninstall").style(style::Text::Danger) }, - horizontal_space(Length::Fill), + horizontal_space(), text(recap.discard).style(style::Text::Danger) ] .width(Length::FillPortion(1)), @@ -819,7 +848,7 @@ fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, } else { text("Restore").style(style::Text::Ok) }, - horizontal_space(Length::Fill), + horizontal_space(), text(recap.restore).style(style::Text::Ok) ] .width(Length::FillPortion(1)) diff --git a/src/gui/views/settings.rs b/src/gui/views/settings.rs index e91c7de..a40862f 100644 --- a/src/gui/views/settings.rs +++ b/src/gui/views/settings.rs @@ -179,7 +179,7 @@ impl Settings { } } - pub fn view(&self, phone: &Phone) -> Element> { + pub fn view(&self, phone: &Phone) -> Element { let radio_btn_theme = Theme::ALL .iter() .fold(row![].spacing(10), |column, option| { @@ -202,8 +202,8 @@ impl Settings { let expert_mode_checkbox = checkbox( "Allow to uninstall packages marked as \"unsafe\" (I KNOW WHAT I AM DOING)", self.general.expert_mode, - Message::ExpertMode, ) + .on_toggle(Message::ExpertMode) .style(style::CheckBox::SettingsEnabled); let expert_mode_descr = @@ -248,8 +248,8 @@ impl Settings { let multi_user_mode_checkbox = checkbox( "Affect all the users of the device (not only the selected user)", self.device.multi_user_mode, - Message::MultiUserMode, ) + .on_toggle(Message::MultiUserMode) .style(style::CheckBox::SettingsEnabled); let disable_checkbox_style = if phone.android_sdk >= 23 { @@ -275,8 +275,8 @@ impl Settings { let disable_mode_checkbox = checkbox( "Clear and disable packages instead of uninstalling them", self.device.disable_mode, - Message::DisableMode, ) + .on_toggle(Message::DisableMode) .style(disable_checkbox_style); let disable_setting_row = if phone.android_sdk >= 23 { @@ -316,7 +316,7 @@ impl Settings { .padding(6); let backup_btn = button(text("Backup").horizontal_alignment(alignment::Horizontal::Center)) - .padding(5) + .padding([5, 10]) .on_press(Message::BackupDevice) .style(style::Button::Primary) .width(77); @@ -324,24 +324,28 @@ impl Settings { let restore_btn = |enabled| { if enabled { button(text("Restore").horizontal_alignment(alignment::Horizontal::Center)) - .padding(5) + .padding([5, 10]) .on_press(Message::RestoreDevice) .width(77) } else { - button(text("No backup").horizontal_alignment(alignment::Horizontal::Center)) - .padding(5) - .width(77) + button( + text("No backup") + .horizontal_alignment(alignment::Horizontal::Center) + .vertical_alignment(alignment::Vertical::Center), + ) + .padding([5, 10]) + .width(77) } }; let locate_backup_btn = if self.device.backup.backups.is_empty() { button("Open backup directory") - .padding(5) + .padding([5, 10]) .style(style::Button::Primary) } else { button("Open backup directory") .on_press(Message::UrlPressed(BACKUP_DIR.join(phone.adb_id.clone()))) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary) }; @@ -354,11 +358,7 @@ impl Settings { .spacing(10) .align_items(Alignment::Center); - let restore_row = if self.device.backup.backups.is_empty() { - row![restore_btn(false), "Restore the state of the device",] - .spacing(10) - .align_items(Alignment::Center) - } else { + let restore_row = if !self.device.backup.backups.is_empty() { row![ restore_btn(true), "Restore the state of the device", @@ -368,6 +368,8 @@ impl Settings { ] .spacing(10) .align_items(Alignment::Center) + } else { + row![] }; let backup_restore_ctn = container(column![backup_row, restore_row].spacing(10)) diff --git a/src/gui/widgets/modal.rs b/src/gui/widgets/modal.rs index 167cef7..d1ea86b 100644 --- a/src/gui/widgets/modal.rs +++ b/src/gui/widgets/modal.rs @@ -4,17 +4,17 @@ use iced::mouse::{self, Cursor}; use iced::{advanced, event, Alignment, Color, Element, Event, Length, Point, Rectangle, Size}; /// A widget that centers a modal element over some base element -pub struct Modal<'a, Message, Renderer> { - base: Element<'a, Message, Renderer>, - modal: Element<'a, Message, Renderer>, +pub struct Modal<'a, Message, Theme, Renderer> { + base: Element<'a, Message, Theme, Renderer>, + modal: Element<'a, Message, Theme, Renderer>, on_blur: Option, } -impl<'a, Message, Renderer> Modal<'a, Message, Renderer> { +impl<'a, Message, Theme, Renderer> Modal<'a, Message, Theme, Renderer> { /// Returns a new [`Modal`] pub fn new( - base: impl Into>, - modal: impl Into>, + base: impl Into>, + modal: impl Into>, ) -> Self { Self { base: base.into(), @@ -34,7 +34,8 @@ impl<'a, Message, Renderer> Modal<'a, Message, Renderer> { } } -impl<'a, Message, Renderer> Widget for Modal<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> Widget + for Modal<'a, Message, Theme, Renderer> where Renderer: advanced::Renderer, Message: Clone, @@ -43,20 +44,23 @@ where vec![Tree::new(&self.base), Tree::new(&self.modal)] } + fn size(&self) -> Size { + self.base.as_widget().size() + } + fn diff(&self, tree: &mut Tree) { tree.diff_children(&[&self.base, &self.modal]); } - fn width(&self) -> Length { - self.base.as_widget().width() - } - - fn height(&self) -> Length { - self.base.as_widget().height() - } - - fn layout(&self, renderer: &Renderer, limits: &layout::Limits) -> layout::Node { - self.base.as_widget().layout(renderer, limits) + fn layout( + &self, + tree: &mut Tree, + renderer: &Renderer, + limits: &layout::Limits, + ) -> layout::Node { + self.base + .as_widget() + .layout(&mut tree.children[0], renderer, limits) } fn on_event( @@ -86,7 +90,7 @@ where &self, state: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, style: &renderer::Style, layout: Layout<'_>, cursor: Cursor, @@ -108,16 +112,15 @@ where state: &'b mut Tree, layout: Layout<'_>, _renderer: &Renderer, - ) -> Option> { - Some(overlay::Element::new( - layout.position(), - Box::new(Overlay { - content: &mut self.modal, - tree: &mut state.children[1], - size: layout.bounds().size(), - on_blur: self.on_blur.clone(), - }), - )) + _translation: iced::Vector, + ) -> Option> { + Some(overlay::Element::new(Box::new(Overlay { + position: layout.position(), + content: &mut self.modal, + tree: &mut state.children[1], + size: layout.bounds().size(), + on_blur: self.on_blur.clone(), + }))) } fn mouse_interaction( @@ -150,31 +153,32 @@ where } } -struct Overlay<'a, 'b, Message, Renderer> { - content: &'b mut Element<'a, Message, Renderer>, +struct Overlay<'a, 'b, Message, Theme, Renderer> { + position: Point, + content: &'b mut Element<'a, Message, Theme, Renderer>, tree: &'b mut Tree, size: Size, on_blur: Option, } -impl<'a, 'b, Message, Renderer> overlay::Overlay - for Overlay<'a, 'b, Message, Renderer> +impl<'a, 'b, Message, Theme, Renderer> overlay::Overlay + for Overlay<'a, 'b, Message, Theme, Renderer> where Renderer: advanced::Renderer, Message: Clone, { - fn layout(&self, renderer: &Renderer, _bounds: Size, position: Point) -> layout::Node { + fn layout(&mut self, renderer: &Renderer, _bounds: Size) -> layout::Node { let limits = layout::Limits::new(Size::ZERO, self.size) .width(Length::Fill) .height(Length::Fill); - let mut child = self.content.as_widget().layout(renderer, &limits); - child.align(Alignment::Center, Alignment::Center, limits.max()); + let child = self + .content + .as_widget() + .layout(self.tree, renderer, &limits) + .align(Alignment::Center, Alignment::Center, limits.max()); - let mut node = layout::Node::with_children(self.size, vec![child]); - node.move_to(position); - - node + layout::Node::with_children(self.size, vec![child]).move_to(self.position) } fn on_event( @@ -215,7 +219,7 @@ where fn draw( &self, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, style: &renderer::Style, layout: Layout<'_>, cursor: Cursor, @@ -223,9 +227,7 @@ where renderer.fill_quad( renderer::Quad { bounds: layout.bounds(), - border_radius: iced::BorderRadius::from(0.0), - border_width: 0.0, - border_color: Color::TRANSPARENT, + ..renderer::Quad::default() }, Color { a: 0.80, @@ -275,12 +277,14 @@ where } } -impl<'a, Message, Renderer> From> for Element<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> From> + for Element<'a, Message, Theme, Renderer> where + Theme: 'a, Renderer: 'a + advanced::Renderer, Message: 'a + Clone, { - fn from(modal: Modal<'a, Message, Renderer>) -> Self { + fn from(modal: Modal<'a, Message, Theme, Renderer>) -> Self { Element::new(modal) } } diff --git a/src/gui/widgets/navigation_menu.rs b/src/gui/widgets/navigation_menu.rs index e6c7edd..1b77eca 100644 --- a/src/gui/widgets/navigation_menu.rs +++ b/src/gui/widgets/navigation_menu.rs @@ -14,11 +14,11 @@ pub const ICONS: Font = Font { }; pub fn nav_menu<'a>( - device_list: &'a Vec, + device_list: &'a [Phone], selected_device: Option, apps_view: &AppsView, self_update_state: &SelfUpdateState, -) -> Element<'a, Message, Renderer> { +) -> Element<'a, Message, Theme, Renderer> { let apps_refresh_btn = button( Text::new("\u{E900}") .font(ICONS) @@ -26,7 +26,7 @@ pub fn nav_menu<'a>( .horizontal_alignment(alignment::Horizontal::Center), ) .on_press(Message::RefreshButtonPressed) - .padding(5) + .padding([5, 10]) .style(style::Button::Refresh); let apps_refresh_tooltip = tooltip(apps_refresh_btn, "Refresh apps", tooltip::Position::Bottom) @@ -35,7 +35,7 @@ pub fn nav_menu<'a>( let reboot_btn = button("Reboot") .on_press(Message::RebootButtonPressed) - .padding(5) + .padding([5, 10]) .style(style::Button::Refresh); #[allow(clippy::option_if_let_else)] @@ -56,7 +56,7 @@ pub fn nav_menu<'a>( let update_btn = if self_update_state.latest_release.is_some() { button("Update") .on_press(Message::AboutAction(AboutMessage::DoSelfUpdate)) - .padding(5) + .padding([5, 10]) .style(style::Button::SelfUpdate) } else { button("").height(0).width(0).style(style::Button::Hidden) @@ -64,17 +64,17 @@ pub fn nav_menu<'a>( let apps_btn = button("Apps") .on_press(Message::AppsPress) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let about_btn = button("About") .on_press(Message::AboutPressed) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let settings_btn = button("Settings") .on_press(Message::SettingsPressed) - .padding(5) + .padding([5, 10]) .style(style::Button::Primary); let device_list_text = match apps_view.loading_state { diff --git a/src/gui/widgets/package_row.rs b/src/gui/widgets/package_row.rs index 9d94c88..4697dab 100644 --- a/src/gui/widgets/package_row.rs +++ b/src/gui/widgets/package_row.rs @@ -50,7 +50,7 @@ impl PackageRow { Command::none() } - pub fn view(&self, settings: &Settings, _phone: &Phone) -> Element> { + pub fn view(&self, settings: &Settings, _phone: &Phone) -> Element { //let trash_svg = format!("{}/resources/assets/trash.svg", env!("CARGO_MANIFEST_DIR")); //let restore_svg = format!("{}/resources/assets/rotate.svg", env!("CARGO_MANIFEST_DIR")); let button_style; @@ -86,7 +86,8 @@ impl PackageRow { || self.state != PackageState::Enabled || settings.general.expert_mode { - selection_checkbox = checkbox("", self.selected, Message::ToggleSelection) + selection_checkbox = checkbox("", self.selected) + .on_toggle(Message::ToggleSelection) .style(style::CheckBox::PackageEnabled); action_btn = button( @@ -96,7 +97,8 @@ impl PackageRow { ) .on_press(Message::ActionPressed); } else { - selection_checkbox = checkbox("", self.selected, Message::ToggleSelection) + selection_checkbox = checkbox("", self.selected) + .on_toggle(Message::ToggleSelection) .style(style::CheckBox::PackageDisabled); action_btn = button(