chore: migrated to freya 0.5.0-rc.4 (#739)

This commit is contained in:
Maciek 2026-08-26 13:20:44 +02:00 • committed by GitHub
parent 419c07b822
commit 815b78e227
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
43 changed files with 191 additions and 379 deletions

152
Cargo.lock generated
View file

@ -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",

View file

@ -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]

View file

@ -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())

View file

@ -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

View file

@ -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())

View file

@ -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()

View file

@ -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(());

View file

@ -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()

View file

@ -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)

View file

@ -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);

View file

@ -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()

View file

@ -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();
}
})
}

View file

@ -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()

View file

@ -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| {

View file

@ -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);
})

View file

@ -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));

View file

@ -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()

View file

@ -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;
}
}

View file

@ -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),
)

View file

@ -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)]

View file

@ -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)]

View file

@ -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)]

View file

@ -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> {

View file

@ -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)]

View file

@ -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)]

View file

@ -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());

View file

@ -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()

View file

@ -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()

View file

@ -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(

View file

@ -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()

View file

@ -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()

View file

@ -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 {

View file

@ -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)

View file

@ -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()

View file

@ -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()

View file

@ -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() {

View file

@ -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;

View file

@ -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()

View file

@ -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.)

View file

@ -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(

View file

@ -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());

View file

@ -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()

View file

@ -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()