chore: migrated to freya 0.5.0-rc.4 (#739)
This commit is contained in:
parent
419c07b822
commit
815b78e227
43 changed files with 191 additions and 379 deletions
152
Cargo.lock
generated
152
Cargo.lock
generated
|
|
@ -517,7 +517,7 @@ version = "0.7.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
|
||||
dependencies = [
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"event-listener-strategy",
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
|
|
@ -586,7 +586,7 @@ version = "3.4.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"
|
||||
dependencies = [
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"event-listener-strategy",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
|
@ -604,7 +604,7 @@ dependencies = [
|
|||
"async-task",
|
||||
"blocking",
|
||||
"cfg-if",
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"futures-lite",
|
||||
"rustix 1.1.4",
|
||||
]
|
||||
|
|
@ -704,15 +704,6 @@ dependencies = [
|
|||
"tungstenite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-watch"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a078faf4e27c0c6cc0efb20e5da59dcccc04968ebf2801d8e0b2195124cdcdb2"
|
||||
dependencies = [
|
||||
"event-listener 2.5.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async_zip"
|
||||
version = "0.0.18"
|
||||
|
|
@ -874,6 +865,12 @@ version = "0.22.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.23.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
|
||||
|
||||
[[package]]
|
||||
name = "beul"
|
||||
version = "1.0.0"
|
||||
|
|
@ -1142,7 +1139,7 @@ version = "0.2.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eec09acab5c2227aba2e592d431708305bdeb6d507703f6cd8983fb57b6c5ef7"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"cargo-packager-utils",
|
||||
"ctor 0.2.9",
|
||||
"dirs",
|
||||
|
|
@ -1939,12 +1936,6 @@ dependencies = [
|
|||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "5.4.2"
|
||||
|
|
@ -1961,7 +1952,7 @@ version = "0.5.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
|
||||
dependencies = [
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
|
|
@ -2102,9 +2093,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d58881053a1b879450514b0cd59031e85057226c77bdf7432265873bd3830e61"
|
||||
checksum = "7a0902ffd592df176d3088ad001788f9a9438c21c40b4cbdec4dc3ef8bd16247"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"freya-android",
|
||||
|
|
@ -2126,9 +2117,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-android"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dfded12bc5487ac3bc4dc45e38daa2d27abfd5ff7d888680e929ddf5ea44cbed"
|
||||
checksum = "fe3befea9d845539f4428f232ec6b1661a54e974a6e7b852f82fef90d994ccba"
|
||||
dependencies = [
|
||||
"freya-components",
|
||||
"freya-core",
|
||||
|
|
@ -2140,9 +2131,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-animation"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d436ad6d8565b1e42f75eb7d1ec2d914c69475793d104e2eca0ba72d0a4b2cb5"
|
||||
checksum = "d9f9429ff1e0a793068ebdd4be84c03e722fdfb3d20c8bf3a63a7a875ba0a6de"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"easer",
|
||||
|
|
@ -2151,9 +2142,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-clipboard"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "133c38b53ab539439d29930a1fe0628180df844457430a8b53863815a22d924e"
|
||||
checksum = "c8b2076b0a2d040ef2153cdd624dba28a6f4fabd64ca6182b128f642e2423b32"
|
||||
dependencies = [
|
||||
"copypasta",
|
||||
"freya-core",
|
||||
|
|
@ -2161,9 +2152,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-components"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c4874a0c79b5d1248f4dc70aa99a488c2b8721f0548980fa338bfb56f661d5d"
|
||||
checksum = "bd20c885e7e29f43e0279affea98ae3e1392c9d9f07a09b0ce0fc65d46fc09dc"
|
||||
dependencies = [
|
||||
"accesskit",
|
||||
"anyhow",
|
||||
|
|
@ -2177,7 +2168,6 @@ dependencies = [
|
|||
"freya-core",
|
||||
"freya-edit",
|
||||
"freya-engine",
|
||||
"freya-icons",
|
||||
"freya-router",
|
||||
"freya-sdk",
|
||||
"open",
|
||||
|
|
@ -2190,12 +2180,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-core"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "849fbf97eb9e5c842d63d1fe9291a31fcaacb6dba26d4d9ef230d17c08800fc7"
|
||||
checksum = "4ee644e4c5b4686b4cf59463347df7b64d9eb057c4a251e4528e90a1ecbf707d"
|
||||
dependencies = [
|
||||
"accesskit",
|
||||
"async-watch",
|
||||
"bitflags 2.13.1",
|
||||
"bytes 1.11.1",
|
||||
"cursor-icon",
|
||||
|
|
@ -2220,9 +2209,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-edit"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05f8a3e6e18118ed1f3c240789a0d79b899ab6881542c5c67d8b8f4db3cb7e3f"
|
||||
checksum = "b0e20601f2d927591cace6bdaf731397908105a572eeaa934b387471bc6cd3b1"
|
||||
dependencies = [
|
||||
"bitflags 2.13.1",
|
||||
"freya-clipboard",
|
||||
|
|
@ -2235,27 +2224,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-engine"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e48a6a6f340133481eb2bfe9dd4a18e3ff409288fcce3c0ae44421766403b3a6"
|
||||
checksum = "95c5ba0dae520d78222758cffdcb335ba9cac6f846721b544fe216d894866b8c"
|
||||
dependencies = [
|
||||
"freya-skia-safe",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "freya-icons"
|
||||
version = "0.5.0-rc.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de6fb3ee664cab1d601d32265218792e86870e9d0adb4dfc00982da7e97706b1"
|
||||
dependencies = [
|
||||
"bytes 1.11.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "freya-markdown"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4f0cbfd1fe4380c8a6a3ba046186c8a2297d16d982d531b05b9be456649b9b5"
|
||||
checksum = "94eb6ca3e8f9f18654ff14589c94155d7fa60c697dcbbbf0f02cb0a9e72e538c"
|
||||
dependencies = [
|
||||
"freya-components",
|
||||
"freya-core",
|
||||
|
|
@ -2265,9 +2245,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-performance-plugin"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ece11eccfdbdb4ce337dd6989545ffada4331d8f5b277c18755c9d4342ff800"
|
||||
checksum = "e2c69c000dd001e2df79a8b9ad0977cc0f835c494d2e17a2848b80495c293fce"
|
||||
dependencies = [
|
||||
"freya-core",
|
||||
"freya-engine",
|
||||
|
|
@ -2276,9 +2256,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-query"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c64093d04e01793f4dfa4f2534d0eb560a02e4a341417fda8db1186fb1c629ce"
|
||||
checksum = "9db86c4a0dea3ce04df0defa4ce62dad8e7c32bad05090e3644ff6d2f2e0655e"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"freya-core",
|
||||
|
|
@ -2287,18 +2267,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-radio"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3df935a2d24b8bbdbcaed0b0faf156c6aa86722b42e67b54cac3db7fa8d570ae"
|
||||
checksum = "35a2458e07d312a2365951a216a8fa14a604159f8ae7702a7ccb2ffbc3fccf0a"
|
||||
dependencies = [
|
||||
"freya-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "freya-router"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2a12fd1d5f42737ff2b73821ce9ef5b219b58e77c60efe72e304989e6cd85da"
|
||||
checksum = "f26a8c7b3b3c6432de8d90c01821f5206ab6d6c2c8417fe7b873d7a6586e7580"
|
||||
dependencies = [
|
||||
"freya-core",
|
||||
"freya-router-macro",
|
||||
|
|
@ -2309,9 +2289,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-router-macro"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd179a428cb960df4bd43f8f50bbe5c57c92b86e9875734dfbf2bd6074ceb446"
|
||||
checksum = "105a54bccebe377d4ce12066813737a0f86e1cc587cdc98c4df92fe48c800be4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -2321,9 +2301,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-sdk"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a78c948db33b22f1804566b5399f210beb8009ddc7ad42d78f50d944eda51663"
|
||||
checksum = "0fe2c1e80db9c6c782536bf1e8f8e4859ed43359e7c0775c619be8826e16dd18"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"freya-core",
|
||||
|
|
@ -2331,9 +2311,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-skia-bindings"
|
||||
version = "0.98.1"
|
||||
version = "0.99.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e3b9c668f9711350e499fc1f07724f6e66f92379cdbda8f2ba61c3373c857f7"
|
||||
checksum = "6e65f9ff56a7d08451c839386a86842f065552c561041d0cdcc213390a2361a2"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
|
|
@ -2348,11 +2328,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-skia-safe"
|
||||
version = "0.98.1"
|
||||
version = "0.99.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6498ad326bbce161e52567f10f38e53a106bed1e8d575396fce28f5d67a5d311"
|
||||
checksum = "567c808eff01a4ad7d9d3dc42ce0fb4335dce76a2398d0cd18f1357bf2450c81"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.23.1",
|
||||
"bitflags 2.13.1",
|
||||
"freya-skia-bindings",
|
||||
"freya-skia-svg-macros",
|
||||
|
|
@ -2372,9 +2352,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "freya-winit"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "273f5eaae2f6561d86c67285c56cd098bceec322169eddfae36e9dce3d52a270"
|
||||
checksum = "5f3e4172e15aa5bd524db527733fec0ba9ac3e4191388064c9ff0d4f5a23e091"
|
||||
dependencies = [
|
||||
"accesskit",
|
||||
"accesskit_winit",
|
||||
|
|
@ -2981,7 +2961,7 @@ version = "0.1.20"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bytes 1.11.1",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
|
|
@ -4526,7 +4506,7 @@ dependencies = [
|
|||
name = "oneclient_auth"
|
||||
version = "2.2.3"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"md-5 0.10.6",
|
||||
"oneclient_common",
|
||||
|
|
@ -4616,7 +4596,7 @@ dependencies = [
|
|||
"async-trait",
|
||||
"async-tungstenite",
|
||||
"async_zip",
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bytes 1.11.1",
|
||||
"chrono",
|
||||
"digest 0.10.7",
|
||||
|
|
@ -4742,7 +4722,7 @@ dependencies = [
|
|||
name = "oneclient_mc"
|
||||
version = "2.2.3"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"futures-util",
|
||||
"interfrost",
|
||||
|
|
@ -4915,9 +4895,9 @@ checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
|
|||
|
||||
[[package]]
|
||||
name = "pathgraph"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4520bda5a6ac05d6f8f051eb65cdc647dda6a05cdbb1eb5c65e246423fb060b"
|
||||
checksum = "e2f33d657119e71a8b28da5c8d52ade41672d873c292ae5bf4833b8fa658c86a"
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
|
|
@ -5343,9 +5323,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
|
|||
|
||||
[[package]]
|
||||
name = "ragnarok"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fa4dfe7f0fbe3c9d24c9bf9de10b58d44941633e5bfe7937cebb248119e8cad"
|
||||
checksum = "5c5bbbde00035bdece3362a320eb982f23a57f82bf5f480a74f6aec4aaa01203"
|
||||
dependencies = [
|
||||
"euclid",
|
||||
"hotpath",
|
||||
|
|
@ -5602,7 +5582,7 @@ version = "0.12.28"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bytes 1.11.1",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
|
@ -5646,7 +5626,7 @@ version = "0.13.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bytes 1.11.1",
|
||||
"encoding_rs",
|
||||
"futures-channel",
|
||||
|
|
@ -6498,14 +6478,14 @@ version = "0.9.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bytes 1.11.1",
|
||||
"cfg-if",
|
||||
"chrono",
|
||||
"crc",
|
||||
"crossbeam-queue",
|
||||
"either",
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"futures-core",
|
||||
"futures-intrusive",
|
||||
"futures-io",
|
||||
|
|
@ -6604,7 +6584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"bitflags 2.13.1",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
|
|
@ -7145,9 +7125,9 @@ checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
|
|||
|
||||
[[package]]
|
||||
name = "torin"
|
||||
version = "0.5.0-rc.1"
|
||||
version = "0.5.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bfa551add6f7c4eee4c7b4b92610b1559d677fc2518802d3b7265be2e53ef43"
|
||||
checksum = "e4fb54c965056694c8616b9e0a6dfa151207c3599cd0c18f93acdb7172949bee"
|
||||
dependencies = [
|
||||
"euclid",
|
||||
"itertools 0.14.0",
|
||||
|
|
@ -7433,7 +7413,7 @@ version = "3.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"rustls",
|
||||
|
|
@ -7449,7 +7429,7 @@ version = "0.6.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"http 1.5.0",
|
||||
"httparse",
|
||||
"log",
|
||||
|
|
@ -8511,7 +8491,7 @@ dependencies = [
|
|||
"async-trait",
|
||||
"blocking",
|
||||
"enumflags2",
|
||||
"event-listener 5.4.2",
|
||||
"event-listener",
|
||||
"futures-core",
|
||||
"futures-lite",
|
||||
"hex",
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@ syn = {version = "=2.0.117"}
|
|||
thiserror = {version = "=2.0.18"}
|
||||
|
||||
# ui
|
||||
freya = {version = "=0.5.0-rc.1", features = ["engine", "winit", "router", "remote-asset", "sdk", "markdown", "query", "radio", "titlebar"]}
|
||||
freya-skia-safe = "=0.98.1" # required for the SKSL player renderer
|
||||
freya = {version = "=0.5.0-rc.4", features = ["engine", "winit", "router", "remote-asset", "sdk", "markdown", "query", "radio", "titlebar"]}
|
||||
freya-skia-safe = "=0.99.1" # required for the SKSL player renderer
|
||||
image = {version = "=0.25.10", default-features = false, features = ["png", "jpeg"]}
|
||||
|
||||
[profile.release]
|
||||
|
|
|
|||
|
|
@ -179,16 +179,9 @@ impl Component for AccountRow {
|
|||
.maybe(*hovered.read() && !active, |el| {
|
||||
el.background(colors::ghost_overlay_hover())
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
hovered.set(true);
|
||||
if !active {
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
}
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovered.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor((!active).then_some(CursorIcon::Pointer))
|
||||
.on_pointer_enter(move |_| hovered.set(true))
|
||||
.on_pointer_leave(move |_| hovered.set(false))
|
||||
.on_press(switch)
|
||||
.child(
|
||||
Avatar::new(id.to_string())
|
||||
|
|
|
|||
|
|
@ -251,10 +251,6 @@ impl Component for Button {
|
|||
|
||||
let cursor_icon = self.cursor_icon;
|
||||
|
||||
use_drop(move || {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
let palette = variant_colors(self.variant);
|
||||
|
||||
let background = if !enabled() {
|
||||
|
|
@ -329,21 +325,14 @@ impl Component for Button {
|
|||
hovering.set(false);
|
||||
pressing.set(false);
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
Cursor::set(cursor_icon);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(cursor_icon)
|
||||
.map(on_press.clone(), |rect, handler| {
|
||||
rect.on_all_press(move |event: Event<PressEventData>| {
|
||||
handler.call(event);
|
||||
})
|
||||
});
|
||||
} else {
|
||||
rect = rect
|
||||
.on_pointer_enter(move |_| Cursor::set(CursorIcon::NotAllowed))
|
||||
.on_pointer_leave(move |_| Cursor::set(CursorIcon::default()));
|
||||
rect = rect.cursor(CursorIcon::NotAllowed);
|
||||
}
|
||||
|
||||
rect
|
||||
|
|
|
|||
|
|
@ -357,11 +357,8 @@ impl Component for BarChart {
|
|||
.width(Size::flex(1.0))
|
||||
.height(Size::fill())
|
||||
.main_align(Alignment::End)
|
||||
.on_pointer_enter(move |_| {
|
||||
*hovered.write() = Some(i);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| *hovered.write() = Some(i))
|
||||
.child(
|
||||
rect()
|
||||
.width(Size::fill())
|
||||
|
|
|
|||
|
|
@ -356,8 +356,7 @@ fn cluster_header(
|
|||
.margin(Gaps::new(if first { 0. } else { 8. }, 0., 3., 0.))
|
||||
.corner_radius(CornerRadius::new_all(8.))
|
||||
.background(colors::component_bg())
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| open_cluster(&dispatch, cluster_id))
|
||||
.child(
|
||||
label()
|
||||
|
|
|
|||
|
|
@ -192,14 +192,9 @@ impl Component for ContextMenuRow {
|
|||
} else {
|
||||
Color::TRANSPARENT
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
hovered.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovered.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovered.set(true))
|
||||
.on_pointer_leave(move |_| hovered.set(false))
|
||||
.on_press(move |_| {
|
||||
on_select.call(());
|
||||
on_close.call(());
|
||||
|
|
|
|||
|
|
@ -280,8 +280,7 @@ fn auto_scroll_toggle(mut auto_scroll: State<bool>) -> impl IntoElement {
|
|||
} else {
|
||||
colors::component_bg()
|
||||
})
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| auto_scroll.toggle())
|
||||
.child(Icon::new(IconType::ChevronDown).size(13.).color(if on {
|
||||
colors::brand()
|
||||
|
|
|
|||
|
|
@ -164,10 +164,6 @@ impl Component for NavLink {
|
|||
let target = self.target.clone();
|
||||
let nav_label = self.nav_label;
|
||||
|
||||
use_drop(move || {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
let color = if active || hovering() || focused().is_focused() {
|
||||
theme::colors::fg_primary()
|
||||
} else {
|
||||
|
|
@ -204,8 +200,7 @@ impl Component for NavLink {
|
|||
})
|
||||
.on_pointer_over(move |_| hovering.set(true))
|
||||
.on_pointer_out(move |_| hovering.set(false))
|
||||
.on_pointer_enter(move |_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(move |_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.child(
|
||||
label()
|
||||
.text(nav_label)
|
||||
|
|
|
|||
|
|
@ -207,8 +207,7 @@ fn tasks_section(entry: &InboxEntry, mut expanded: State<bool>) -> impl IntoElem
|
|||
.horizontal()
|
||||
.cross_align(Alignment::Center)
|
||||
.spacing(6.)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| {
|
||||
let now = !*expanded.peek();
|
||||
expanded.set(now);
|
||||
|
|
|
|||
|
|
@ -225,8 +225,7 @@ fn grid_card(
|
|||
let package_id = item.package_id.clone();
|
||||
let package_type_owned = package_type.to_string();
|
||||
rect()
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |e: Event<PressEventData>| {
|
||||
e.stop_propagation();
|
||||
let _ = RouterContext::get().push(Route::BrowserPackage {
|
||||
|
|
@ -307,8 +306,7 @@ fn grid_card(
|
|||
.background(bg)
|
||||
.border(border_all_color(1.5, border))
|
||||
.content(Content::Flex)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_toggle.call(()))
|
||||
.child(header)
|
||||
.child(
|
||||
|
|
@ -344,15 +342,13 @@ fn package_info(
|
|||
.spacing(12.)
|
||||
.content(Content::Flex)
|
||||
.maybe(remote, |el| {
|
||||
el.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.on_press(move |_| {
|
||||
let _ = RouterContext::get().push(Route::BrowserPackage {
|
||||
cluster_id,
|
||||
package_type: package_type.clone(),
|
||||
package_id: format!("{}:{}", provider as u8, package_id),
|
||||
});
|
||||
})
|
||||
el.cursor(CursorIcon::Pointer).on_press(move |_| {
|
||||
let _ = RouterContext::get().push(Route::BrowserPackage {
|
||||
cluster_id,
|
||||
package_type: package_type.clone(),
|
||||
package_id: format!("{}:{}", provider as u8, package_id),
|
||||
});
|
||||
})
|
||||
})
|
||||
.child(icon)
|
||||
.child(
|
||||
|
|
@ -528,15 +524,10 @@ fn remove_button(
|
|||
Color::TRANSPARENT
|
||||
})
|
||||
.maybe(enabled, |el| {
|
||||
el.on_pointer_enter(move |_| {
|
||||
hovering.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovering.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.on_press(move |_| on_remove())
|
||||
el.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovering.set(true))
|
||||
.on_pointer_leave(move |_| hovering.set(false))
|
||||
.on_press(move |_| on_remove())
|
||||
})
|
||||
.child(Icon::new(IconType::Trash01).size(14.).color(color))
|
||||
.into_element()
|
||||
|
|
|
|||
|
|
@ -106,19 +106,6 @@ impl Component for PlayerModel {
|
|||
});
|
||||
|
||||
let mut drag = use_state(|| None::<(f32, f32, f32, f32)>);
|
||||
let mut hovering = use_state(|| false);
|
||||
|
||||
// Derive from both states Freya re-emits `pointer enter` after a press which
|
||||
// would otherwise drop the grabbing cursor as the drag starts
|
||||
let apply_cursor = move || {
|
||||
Cursor::set(if drag.peek().is_some() {
|
||||
CursorIcon::Grabbing
|
||||
} else if *hovering.peek() {
|
||||
CursorIcon::Grab
|
||||
} else {
|
||||
CursorIcon::default()
|
||||
});
|
||||
};
|
||||
|
||||
let mut last_uuid = use_state({
|
||||
let u = self.uuid.clone();
|
||||
|
|
@ -168,22 +155,21 @@ impl Component for PlayerModel {
|
|||
ctx.canvas.draw_rect(SkRect::new(0.0, 0.0, w, h), &paint);
|
||||
});
|
||||
|
||||
canvas(render_cb)
|
||||
.key(src_ptr as u64)
|
||||
// `canvas` carries no style data, so the cursor rides on a wrapper `rect` that
|
||||
// covers exactly the same area
|
||||
rect()
|
||||
.width(self.width.clone())
|
||||
.height(self.height.clone())
|
||||
.on_pointer_enter(move |_| {
|
||||
hovering.set(true);
|
||||
apply_cursor();
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovering.set(false);
|
||||
apply_cursor();
|
||||
})
|
||||
.cursor(CursorIcon::Grab)
|
||||
.child(
|
||||
canvas(render_cb)
|
||||
.key(src_ptr as u64)
|
||||
.width(Size::fill())
|
||||
.height(Size::fill()),
|
||||
)
|
||||
.on_pointer_down(move |e: Event<PointerEventData>| {
|
||||
let loc = e.global_location();
|
||||
drag.set(Some((loc.x as f32, loc.y as f32, yaw(), pitch())));
|
||||
apply_cursor();
|
||||
})
|
||||
.on_global_pointer_move(move |e: Event<PointerEventData>| {
|
||||
let Some((sx, sy, yaw0, pitch0)) = *drag.read() else {
|
||||
|
|
@ -206,7 +192,6 @@ impl Component for PlayerModel {
|
|||
.on_global_pointer_press(move |_: Event<PointerEventData>| {
|
||||
if drag.peek().is_some() {
|
||||
drag.set(None);
|
||||
apply_cursor();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -191,8 +191,7 @@ fn chevron_btn(
|
|||
}
|
||||
|
||||
base.background(Color::from_argb(140, 0, 0, 0))
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(on_press)
|
||||
.child(Icon::new(icon).size(26.).color(colors::fg_primary()))
|
||||
.into_element()
|
||||
|
|
|
|||
|
|
@ -184,8 +184,7 @@ impl<T: Copy + PartialEq + 'static> Component for SegmentButton<T> {
|
|||
el.border(border_all_color(1., colors::brand()))
|
||||
})
|
||||
.maybe(!disabled, |el| {
|
||||
el.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
el.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| *selected.write() = value)
|
||||
})
|
||||
.maybe_child(self.icon.map(|icon| {
|
||||
|
|
|
|||
|
|
@ -128,9 +128,6 @@ impl Component for StatusBanner {
|
|||
|
||||
let mut close_hover = use_state(|| false);
|
||||
|
||||
// Close unmounts the banner from under the pointer so no `leave` fires
|
||||
use_drop(|| Cursor::set(CursorIcon::default()));
|
||||
|
||||
let close = issue.closeable().then(|| {
|
||||
rect()
|
||||
.center()
|
||||
|
|
@ -142,14 +139,9 @@ impl Component for StatusBanner {
|
|||
} else {
|
||||
Color::TRANSPARENT
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
close_hover.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
close_hover.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| close_hover.set(true))
|
||||
.on_pointer_leave(move |_| close_hover.set(false))
|
||||
.on_press(move |_| {
|
||||
dismissed.write().insert(issue);
|
||||
})
|
||||
|
|
|
|||
|
|
@ -184,8 +184,7 @@ impl Component for TabButton {
|
|||
.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()));
|
||||
.cursor(CursorIcon::Pointer);
|
||||
|
||||
if let Some(handler) = self.on_press.clone() {
|
||||
el = el.on_all_press(move |e| handler.call(e));
|
||||
|
|
|
|||
|
|
@ -98,10 +98,6 @@ impl Component for Switch {
|
|||
|
||||
let text = if on { "On" } else { "Off" };
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
rect()
|
||||
.horizontal()
|
||||
.cross_align(Alignment::Center)
|
||||
|
|
@ -110,11 +106,9 @@ impl Component for Switch {
|
|||
.a11y_focusable(!disabled)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.maybe(!disabled, |el| {
|
||||
el.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.on_all_press(move |_| {
|
||||
on_press.call(());
|
||||
})
|
||||
el.cursor(CursorIcon::Pointer).on_all_press(move |_| {
|
||||
on_press.call(());
|
||||
})
|
||||
})
|
||||
.child(
|
||||
label()
|
||||
|
|
|
|||
|
|
@ -113,15 +113,13 @@ pub fn try_account(query: &UseQuery<AccountQuery>) -> Option<MinecraftAccount> {
|
|||
}
|
||||
|
||||
async fn invalidate_auth_queries(account_id: Option<Uuid>) {
|
||||
QueriesStorage::<ListAccountsQuery>::try_invalidate_matching(ListAccountsKeys).await;
|
||||
QueriesStorage::<ListAccountsQuery>::invalidate_matching(ListAccountsKeys).await;
|
||||
for fallback in [false, true] {
|
||||
QueriesStorage::<DefaultAccountQuery>::try_invalidate_matching(DefaultAccountKeys {
|
||||
fallback,
|
||||
})
|
||||
.await;
|
||||
QueriesStorage::<DefaultAccountQuery>::invalidate_matching(DefaultAccountKeys { fallback })
|
||||
.await;
|
||||
}
|
||||
if let Some(id) = account_id {
|
||||
QueriesStorage::<AccountQuery>::try_invalidate_matching(AccountKeys { id }).await;
|
||||
QueriesStorage::<AccountQuery>::invalidate_matching(AccountKeys { id }).await;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,11 +45,10 @@ pub fn loaded_image(url: Option<&str>, query: &UseQuery<CachedImageQuery>) -> Op
|
|||
|
||||
pub fn use_cached_image(url: Option<String>, max_edge: u32) -> UseQuery<CachedImageQuery> {
|
||||
let url = url.unwrap_or_default();
|
||||
let enabled = !url.is_empty();
|
||||
let keys = (!url.is_empty()).then_some(CachedImageKeys { url, max_edge });
|
||||
|
||||
use_query(
|
||||
Query::new(CachedImageKeys { url, max_edge }, CachedImageQuery)
|
||||
.enable(enabled)
|
||||
Query::new(keys, CachedImageQuery)
|
||||
.stale_time(IMAGE_STALE)
|
||||
.clean_time(IMAGE_CLEAN),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ pub fn java_runtimes(query: &UseQuery<ListJavaRuntimesQuery>) -> Vec<JavaRuntime
|
|||
}
|
||||
|
||||
pub async fn invalidate_java_queries() {
|
||||
QueriesStorage::<ListJavaRuntimesQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ListJavaRuntimesQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ pub fn try_log_content(query: &UseQuery<LogContentQuery>) -> Option<Vec<LogLine>
|
|||
}
|
||||
|
||||
pub async fn invalidate_logs_queries() {
|
||||
QueriesStorage::<ClusterLogsQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<LogContentQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ClusterLogsQuery>::invalidate_all().await;
|
||||
QueriesStorage::<LogContentQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
|
|
|
|||
|
|
@ -25,12 +25,12 @@ async fn timed(step: &'static str, fut: impl std::future::Future<Output = ()>) {
|
|||
|
||||
pub async fn invalidate_cluster_queries() {
|
||||
let started = std::time::Instant::now();
|
||||
timed("cluster_content", QueriesStorage::<ClusterContentQuery>::try_invalidate_all()).await;
|
||||
timed("bundle_overrides", QueriesStorage::<BundleOverridesQuery>::try_invalidate_all()).await;
|
||||
timed("bundles_with_status", QueriesStorage::<BundlesWithStatusQuery>::try_invalidate_all()).await;
|
||||
timed("clusters", QueriesStorage::<ListClustersQuery>::try_invalidate_all()).await;
|
||||
timed("bundle_updates", QueriesStorage::<BundleUpdatesQuery>::try_invalidate_all()).await;
|
||||
timed("package_updates", QueriesStorage::<PackageUpdatesQuery>::try_invalidate_all()).await;
|
||||
timed("cluster_content", QueriesStorage::<ClusterContentQuery>::invalidate_all()).await;
|
||||
timed("bundle_overrides", QueriesStorage::<BundleOverridesQuery>::invalidate_all()).await;
|
||||
timed("bundles_with_status", QueriesStorage::<BundlesWithStatusQuery>::invalidate_all()).await;
|
||||
timed("clusters", QueriesStorage::<ListClustersQuery>::invalidate_all()).await;
|
||||
timed("bundle_updates", QueriesStorage::<BundleUpdatesQuery>::invalidate_all()).await;
|
||||
timed("package_updates", QueriesStorage::<PackageUpdatesQuery>::invalidate_all()).await;
|
||||
tracing::debug!(
|
||||
target: "oneclient_app::perf",
|
||||
ms = started.elapsed().as_millis() as u64,
|
||||
|
|
@ -41,15 +41,15 @@ pub async fn invalidate_cluster_queries() {
|
|||
/// Split out of [`invalidate_cluster_queries`] so an install can wait for just
|
||||
/// this before dropping its busy flag
|
||||
pub async fn invalidate_cluster_content_queries() {
|
||||
QueriesStorage::<ClusterContentQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ClusterContentQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
pub async fn invalidate_profile_queries() {
|
||||
QueriesStorage::<ListNamedProfilesQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<GameProfileQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ClusterProfileQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ClusterSettingsQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ListClustersQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ListNamedProfilesQuery>::invalidate_all().await;
|
||||
QueriesStorage::<GameProfileQuery>::invalidate_all().await;
|
||||
QueriesStorage::<ClusterProfileQuery>::invalidate_all().await;
|
||||
QueriesStorage::<ClusterSettingsQuery>::invalidate_all().await;
|
||||
QueriesStorage::<ListClustersQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Hash)]
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ use oneclient_core::LauncherError;
|
|||
pub const BROWSE_PAGE_SIZE: usize = DEFAULT_PAGE_SIZE;
|
||||
pub const VERSIONS_PAGE_SIZE: usize = 20;
|
||||
|
||||
/// The listing asks for one per visible card holding them stops scrolling from
|
||||
/// refiring a request per card each time it comes back into view
|
||||
const VERSIONS_STALE: Duration = Duration::from_secs(5 * 60);
|
||||
|
||||
pub fn content_type_for_slug(slug: &str) -> ContentType {
|
||||
|
|
@ -242,8 +240,6 @@ pub fn use_package_versions(
|
|||
use_package_versions_when(true, provider, project_id, game_version, loader, page)
|
||||
}
|
||||
|
||||
/// A listing row keeps its install button once installed so the hook still
|
||||
/// runs there but a request per already-installed row is pure waste
|
||||
pub fn use_package_versions_when(
|
||||
enabled: bool,
|
||||
provider: ProviderId,
|
||||
|
|
@ -252,20 +248,15 @@ pub fn use_package_versions_when(
|
|||
loader: Option<GameLoader>,
|
||||
page: usize,
|
||||
) -> UseQuery<PackageVersionsQuery> {
|
||||
use_query(
|
||||
Query::new(
|
||||
PackageVersionsKeys {
|
||||
provider,
|
||||
project_id,
|
||||
game_version,
|
||||
loader,
|
||||
page,
|
||||
},
|
||||
PackageVersionsQuery,
|
||||
)
|
||||
.enable(enabled)
|
||||
.stale_time(VERSIONS_STALE),
|
||||
)
|
||||
let keys = enabled.then_some(PackageVersionsKeys {
|
||||
provider,
|
||||
project_id,
|
||||
game_version,
|
||||
loader,
|
||||
page,
|
||||
});
|
||||
|
||||
use_query(Query::new(keys, PackageVersionsQuery).stale_time(VERSIONS_STALE))
|
||||
}
|
||||
|
||||
pub fn version_list(query: &UseQuery<PackageVersionsQuery>) -> Vec<VersionSummary> {
|
||||
|
|
|
|||
|
|
@ -179,8 +179,8 @@ pub fn try_cluster_screenshots(
|
|||
}
|
||||
|
||||
pub async fn invalidate_screenshots_queries() {
|
||||
QueriesStorage::<ClusterScreenshotsQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<LocalImageQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<ClusterScreenshotsQuery>::invalidate_all().await;
|
||||
QueriesStorage::<LocalImageQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@ impl QueryCapability for StorageReportQuery {
|
|||
}
|
||||
}
|
||||
|
||||
/// The report walks tens of thousands of files and the default zero stale time
|
||||
/// would rescan the whole tree on every mount The page has a refresh button
|
||||
const STORAGE_STALE_TIME: Duration = Duration::from_secs(120);
|
||||
|
||||
pub fn use_storage_report() -> UseQuery<StorageReportQuery> {
|
||||
|
|
@ -37,7 +35,7 @@ pub fn try_storage_report(query: &UseQuery<StorageReportQuery>) -> Option<Storag
|
|||
}
|
||||
|
||||
pub async fn invalidate_storage_queries() {
|
||||
QueriesStorage::<StorageReportQuery>::try_invalidate_all().await;
|
||||
QueriesStorage::<StorageReportQuery>::invalidate_all().await;
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
|
|
|
|||
|
|
@ -484,8 +484,7 @@ fn search_box(mut search: State<String>) -> impl IntoElement {
|
|||
.padding(Gaps::new_symmetric(2., 2.))
|
||||
.corner_radius(CornerRadius::new_all(6.))
|
||||
.background(Color::TRANSPARENT)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| search.set(String::new()))
|
||||
.child(
|
||||
Icon::new(IconType::XClose)
|
||||
|
|
@ -570,8 +569,7 @@ fn search_results(query: &SearchQuery, mut search: State<String>) -> Vec<Element
|
|||
.padding(Gaps::new_symmetric(12., 16.))
|
||||
.corner_radius(CornerRadius::new_all(12.))
|
||||
.background(colors::page_elevated())
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| {
|
||||
set_pending_setting_focus(id);
|
||||
search.set(String::new());
|
||||
|
|
@ -735,10 +733,6 @@ impl Component for SidebarInfo {
|
|||
}
|
||||
};
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
rect()
|
||||
.vertical()
|
||||
.width(Size::fill())
|
||||
|
|
@ -750,8 +744,7 @@ impl Component for SidebarInfo {
|
|||
.into_iter()
|
||||
.map(|item| label().text(item).into_element()),
|
||||
)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(copy_to_clipboard)
|
||||
}
|
||||
}
|
||||
|
|
@ -797,14 +790,9 @@ impl Component for SidebarItem {
|
|||
.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(move |_| {
|
||||
*hovering.write() = true;
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
*hovering.write() = false;
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| *hovering.write() = true)
|
||||
.on_pointer_leave(move |_| *hovering.write() = false)
|
||||
.map(route, |el, route| {
|
||||
el.on_all_press(move |_| {
|
||||
let _ = RouterContext::get().replace(route.clone());
|
||||
|
|
|
|||
|
|
@ -229,9 +229,7 @@ pub(super) fn nav_button(
|
|||
.background(colors::component_bg())
|
||||
.border(border_all_color(1., colors::component_border()))
|
||||
.maybe(enabled, |el| {
|
||||
el.on_press(on_press)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
el.on_press(on_press).cursor(CursorIcon::Pointer)
|
||||
})
|
||||
.child(Icon::new(icon).size(14.).color(color))
|
||||
.into_element()
|
||||
|
|
|
|||
|
|
@ -301,14 +301,9 @@ impl Component for ServerRow {
|
|||
} else {
|
||||
Color::TRANSPARENT
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
*hovered.write() = true;
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
*hovered.write() = false;
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| *hovered.write() = true)
|
||||
.on_pointer_leave(move |_| *hovered.write() = false)
|
||||
.child(
|
||||
rect()
|
||||
.horizontal()
|
||||
|
|
|
|||
|
|
@ -106,10 +106,6 @@ impl Component for PackageCard {
|
|||
let focus = use_focus(a11y_id);
|
||||
let focused = focus().is_focused();
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
rect()
|
||||
.vertical()
|
||||
.width(Size::flex(1.0))
|
||||
|
|
@ -128,8 +124,7 @@ impl Component for PackageCard {
|
|||
.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| open_package(cluster_id, &package_type, provider, &id))
|
||||
.child(
|
||||
rect()
|
||||
|
|
@ -240,10 +235,6 @@ impl Component for ListRow {
|
|||
let focus = use_focus(a11y_id);
|
||||
let focused = focus().is_focused();
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
rect()
|
||||
.horizontal()
|
||||
.width(Size::fill())
|
||||
|
|
@ -266,8 +257,7 @@ impl Component for ListRow {
|
|||
.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| open_package(cluster_id, &package_type, provider, &id))
|
||||
.child(Thumbnail::new(item.icon_url.clone(), 48.).radius(8.))
|
||||
.child(
|
||||
|
|
|
|||
|
|
@ -97,14 +97,9 @@ impl Component for CategoryRow {
|
|||
.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(move |_| {
|
||||
hovering.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovering.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovering.set(true))
|
||||
.on_pointer_leave(move |_| hovering.set(false))
|
||||
.on_all_press(move |_| on_toggle.call(()))
|
||||
.child(
|
||||
label()
|
||||
|
|
|
|||
|
|
@ -86,10 +86,6 @@ impl Component for GalleryTile {
|
|||
let mut hovered = use_state(|| false);
|
||||
let on_open = self.on_open.clone();
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
let preview = rect()
|
||||
.width(Size::fill())
|
||||
.height(Size::px(TILE_PREVIEW_H))
|
||||
|
|
@ -124,14 +120,9 @@ impl Component for GalleryTile {
|
|||
.alignment(BorderAlignment::Inner),
|
||||
)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(move |_| {
|
||||
hovered.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovered.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovered.set(true))
|
||||
.on_pointer_leave(move |_| hovered.set(false))
|
||||
.on_press(move |_| on_open.call(()))
|
||||
.child(preview)
|
||||
.maybe(self.image.title.is_some(), |el| {
|
||||
|
|
@ -279,8 +270,7 @@ fn chevron_btn(
|
|||
}
|
||||
|
||||
base.background(Color::from_argb(140, 0, 0, 0))
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(on_press)
|
||||
.child(Icon::new(icon).size(26.).color(colors::fg_primary()))
|
||||
.into_element()
|
||||
|
|
|
|||
|
|
@ -155,8 +155,7 @@ fn version_pager(current: usize, total_pages: usize, page: State<usize>) -> impl
|
|||
.background(colors::component_bg())
|
||||
.border(border_all_color(1., colors::component_border()))
|
||||
.maybe(enabled, |el| {
|
||||
el.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
el.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| page.set(target))
|
||||
})
|
||||
.child(Icon::new(icon).size(14.).color(if enabled {
|
||||
|
|
|
|||
|
|
@ -207,8 +207,7 @@ impl Component for ProviderTag {
|
|||
.maybe(focused, |el| {
|
||||
el.border(border_all_color(1., colors::brand()))
|
||||
})
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| confirm.set(Some(url.clone())))
|
||||
})
|
||||
}
|
||||
|
|
@ -302,8 +301,7 @@ impl Component for AuthorRow {
|
|||
el.a11y_id(a11y_id)
|
||||
.a11y_focusable(true)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| confirm.set(Some(url.clone())))
|
||||
})
|
||||
.maybe(interactive && focused, |el| {
|
||||
|
|
@ -440,8 +438,7 @@ impl Component for LinkRow {
|
|||
.maybe(focused, |el| {
|
||||
el.border(border_all_color(1., colors::brand()))
|
||||
})
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |_| confirm.set(Some(url.clone())))
|
||||
.child(
|
||||
Icon::new(IconType::Link03)
|
||||
|
|
|
|||
|
|
@ -424,8 +424,7 @@ impl Component for LogPicker {
|
|||
colors::component_border()
|
||||
},
|
||||
))
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(move |e: Event<PressEventData>| {
|
||||
e.stop_propagation();
|
||||
open.toggle();
|
||||
|
|
@ -553,14 +552,9 @@ impl Component for PickerRow {
|
|||
} else {
|
||||
Color::TRANSPARENT
|
||||
})
|
||||
.on_pointer_enter(move |_| {
|
||||
hovering.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovering.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovering.set(true))
|
||||
.on_pointer_leave(move |_| hovering.set(false))
|
||||
.on_all_press(self.on_press.clone())
|
||||
.child(
|
||||
rect()
|
||||
|
|
|
|||
|
|
@ -472,8 +472,7 @@ impl Component for ChoiceRow {
|
|||
.maybe(focused, |el| {
|
||||
el.border(crate::ui::border_all_color(1., colors::brand()))
|
||||
})
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_all_press(self.on_press.clone())
|
||||
.child(
|
||||
label()
|
||||
|
|
|
|||
|
|
@ -445,14 +445,9 @@ impl Component for ScreenshotTile {
|
|||
.background(CARD_BG)
|
||||
.overflow(Overflow::Clip)
|
||||
.border(border_all_color(1., border_color).alignment(BorderAlignment::Inner))
|
||||
.on_pointer_enter(move |_| {
|
||||
hovered.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovered.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovered.set(true))
|
||||
.on_pointer_leave(move |_| hovered.set(false))
|
||||
.on_press(move |_| on_activate.call(()))
|
||||
.on_secondary_down(move |e: Event<PressEventData>| {
|
||||
if let PressEventData::Mouse(m) = e.data() {
|
||||
|
|
@ -540,14 +535,9 @@ impl Component for ScreenshotRow {
|
|||
colors::component_border()
|
||||
},
|
||||
))
|
||||
.on_pointer_enter(move |_| {
|
||||
hovered.set(true);
|
||||
Cursor::set(CursorIcon::Pointer);
|
||||
})
|
||||
.on_pointer_leave(move |_| {
|
||||
hovered.set(false);
|
||||
Cursor::set(CursorIcon::default());
|
||||
})
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_pointer_enter(move |_| hovered.set(true))
|
||||
.on_pointer_leave(move |_| hovered.set(false))
|
||||
.on_press(move |_| on_activate.call(()))
|
||||
.on_secondary_down(move |e: Event<PressEventData>| {
|
||||
if let PressEventData::Mouse(m) = e.data() {
|
||||
|
|
|
|||
|
|
@ -112,10 +112,6 @@ impl Component for ReleaseCard {
|
|||
|
||||
let changes = self.changes.clone();
|
||||
|
||||
use_drop(|| {
|
||||
Cursor::set(CursorIcon::default());
|
||||
});
|
||||
|
||||
rect()
|
||||
.vertical()
|
||||
.width(Size::fill())
|
||||
|
|
@ -129,8 +125,7 @@ impl Component for ReleaseCard {
|
|||
.width(Size::fill())
|
||||
.cross_align(Alignment::Center)
|
||||
.main_align(Alignment::SpaceBetween)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| {
|
||||
let next = !*open.peek();
|
||||
*open.write() = next;
|
||||
|
|
|
|||
|
|
@ -39,8 +39,7 @@ fn language_row(
|
|||
.padding(Gaps::new_symmetric(12., 16.))
|
||||
.corner_radius(CornerRadius::new_all(12.))
|
||||
.background(colors::page_elevated())
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| *selected.write() = index)
|
||||
.child(
|
||||
rect()
|
||||
|
|
|
|||
|
|
@ -77,8 +77,7 @@ fn anim_chip(name: &'static str, active: bool) -> impl IntoElement {
|
|||
} else {
|
||||
colors::component_bg()
|
||||
})
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.child(
|
||||
label()
|
||||
.text(name)
|
||||
|
|
@ -158,8 +157,7 @@ fn skin_grid(count: usize) -> impl IntoElement {
|
|||
colors::component_border()
|
||||
},
|
||||
))
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.child(
|
||||
Icon::new(IconType::Users01)
|
||||
.size(24.)
|
||||
|
|
|
|||
|
|
@ -105,8 +105,7 @@ impl Component for OnboardingModCard {
|
|||
.border(border_all_color(1.5, border))
|
||||
.content(Content::Flex)
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_toggle.call(()))
|
||||
.child(header)
|
||||
.child(
|
||||
|
|
|
|||
|
|
@ -101,8 +101,7 @@ fn language_row(
|
|||
el.border(border_all_color(1., colors::brand()))
|
||||
})
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| {
|
||||
selected.set(index);
|
||||
chosen.set(name.to_string());
|
||||
|
|
|
|||
|
|
@ -304,8 +304,7 @@ fn version_card(
|
|||
if importable {
|
||||
card = card
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_select(()));
|
||||
}
|
||||
|
||||
|
|
@ -368,8 +367,7 @@ fn import_choice_card(
|
|||
.background(bg)
|
||||
.border(border_all_color(1., border_color))
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_press(()))
|
||||
.child(
|
||||
rect()
|
||||
|
|
|
|||
|
|
@ -260,8 +260,7 @@ pub(crate) fn choice_row_sized(
|
|||
.corner_radius(CornerRadius::new_all(8.))
|
||||
.border(border_all_color(1., border_color))
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_press(()))
|
||||
.child(
|
||||
rect()
|
||||
|
|
@ -316,8 +315,7 @@ pub(crate) fn version_chip(
|
|||
.background(bg)
|
||||
.border(border_all_color(1.5, border))
|
||||
.a11y_role(AccessibilityRole::Button)
|
||||
.on_pointer_enter(|_| Cursor::set(CursorIcon::Pointer))
|
||||
.on_pointer_leave(|_| Cursor::set(CursorIcon::default()))
|
||||
.cursor(CursorIcon::Pointer)
|
||||
.on_press(move |_| on_press(()))
|
||||
.child(
|
||||
label()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue