diff --git a/Cargo.lock b/Cargo.lock index f66b2473..6ac8aea5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -555,26 +555,25 @@ checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "cairo-rs" -version = "0.19.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562" +checksum = "d7fa699e1d7ae691001a811dda5ef0e3e42e1d4119b26426352989df9e94e3e6" dependencies = [ "bitflags 2.6.0", "cairo-sys-rs", - "glib 0.19.9", + "glib", "libc", - "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64" +checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f" dependencies = [ - "glib-sys 0.19.8", + "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -618,16 +617,6 @@ dependencies = [ "nom", ] -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-expr" version = "0.17.1" @@ -1294,59 +1283,59 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.19.8" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624eaba126021103c7339b2e179ae4ee8cdab842daab419040710f38ed9f8699" +checksum = "c4c29071a9e92337d8270a85cb0510cda4ac478be26d09ad027cc1d081911b19" dependencies = [ "gdk-pixbuf-sys", "gio", - "glib 0.19.9", + "glib", "libc", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.19.8" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4efa05a4f83c8cc50eb4d883787b919b85e5f1d8dd10b5a1df53bf5689782379" +checksum = "687343b059b91df5f3fbd87b4307038fa9e647fcc0461d0d3f93e94fee20bf3d" dependencies = [ - "gio-sys 0.19.8", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdk4" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07" +checksum = "75933c4a86e8a2428814d367e22c733304fdfabc87f415750fd2f55409b6ee48" dependencies = [ "cairo-rs", "gdk-pixbuf", "gdk4-sys", "gio", - "glib 0.19.9", + "glib", "libc", "pango", ] [[package]] name = "gdk4-sys" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd" +checksum = "20af0656d543aed3e57ac4120ef76d091c3c42ab1e0507a8febde7cd005640e2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", - "gio-sys 0.19.8", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", "pango-sys", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -1409,33 +1398,19 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gio" -version = "0.19.8" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe" +checksum = "8826d2a9ad56ce3de1f04bea0bea0daff6f5f1c913cc834996cfea1f9401361c" dependencies = [ "futures-channel", "futures-core", "futures-io", "futures-util", - "gio-sys 0.19.8", - "glib 0.19.9", + "gio-sys", + "glib", "libc", "pin-project-lite", "smallvec", - "thiserror", -] - -[[package]] -name = "gio-sys" -version = "0.19.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef" -dependencies = [ - "glib-sys 0.19.8", - "gobject-sys 0.19.8", - "libc", - "system-deps 6.2.2", - "windows-sys 0.52.0", ] [[package]] @@ -1444,35 +1419,13 @@ version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b965df6f3534c84816b5c1a7d9efcb5671ae790822de5abe8e299797039529bc" dependencies = [ - "glib-sys 0.20.6", - "gobject-sys 0.20.4", + "glib-sys", + "gobject-sys", "libc", - "system-deps 7.0.3", + "system-deps", "windows-sys 0.52.0", ] -[[package]] -name = "glib" -version = "0.19.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39650279f135469465018daae0ba53357942a5212137515777d5fdca74984a44" -dependencies = [ - "bitflags 2.6.0", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys 0.19.8", - "glib-macros 0.19.9", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", - "libc", - "memchr", - "smallvec", - "thiserror", -] - [[package]] name = "glib" version = "0.20.6" @@ -1485,28 +1438,15 @@ dependencies = [ "futures-executor", "futures-task", "futures-util", - "gio-sys 0.20.6", - "glib-macros 0.20.5", - "glib-sys 0.20.6", - "gobject-sys 0.20.4", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", "libc", "memchr", "smallvec", ] -[[package]] -name = "glib-macros" -version = "0.19.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4429b0277a14ae9751350ad9b658b1be0abb5b54faa5bcdf6e74a3372582fad7" -dependencies = [ - "heck", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "glib-macros" version = "0.20.5" @@ -1520,16 +1460,6 @@ dependencies = [ "syn 2.0.89", ] -[[package]] -name = "glib-sys" -version = "0.19.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5" -dependencies = [ - "libc", - "system-deps 6.2.2", -] - [[package]] name = "glib-sys" version = "0.20.6" @@ -1537,7 +1467,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d0b1827e8621fc42c0dfb228e5d57ff6a71f9699e666ece8113f979ad87c2de" dependencies = [ "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] @@ -1558,26 +1488,15 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gobject-sys" -version = "0.19.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e" -dependencies = [ - "glib-sys 0.19.8", - "libc", - "system-deps 6.2.2", -] - [[package]] name = "gobject-sys" version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c674d2ff8478cf0ec29d2be730ed779fef54415a2fb4b565c52def62696462" dependencies = [ - "glib-sys 0.20.6", + "glib-sys", "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] @@ -1600,36 +1519,36 @@ dependencies = [ [[package]] name = "graphene-rs" -version = "0.19.8" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb86031d24d9ec0a2a15978fc7a65d545a2549642cf1eb7c3dda358da42bcf" +checksum = "1f53144c7fe78292705ff23935f1477d511366fb2f73c43d63b37be89076d2fe" dependencies = [ - "glib 0.19.9", + "glib", "graphene-sys", "libc", ] [[package]] name = "graphene-sys" -version = "0.19.8" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f530e0944bccba4b55065e9c69f4975ad691609191ebac16e13ab8e1f27af05" +checksum = "e741797dc5081e59877a4d72c442c72d61efdd99161a0b1c1b29b6b988934b99" dependencies = [ - "glib-sys 0.19.8", + "glib-sys", "libc", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gsk4" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be" +checksum = "b36933c1e79df378aa6e606576e680358a9582ed8c16f33e94899636e6fa6df6" dependencies = [ "cairo-rs", "gdk4", - "glib 0.19.9", + "glib", "graphene-rs", "gsk4-sys", "libc", @@ -1638,18 +1557,18 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc" +checksum = "0877a9d485bd9ba5262b0c9bce39e63750e525e3aebeb359d271ca1f0e111f1d" dependencies = [ "cairo-sys-rs", "gdk4-sys", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "glib-sys", + "gobject-sys", "graphene-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -1662,7 +1581,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "glib 0.20.6", + "glib", "gstreamer-sys", "itertools 0.13.0", "libc", @@ -1685,7 +1604,7 @@ checksum = "36bb7eb2817ba1ac56e8dc5ee6a1cb110f67f025f38527e9a327c5d4e2d5ef44" dependencies = [ "futures-core", "futures-sink", - "glib 0.20.6", + "glib", "gstreamer", "gstreamer-app-sys", "gstreamer-base", @@ -1698,11 +1617,11 @@ version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d5cac633c1ab7030c777c8c58c682a0c763bbc4127bccc370dabe39c01a12d" dependencies = [ - "glib-sys 0.20.6", + "glib-sys", "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] @@ -1712,7 +1631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36d39b07213f83055fc705a384fa32ad581776b8e5b04c86f3a419ec5dfc0f81" dependencies = [ "cfg-if", - "glib 0.20.6", + "glib", "gstreamer", "gstreamer-audio-sys", "gstreamer-base", @@ -1727,12 +1646,12 @@ version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "980a205553927ec2167ad79b80819df79c3683632abefbe255baffe1b4112044" dependencies = [ - "glib-sys 0.20.6", - "gobject-sys 0.20.4", + "glib-sys", + "gobject-sys", "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] @@ -1743,7 +1662,7 @@ checksum = "a11df90e3abf1d9747111c41902338fc1bd13b1c23b27fb828d43e57bd190134" dependencies = [ "atomic_refcell", "cfg-if", - "glib 0.20.6", + "glib", "gstreamer", "gstreamer-base-sys", "libc", @@ -1755,11 +1674,11 @@ version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d691b2bb51a9e5727fb33c3b53fb64ee5b80c40cbbd250941a6d44b142f7a6a0" dependencies = [ - "glib-sys 0.20.6", - "gobject-sys 0.20.4", + "glib-sys", + "gobject-sys", "gstreamer-sys", "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] @@ -1768,17 +1687,17 @@ version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db89964774a97d5b092e2d124debc6bbcaf34b5c7cdef1759f4a9e1e3f8326ef" dependencies = [ - "glib-sys 0.20.6", - "gobject-sys 0.20.4", + "glib-sys", + "gobject-sys", "libc", - "system-deps 7.0.3", + "system-deps", ] [[package]] name = "gtk4" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab" +checksum = "9376d14d7e33486c54823a42bef296e882b9f25cb4c52b52f4d1d57bbadb5b6d" dependencies = [ "cairo-rs", "field-offset", @@ -1786,7 +1705,7 @@ dependencies = [ "gdk-pixbuf", "gdk4", "gio", - "glib 0.19.9", + "glib", "graphene-rs", "gsk4", "gtk4-macros", @@ -1797,9 +1716,9 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408" +checksum = "a7c518d5dd41c57385c7cd30af52e261820c897fc1144e558bb88c303d048ae2" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -1809,21 +1728,21 @@ dependencies = [ [[package]] name = "gtk4-sys" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5" +checksum = "e653b0a9001ba9be1ffddb9373bfe9a111f688222f5aeee2841481300d91b55a" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk4-sys", - "gio-sys 0.19.8", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "gio-sys", + "glib-sys", + "gobject-sys", "graphene-sys", "gsk4-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -2546,14 +2465,13 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libadwaita" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9" +checksum = "8611ee9fb85e7606c362b513afcaf5b59853f79e4d98caaaf581d99465014247" dependencies = [ - "gdk-pixbuf", "gdk4", "gio", - "glib 0.19.9", + "glib", "gtk4", "libadwaita-sys", "libc", @@ -2562,18 +2480,18 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8" +checksum = "b099a223560118d4d4fa04b6d23f3ea5b7171fe1d83dfb7e6b45b54cdfc83af9" dependencies = [ "gdk4-sys", - "gio-sys 0.19.8", - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "gio-sys", + "glib-sys", + "gobject-sys", "gtk4-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -3406,26 +3324,26 @@ dependencies = [ [[package]] name = "pango" -version = "0.19.8" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0d328648058085cfd6897c9ae4272884098a926f3a833cd50c8c73e6eccecd" +checksum = "71e34e7ca2c52e3933d7e5251409a82b83725fa9d6d48fbdaacec056b3a0554a" dependencies = [ "gio", - "glib 0.19.9", + "glib", "libc", "pango-sys", ] [[package]] name = "pango-sys" -version = "0.19.8" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff03da4fa086c0b244d4a4587d3e20622a3ecdb21daea9edf66597224c634ba0" +checksum = "84fd65917bf12f06544ae2bbc200abf9fc0a513a5a88a0fa81013893aef2b838" dependencies = [ - "glib-sys 0.19.8", - "gobject-sys 0.19.8", + "glib-sys", + "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -4404,7 +4322,7 @@ dependencies = [ "gdk4", "gettext-rs", "gio", - "glib 0.19.9", + "glib", "gtk4", "isahc", "lazy_static", @@ -4608,26 +4526,13 @@ dependencies = [ "libc", ] -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr 0.15.8", - "heck", - "pkg-config", - "toml", - "version-compare", -] - [[package]] name = "system-deps" version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66d23aaf9f331227789a99e8de4c91bf46703add012bdfd45fdecdfb2975a005" dependencies = [ - "cfg-expr 0.17.1", + "cfg-expr", "heck", "pkg-config", "toml", diff --git a/Cargo.toml b/Cargo.toml index d687b6b3..21cf9177 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,25 +5,25 @@ edition = "2018" license = "MIT" [dependencies.gtk] -version = "^0.8" +version = "^0.9" package = "gtk4" -features = ["gnome_46", "blueprint"] +features = ["gnome_47", "blueprint"] [dependencies.libadwaita] -version = "^0.6" -features = ["v1_5"] +version = "^0.7" +features = ["v1_6"] [dependencies.gdk] -version = "^0.8" +version = "^0.9" package = "gdk4" [dependencies.gio] -version = "^0.19" +version = "^0.20" features = [] [dependencies.glib] -version = "^0.19" -features = ["v2_60"] +version = "^0.20" +features = [] [dependencies.librespot] version = "0.6.0" @@ -61,7 +61,7 @@ version = "3.0.1" features = ["rt-async-io-crypto-rust"] [dependencies] -gdk-pixbuf = "^0.19" +gdk-pixbuf = "^0.20" ref_filter_map = "1.0.1" regex = "1.8.3" async-std = "1.12.0" diff --git a/cargo-sources.json b/cargo-sources.json index 0f99f362..9d5f8f31 100644 --- a/cargo-sources.json +++ b/cargo-sources.json @@ -691,27 +691,27 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cairo-rs/cairo-rs-0.17.10.crate", - "sha256": "ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a", - "dest": "cargo/vendor/cairo-rs-0.17.10" + "url": "https://static.crates.io/crates/cairo-rs/cairo-rs-0.20.5.crate", + "sha256": "d7fa699e1d7ae691001a811dda5ef0e3e42e1d4119b26426352989df9e94e3e6", + "dest": "cargo/vendor/cairo-rs-0.20.5" }, { "type": "inline", - "contents": "{\"package\": \"ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a\", \"files\": {}}", - "dest": "cargo/vendor/cairo-rs-0.17.10", + "contents": "{\"package\": \"d7fa699e1d7ae691001a811dda5ef0e3e42e1d4119b26426352989df9e94e3e6\", \"files\": {}}", + "dest": "cargo/vendor/cairo-rs-0.20.5", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cairo-sys-rs/cairo-sys-rs-0.17.10.crate", - "sha256": "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1", - "dest": "cargo/vendor/cairo-sys-rs-0.17.10" + "url": "https://static.crates.io/crates/cairo-sys-rs/cairo-sys-rs-0.20.0.crate", + "sha256": "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f", + "dest": "cargo/vendor/cairo-sys-rs-0.20.0" }, { "type": "inline", - "contents": "{\"package\": \"691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1\", \"files\": {}}", - "dest": "cargo/vendor/cairo-sys-rs-0.17.10", + "contents": "{\"package\": \"428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f\", \"files\": {}}", + "dest": "cargo/vendor/cairo-sys-rs-0.20.0", "dest-filename": ".cargo-checksum.json" }, { @@ -779,19 +779,6 @@ "dest": "cargo/vendor/cexpr-0.6.0", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cfg-expr/cfg-expr-0.15.8.crate", - "sha256": "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02", - "dest": "cargo/vendor/cfg-expr-0.15.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02\", \"files\": {}}", - "dest": "cargo/vendor/cfg-expr-0.15.8", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -1679,53 +1666,53 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk-pixbuf/gdk-pixbuf-0.17.10.crate", - "sha256": "695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717", - "dest": "cargo/vendor/gdk-pixbuf-0.17.10" + "url": "https://static.crates.io/crates/gdk-pixbuf/gdk-pixbuf-0.20.4.crate", + "sha256": "c4c29071a9e92337d8270a85cb0510cda4ac478be26d09ad027cc1d081911b19", + "dest": "cargo/vendor/gdk-pixbuf-0.20.4" }, { "type": "inline", - "contents": "{\"package\": \"695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717\", \"files\": {}}", - "dest": "cargo/vendor/gdk-pixbuf-0.17.10", + "contents": "{\"package\": \"c4c29071a9e92337d8270a85cb0510cda4ac478be26d09ad027cc1d081911b19\", \"files\": {}}", + "dest": "cargo/vendor/gdk-pixbuf-0.20.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk-pixbuf-sys/gdk-pixbuf-sys-0.17.10.crate", - "sha256": "9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb", - "dest": "cargo/vendor/gdk-pixbuf-sys-0.17.10" + "url": "https://static.crates.io/crates/gdk-pixbuf-sys/gdk-pixbuf-sys-0.20.4.crate", + "sha256": "687343b059b91df5f3fbd87b4307038fa9e647fcc0461d0d3f93e94fee20bf3d", + "dest": "cargo/vendor/gdk-pixbuf-sys-0.20.4" }, { "type": "inline", - "contents": "{\"package\": \"9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb\", \"files\": {}}", - "dest": "cargo/vendor/gdk-pixbuf-sys-0.17.10", + "contents": "{\"package\": \"687343b059b91df5f3fbd87b4307038fa9e647fcc0461d0d3f93e94fee20bf3d\", \"files\": {}}", + "dest": "cargo/vendor/gdk-pixbuf-sys-0.20.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4/gdk4-0.6.3.crate", - "sha256": "c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff", - "dest": "cargo/vendor/gdk4-0.6.3" + "url": "https://static.crates.io/crates/gdk4/gdk4-0.9.4.crate", + "sha256": "75933c4a86e8a2428814d367e22c733304fdfabc87f415750fd2f55409b6ee48", + "dest": "cargo/vendor/gdk4-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-0.6.3", + "contents": "{\"package\": \"75933c4a86e8a2428814d367e22c733304fdfabc87f415750fd2f55409b6ee48\", \"files\": {}}", + "dest": "cargo/vendor/gdk4-0.9.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-sys/gdk4-sys-0.6.3.crate", - "sha256": "1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64", - "dest": "cargo/vendor/gdk4-sys-0.6.3" + "url": "https://static.crates.io/crates/gdk4-sys/gdk4-sys-0.9.4.crate", + "sha256": "20af0656d543aed3e57ac4120ef76d091c3c42ab1e0507a8febde7cd005640e2", + "dest": "cargo/vendor/gdk4-sys-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-sys-0.6.3", + "contents": "{\"package\": \"20af0656d543aed3e57ac4120ef76d091c3c42ab1e0507a8febde7cd005640e2\", \"files\": {}}", + "dest": "cargo/vendor/gdk4-sys-0.9.4", "dest-filename": ".cargo-checksum.json" }, { @@ -1809,27 +1796,14 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gio/gio-0.17.10.crate", - "sha256": "a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a", - "dest": "cargo/vendor/gio-0.17.10" - }, - { - "type": "inline", - "contents": "{\"package\": \"a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a\", \"files\": {}}", - "dest": "cargo/vendor/gio-0.17.10", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gio-sys/gio-sys-0.17.10.crate", - "sha256": "0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3", - "dest": "cargo/vendor/gio-sys-0.17.10" + "url": "https://static.crates.io/crates/gio/gio-0.20.6.crate", + "sha256": "8826d2a9ad56ce3de1f04bea0bea0daff6f5f1c913cc834996cfea1f9401361c", + "dest": "cargo/vendor/gio-0.20.6" }, { "type": "inline", - "contents": "{\"package\": \"0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3\", \"files\": {}}", - "dest": "cargo/vendor/gio-sys-0.17.10", + "contents": "{\"package\": \"8826d2a9ad56ce3de1f04bea0bea0daff6f5f1c913cc834996cfea1f9401361c\", \"files\": {}}", + "dest": "cargo/vendor/gio-0.20.6", "dest-filename": ".cargo-checksum.json" }, { @@ -1845,19 +1819,6 @@ "dest": "cargo/vendor/gio-sys-0.20.6", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib/glib-0.17.10.crate", - "sha256": "d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b", - "dest": "cargo/vendor/glib-0.17.10" - }, - { - "type": "inline", - "contents": "{\"package\": \"d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b\", \"files\": {}}", - "dest": "cargo/vendor/glib-0.17.10", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -1871,19 +1832,6 @@ "dest": "cargo/vendor/glib-0.20.6", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib-macros/glib-macros-0.17.10.crate", - "sha256": "eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26", - "dest": "cargo/vendor/glib-macros-0.17.10" - }, - { - "type": "inline", - "contents": "{\"package\": \"eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26\", \"files\": {}}", - "dest": "cargo/vendor/glib-macros-0.17.10", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -1897,19 +1845,6 @@ "dest": "cargo/vendor/glib-macros-0.20.5", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib-sys/glib-sys-0.17.10.crate", - "sha256": "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0", - "dest": "cargo/vendor/glib-sys-0.17.10" - }, - { - "type": "inline", - "contents": "{\"package\": \"d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0\", \"files\": {}}", - "dest": "cargo/vendor/glib-sys-0.17.10", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -1949,19 +1884,6 @@ "dest": "cargo/vendor/gloo-timers-0.3.0", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gobject-sys/gobject-sys-0.17.10.crate", - "sha256": "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062", - "dest": "cargo/vendor/gobject-sys-0.17.10" - }, - { - "type": "inline", - "contents": "{\"package\": \"cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062\", \"files\": {}}", - "dest": "cargo/vendor/gobject-sys-0.17.10", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -1991,53 +1913,53 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/graphene-rs/graphene-rs-0.17.10.crate", - "sha256": "def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9", - "dest": "cargo/vendor/graphene-rs-0.17.10" + "url": "https://static.crates.io/crates/graphene-rs/graphene-rs-0.20.4.crate", + "sha256": "1f53144c7fe78292705ff23935f1477d511366fb2f73c43d63b37be89076d2fe", + "dest": "cargo/vendor/graphene-rs-0.20.4" }, { "type": "inline", - "contents": "{\"package\": \"def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9\", \"files\": {}}", - "dest": "cargo/vendor/graphene-rs-0.17.10", + "contents": "{\"package\": \"1f53144c7fe78292705ff23935f1477d511366fb2f73c43d63b37be89076d2fe\", \"files\": {}}", + "dest": "cargo/vendor/graphene-rs-0.20.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/graphene-sys/graphene-sys-0.17.10.crate", - "sha256": "1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d", - "dest": "cargo/vendor/graphene-sys-0.17.10" + "url": "https://static.crates.io/crates/graphene-sys/graphene-sys-0.20.4.crate", + "sha256": "e741797dc5081e59877a4d72c442c72d61efdd99161a0b1c1b29b6b988934b99", + "dest": "cargo/vendor/graphene-sys-0.20.4" }, { "type": "inline", - "contents": "{\"package\": \"1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d\", \"files\": {}}", - "dest": "cargo/vendor/graphene-sys-0.17.10", + "contents": "{\"package\": \"e741797dc5081e59877a4d72c442c72d61efdd99161a0b1c1b29b6b988934b99\", \"files\": {}}", + "dest": "cargo/vendor/graphene-sys-0.20.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gsk4/gsk4-0.6.3.crate", - "sha256": "6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c", - "dest": "cargo/vendor/gsk4-0.6.3" + "url": "https://static.crates.io/crates/gsk4/gsk4-0.9.4.crate", + "sha256": "b36933c1e79df378aa6e606576e680358a9582ed8c16f33e94899636e6fa6df6", + "dest": "cargo/vendor/gsk4-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c\", \"files\": {}}", - "dest": "cargo/vendor/gsk4-0.6.3", + "contents": "{\"package\": \"b36933c1e79df378aa6e606576e680358a9582ed8c16f33e94899636e6fa6df6\", \"files\": {}}", + "dest": "cargo/vendor/gsk4-0.9.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gsk4-sys/gsk4-sys-0.6.3.crate", - "sha256": "c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0", - "dest": "cargo/vendor/gsk4-sys-0.6.3" + "url": "https://static.crates.io/crates/gsk4-sys/gsk4-sys-0.9.4.crate", + "sha256": "0877a9d485bd9ba5262b0c9bce39e63750e525e3aebeb359d271ca1f0e111f1d", + "dest": "cargo/vendor/gsk4-sys-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0\", \"files\": {}}", - "dest": "cargo/vendor/gsk4-sys-0.6.3", + "contents": "{\"package\": \"0877a9d485bd9ba5262b0c9bce39e63750e525e3aebeb359d271ca1f0e111f1d\", \"files\": {}}", + "dest": "cargo/vendor/gsk4-sys-0.9.4", "dest-filename": ".cargo-checksum.json" }, { @@ -2147,40 +2069,40 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4/gtk4-0.6.6.crate", - "sha256": "b28a32a04cd75cef14a0983f8b0c669e0fe152a0a7725accdeb594e2c764c88b", - "dest": "cargo/vendor/gtk4-0.6.6" + "url": "https://static.crates.io/crates/gtk4/gtk4-0.9.4.crate", + "sha256": "9376d14d7e33486c54823a42bef296e882b9f25cb4c52b52f4d1d57bbadb5b6d", + "dest": "cargo/vendor/gtk4-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"b28a32a04cd75cef14a0983f8b0c669e0fe152a0a7725accdeb594e2c764c88b\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-0.6.6", + "contents": "{\"package\": \"9376d14d7e33486c54823a42bef296e882b9f25cb4c52b52f4d1d57bbadb5b6d\", \"files\": {}}", + "dest": "cargo/vendor/gtk4-0.9.4", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4-macros/gtk4-macros-0.6.6.crate", - "sha256": "6a4d6b61570f76d3ee542d984da443b1cd69b6105264c61afec3abed08c2500f", - "dest": "cargo/vendor/gtk4-macros-0.6.6" + "url": "https://static.crates.io/crates/gtk4-macros/gtk4-macros-0.9.3.crate", + "sha256": "a7c518d5dd41c57385c7cd30af52e261820c897fc1144e558bb88c303d048ae2", + "dest": "cargo/vendor/gtk4-macros-0.9.3" }, { "type": "inline", - "contents": "{\"package\": \"6a4d6b61570f76d3ee542d984da443b1cd69b6105264c61afec3abed08c2500f\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-macros-0.6.6", + "contents": "{\"package\": \"a7c518d5dd41c57385c7cd30af52e261820c897fc1144e558bb88c303d048ae2\", \"files\": {}}", + "dest": "cargo/vendor/gtk4-macros-0.9.3", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4-sys/gtk4-sys-0.6.3.crate", - "sha256": "5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f", - "dest": "cargo/vendor/gtk4-sys-0.6.3" + "url": "https://static.crates.io/crates/gtk4-sys/gtk4-sys-0.9.4.crate", + "sha256": "e653b0a9001ba9be1ffddb9373bfe9a111f688222f5aeee2841481300d91b55a", + "dest": "cargo/vendor/gtk4-sys-0.9.4" }, { "type": "inline", - "contents": "{\"package\": \"5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-sys-0.6.3", + "contents": "{\"package\": \"e653b0a9001ba9be1ffddb9373bfe9a111f688222f5aeee2841481300d91b55a\", \"files\": {}}", + "dest": "cargo/vendor/gtk4-sys-0.9.4", "dest-filename": ".cargo-checksum.json" }, { @@ -2248,19 +2170,6 @@ "dest": "cargo/vendor/headers-core-0.3.0", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/heck/heck-0.4.1.crate", - "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", - "dest": "cargo/vendor/heck-0.4.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8\", \"files\": {}}", - "dest": "cargo/vendor/heck-0.4.1", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -3031,40 +2940,40 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/libadwaita/libadwaita-0.4.4.crate", - "sha256": "1ab9c0843f9f23ff25634df2743690c3a1faffe0a190e60c490878517eb81abf", - "dest": "cargo/vendor/libadwaita-0.4.4" + "url": "https://static.crates.io/crates/libadwaita/libadwaita-0.7.1.crate", + "sha256": "8611ee9fb85e7606c362b513afcaf5b59853f79e4d98caaaf581d99465014247", + "dest": "cargo/vendor/libadwaita-0.7.1" }, { "type": "inline", - "contents": "{\"package\": \"1ab9c0843f9f23ff25634df2743690c3a1faffe0a190e60c490878517eb81abf\", \"files\": {}}", - "dest": "cargo/vendor/libadwaita-0.4.4", + "contents": "{\"package\": \"8611ee9fb85e7606c362b513afcaf5b59853f79e4d98caaaf581d99465014247\", \"files\": {}}", + "dest": "cargo/vendor/libadwaita-0.7.1", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/libadwaita-sys/libadwaita-sys-0.4.4.crate", - "sha256": "4231cb2499a9f0c4cdfa4885414b33e39901ddcac61150bc0bb4ff8a57ede404", - "dest": "cargo/vendor/libadwaita-sys-0.4.4" + "url": "https://static.crates.io/crates/libadwaita-sys/libadwaita-sys-0.7.1.crate", + "sha256": "b099a223560118d4d4fa04b6d23f3ea5b7171fe1d83dfb7e6b45b54cdfc83af9", + "dest": "cargo/vendor/libadwaita-sys-0.7.1" }, { "type": "inline", - "contents": "{\"package\": \"4231cb2499a9f0c4cdfa4885414b33e39901ddcac61150bc0bb4ff8a57ede404\", \"files\": {}}", - "dest": "cargo/vendor/libadwaita-sys-0.4.4", + "contents": "{\"package\": \"b099a223560118d4d4fa04b6d23f3ea5b7171fe1d83dfb7e6b45b54cdfc83af9\", \"files\": {}}", + "dest": "cargo/vendor/libadwaita-sys-0.7.1", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/libc/libc-0.2.165.crate", - "sha256": "fcb4d3d38eab6c5239a362fa8bae48c03baf980a6e7079f063942d563ef3533e", - "dest": "cargo/vendor/libc-0.2.165" + "url": "https://static.crates.io/crates/libc/libc-0.2.166.crate", + "sha256": "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36", + "dest": "cargo/vendor/libc-0.2.166" }, { "type": "inline", - "contents": "{\"package\": \"fcb4d3d38eab6c5239a362fa8bae48c03baf980a6e7079f063942d563ef3533e\", \"files\": {}}", - "dest": "cargo/vendor/libc-0.2.165", + "contents": "{\"package\": \"c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36\", \"files\": {}}", + "dest": "cargo/vendor/libc-0.2.166", "dest-filename": ".cargo-checksum.json" }, { @@ -3122,14 +3031,14 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/libpulse-binding/libpulse-binding-2.28.1.crate", - "sha256": "ed3557a2dfc380c8f061189a01c6ae7348354e0c9886038dc6c171219c08eaff", - "dest": "cargo/vendor/libpulse-binding-2.28.1" + "url": "https://static.crates.io/crates/libpulse-binding/libpulse-binding-2.28.2.crate", + "sha256": "b6b1040a6c4c4d1e9e852000f6202df1a02a4f074320de336ab21e4fd317b538", + "dest": "cargo/vendor/libpulse-binding-2.28.2" }, { "type": "inline", - "contents": "{\"package\": \"ed3557a2dfc380c8f061189a01c6ae7348354e0c9886038dc6c171219c08eaff\", \"files\": {}}", - "dest": "cargo/vendor/libpulse-binding-2.28.1", + "contents": "{\"package\": \"b6b1040a6c4c4d1e9e852000f6202df1a02a4f074320de336ab21e4fd317b538\", \"files\": {}}", + "dest": "cargo/vendor/libpulse-binding-2.28.2", "dest-filename": ".cargo-checksum.json" }, { @@ -3980,27 +3889,27 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pango/pango-0.17.10.crate", - "sha256": "35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48", - "dest": "cargo/vendor/pango-0.17.10" + "url": "https://static.crates.io/crates/pango/pango-0.20.6.crate", + "sha256": "71e34e7ca2c52e3933d7e5251409a82b83725fa9d6d48fbdaacec056b3a0554a", + "dest": "cargo/vendor/pango-0.20.6" }, { "type": "inline", - "contents": "{\"package\": \"35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48\", \"files\": {}}", - "dest": "cargo/vendor/pango-0.17.10", + "contents": "{\"package\": \"71e34e7ca2c52e3933d7e5251409a82b83725fa9d6d48fbdaacec056b3a0554a\", \"files\": {}}", + "dest": "cargo/vendor/pango-0.20.6", "dest-filename": ".cargo-checksum.json" }, { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pango-sys/pango-sys-0.17.10.crate", - "sha256": "3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195", - "dest": "cargo/vendor/pango-sys-0.17.10" + "url": "https://static.crates.io/crates/pango-sys/pango-sys-0.20.4.crate", + "sha256": "84fd65917bf12f06544ae2bbc200abf9fc0a513a5a88a0fa81013893aef2b838", + "dest": "cargo/vendor/pango-sys-0.20.4" }, { "type": "inline", - "contents": "{\"package\": \"3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195\", \"files\": {}}", - "dest": "cargo/vendor/pango-sys-0.17.10", + "contents": "{\"package\": \"84fd65917bf12f06544ae2bbc200abf9fc0a513a5a88a0fa81013893aef2b838\", \"files\": {}}", + "dest": "cargo/vendor/pango-sys-0.20.4", "dest-filename": ".cargo-checksum.json" }, { @@ -4341,32 +4250,6 @@ "dest": "cargo/vendor/proc-macro-crate-3.2.0", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/proc-macro-error/proc-macro-error-1.0.4.crate", - "sha256": "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c", - "dest": "cargo/vendor/proc-macro-error-1.0.4" - }, - { - "type": "inline", - "contents": "{\"package\": \"da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c\", \"files\": {}}", - "dest": "cargo/vendor/proc-macro-error-1.0.4", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/proc-macro-error-attr/proc-macro-error-attr-1.0.4.crate", - "sha256": "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869", - "dest": "cargo/vendor/proc-macro-error-attr-1.0.4" - }, - { - "type": "inline", - "contents": "{\"package\": \"a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869\", \"files\": {}}", - "dest": "cargo/vendor/proc-macro-error-attr-1.0.4", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -5485,19 +5368,6 @@ "dest": "cargo/vendor/system-configuration-sys-0.5.0", "dest-filename": ".cargo-checksum.json" }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/system-deps/system-deps-6.2.2.crate", - "sha256": "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349", - "dest": "cargo/vendor/system-deps-6.2.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349\", \"files\": {}}", - "dest": "cargo/vendor/system-deps-6.2.2", - "dest-filename": ".cargo-checksum.json" - }, { "type": "archive", "archive-type": "tar-gzip", @@ -5839,14 +5709,14 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.27.crate", - "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7", - "dest": "cargo/vendor/tracing-attributes-0.1.27" + "url": "https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.28.crate", + "sha256": "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d", + "dest": "cargo/vendor/tracing-attributes-0.1.28" }, { "type": "inline", - "contents": "{\"package\": \"34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7\", \"files\": {}}", - "dest": "cargo/vendor/tracing-attributes-0.1.27", + "contents": "{\"package\": \"395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d\", \"files\": {}}", + "dest": "cargo/vendor/tracing-attributes-0.1.28", "dest-filename": ".cargo-checksum.json" }, { diff --git a/src/app/components/album/album.rs b/src/app/components/album/album.rs index 83f6f85c..e5fc7453 100644 --- a/src/app/components/album/album.rs +++ b/src/app/components/album/album.rs @@ -79,7 +79,7 @@ impl AlbumWidget { fn set_image(&self, pixbuf: &gdk_pixbuf::Pixbuf) { let texture = gdk::Texture::for_pixbuf(pixbuf); - self.imp().cover_image.set_from_paintable(Some(&texture)); + self.imp().cover_image.set_paintable(Some(&texture)); } fn bind(&self, album_model: &AlbumModel, worker: Worker) { @@ -122,11 +122,9 @@ impl AlbumWidget { } } - pub fn connect_album_pressed(&self, f: F) { - self.imp() - .cover_btn - .connect_clicked(clone!(@weak self as _self => move |_| { - f(&_self); - })); + pub fn connect_album_pressed(&self, f: F) { + self.imp().cover_btn.connect_clicked(move |_| { + f(); + }); } } diff --git a/src/app/components/artist/mod.rs b/src/app/components/artist/mod.rs index 31e0c4cf..03025aa2 100644 --- a/src/app/components/artist/mod.rs +++ b/src/app/components/artist/mod.rs @@ -64,12 +64,10 @@ impl ArtistWidget { _self } - pub fn connect_artist_pressed(&self, f: F) { - self.imp() - .avatar_btn - .connect_clicked(clone!(@weak self as _self => move |_| { - f(&_self); - })); + pub fn connect_artist_pressed(&self, f: F) { + self.imp().avatar_btn.connect_clicked(move |_| { + f(); + }); } fn bind(&self, model: &ArtistModel, worker: Worker) { diff --git a/src/app/components/artist_details/artist_details.rs b/src/app/components/artist_details/artist_details.rs index 10d10b39..fc36096d 100644 --- a/src/app/components/artist_details/artist_details.rs +++ b/src/app/components/artist_details/artist_details.rs @@ -94,9 +94,13 @@ impl ArtistDetailsWidget { let child = gtk::FlowBoxChild::new(); let album = AlbumWidget::for_model(item, worker.clone()); let f = on_album_pressed.clone(); - album.connect_album_pressed(clone!(@weak item => move |_| { - f(item.uri()); - })); + album.connect_album_pressed(clone!( + #[weak] + item, + move || { + f(item.uri()); + } + )); child.set_child(Some(&album)); child.upcast::() }); @@ -115,17 +119,25 @@ impl ArtistDetails { let widget = ArtistDetailsWidget::new(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more(); + } + )); if let Some(store) = model.get_list_store() { widget.bind_artist_releases( worker.clone(), &store, - clone!(@weak model => move |id| { - model.open_album(id); - }), + clone!( + #[weak] + model, + move |id| { + model.open_album(id); + } + ), ); } diff --git a/src/app/components/details/album_header.rs b/src/app/components/details/album_header.rs index 4c02aaf8..0ddaf3fb 100644 --- a/src/app/components/details/album_header.rs +++ b/src/app/components/details/album_header.rs @@ -177,7 +177,7 @@ impl AlbumHeaderWidget { pub fn set_artwork(&self, pixbuf: &gdk_pixbuf::Pixbuf) { let texture = gdk::Texture::for_pixbuf(pixbuf); - self.imp().album_art.set_from_paintable(Some(&texture)); + self.imp().album_art.set_paintable(Some(&texture)); } pub fn set_album_and_artist_and_year(&self, album: &str, artist: &str, year: Option) { diff --git a/src/app/components/details/details.rs b/src/app/components/details/details.rs index 9574550e..bff88d79 100644 --- a/src/app/components/details/details.rs +++ b/src/app/components/details/details.rs @@ -1,10 +1,11 @@ use gtk::prelude::*; use gtk::subclass::prelude::*; use gtk::CompositeTemplate; +use libadwaita::prelude::AdwDialogExt; use std::rc::Rc; use super::album_header::AlbumHeaderWidget; -use super::release_details::ReleaseDetailsWindow; +use super::release_details::ReleaseDetailsDialog; use super::DetailsModel; use crate::app::components::{ @@ -85,11 +86,15 @@ impl AlbumDetailsWidget { fn connect_header(&self) { self.set_header_visible(false); - self.imp().scrolling_header.connect_header_visibility( - clone!(@weak self as _self => move |visible| { - _self.set_header_visible(visible); - }), - ); + self.imp() + .scrolling_header + .connect_header_visibility(clone!( + #[weak(rename_to = _self)] + self, + move |visible| { + _self.set_header_visible(visible); + } + )); } fn connect_bottom_edge(&self, f: F) @@ -129,9 +134,13 @@ impl AlbumDetailsWidget { fn connect_info(&self, f: F) where - F: Fn() + 'static, + F: Fn(&Self) + 'static, { - self.imp().header_widget.connect_info(f); + self.imp().header_widget.connect_info(clone!( + #[weak(rename_to = _self)] + self, + move || f(&_self) + )); } fn set_liked(&self, is_liked: bool) { @@ -165,15 +174,12 @@ pub struct Details { model: Rc, worker: Worker, widget: AlbumDetailsWidget, - modal: ReleaseDetailsWindow, + modal: ReleaseDetailsDialog, children: Vec>, } impl Details { - pub fn new( - model: Rc, - worker: Worker, - ) -> Self { + pub fn new(model: Rc, worker: Worker) -> Self { if model.get_album_info().is_none() { model.load_album_info(); } @@ -192,29 +198,39 @@ impl Details { model.to_headerbar_model(), )); - let modal = ReleaseDetailsWindow::new(); + let modal = ReleaseDetailsDialog::new(); - widget.connect_liked(clone!(@weak model => move || model.toggle_save_album())); + widget.connect_liked(clone!( + #[weak] + model, + move || model.toggle_save_album() + )); - widget.connect_play(clone!(@weak model => move || model.toggle_play_album())); + widget.connect_play(clone!( + #[weak] + model, + move || model.toggle_play_album() + )); widget.connect_header(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more(); - })); - - widget.connect_info(clone!(@weak modal, @weak widget => move || { - let modal = modal.upcast_ref::(); - modal.set_modal(true); - modal.set_transient_for( - widget - .root() - .and_then(|r| r.downcast::().ok()) - .as_ref(), - ); - modal.set_visible(true); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more(); + } + )); + + widget.connect_info(clone!( + #[weak] + modal, + move |w| { + let modal = modal.upcast_ref::(); + let parent = w.root().and_then(|r| r.downcast::().ok()); + modal.present(parent.as_ref()); + } + )); Self { model, @@ -254,9 +270,11 @@ impl Details { album.year(), ); - self.widget.connect_artist_clicked( - clone!(@weak self.model as model => move || model.view_artist()), - ); + self.widget.connect_artist_clicked(clone!( + #[weak(rename_to = model)] + self.model, + move || model.view_artist() + )); self.modal.set_details( &album.title, diff --git a/src/app/components/details/release_details.blp b/src/app/components/details/release_details.blp index b5b29941..8944438d 100644 --- a/src/app/components/details/release_details.blp +++ b/src/app/components/details/release_details.blp @@ -1,10 +1,7 @@ using Gtk 4.0; using Adw 1; -template $ReleaseDetailsWindow : Adw.Window { - modal: true; - hide-on-close: true; - default-width: 360; +template $ReleaseDetailsDialog : Adw.Dialog { Box { orientation: vertical; diff --git a/src/app/components/details/release_details.rs b/src/app/components/details/release_details.rs index 11265f6c..a8c7a095 100644 --- a/src/app/components/details/release_details.rs +++ b/src/app/components/details/release_details.rs @@ -10,7 +10,7 @@ mod imp { #[derive(Debug, Default, CompositeTemplate)] #[template(resource = "/dev/alextren/Spot/components/release_details.ui")] - pub struct ReleaseDetailsWindow { + pub struct ReleaseDetailsDialog { #[template_child] pub album_artist: TemplateChild, @@ -28,10 +28,10 @@ mod imp { } #[glib::object_subclass] - impl ObjectSubclass for ReleaseDetailsWindow { - const NAME: &'static str = "ReleaseDetailsWindow"; - type Type = super::ReleaseDetailsWindow; - type ParentType = libadwaita::Window; + impl ObjectSubclass for ReleaseDetailsDialog { + const NAME: &'static str = "ReleaseDetailsDialog"; + type Type = super::ReleaseDetailsDialog; + type ParentType = libadwaita::Dialog; fn class_init(klass: &mut Self::Class) { klass.bind_template(); @@ -42,23 +42,17 @@ mod imp { } } - impl ObjectImpl for ReleaseDetailsWindow {} - impl WidgetImpl for ReleaseDetailsWindow {} - impl AdwWindowImpl for ReleaseDetailsWindow {} - impl WindowImpl for ReleaseDetailsWindow {} + impl ObjectImpl for ReleaseDetailsDialog {} + impl WidgetImpl for ReleaseDetailsDialog {} + impl AdwDialogImpl for ReleaseDetailsDialog {} } glib::wrapper! { - pub struct ReleaseDetailsWindow(ObjectSubclass) @extends gtk::Widget, libadwaita::Window; + pub struct + ReleaseDetailsDialog(ObjectSubclass) @extends gtk::Widget, libadwaita::Dialog; } -impl Default for ReleaseDetailsWindow { - fn default() -> Self { - Self::new() - } -} - -impl ReleaseDetailsWindow { +impl ReleaseDetailsDialog { pub fn new() -> Self { glib::Object::new() } diff --git a/src/app/components/device_selector/component.rs b/src/app/components/device_selector/component.rs index 27a677f8..4e6cc49c 100644 --- a/src/app/components/device_selector/component.rs +++ b/src/app/components/device_selector/component.rs @@ -62,13 +62,21 @@ impl DeviceSelector { pub fn new(widget: DeviceSelectorWidget, model: DeviceSelectorModel) -> Self { let model = Rc::new(model); - widget.connect_refresh(clone!(@weak model => move || { - model.refresh_available_devices(); - })); + widget.connect_refresh(clone!( + #[weak] + model, + move || { + model.refresh_available_devices(); + } + )); - widget.connect_switch_device(clone!(@weak model => move |id| { - model.set_current_device(id); - })); + widget.connect_switch_device(clone!( + #[weak] + model, + move |id| { + model.set_current_device(id); + } + )); Self { widget, model } } diff --git a/src/app/components/device_selector/widget.rs b/src/app/components/device_selector/widget.rs index 6ade8846..a9d5a010 100644 --- a/src/app/components/device_selector/widget.rs +++ b/src/app/components/device_selector/widget.rs @@ -1,8 +1,8 @@ use crate::app::models::{ConnectDevice, ConnectDeviceKind}; use crate::app::state::Device; +use gdk::prelude::FromVariant; use gettextrs::gettext; use gio::{Action, SimpleAction, SimpleActionGroup}; -use gdk::prelude::FromVariant; use gtk::prelude::*; use gtk::subclass::prelude::*; use gtk::CompositeTemplate; @@ -70,12 +70,15 @@ mod imp { self.obj() .insert_action_group(ACTIONS, Some(&self.action_group)); - self.obj() - .connect_clicked(clone!(@weak popover => move |_| { + self.obj().connect_clicked(clone!( + #[weak] + popover, + move |_| { popover.set_visible(true); popover.present(); popover.grab_focus(); - })); + } + )); } } diff --git a/src/app/components/headerbar/component.rs b/src/app/components/headerbar/component.rs index ee519111..66db29be 100644 --- a/src/app/components/headerbar/component.rs +++ b/src/app/components/headerbar/component.rs @@ -199,10 +199,26 @@ mod common { where Model: HeaderBarModel + 'static, { - widget.connect_selection_start(clone!(@weak model => move || model.start_selection())); - widget.connect_select_all(clone!(@weak model => move || model.select_all())); - widget.connect_selection_cancel(clone!(@weak model => move || model.cancel_selection())); - widget.connect_go_back(clone!(@weak model => move || model.go_back())); + widget.connect_selection_start(clone!( + #[weak] + model, + move || model.start_selection() + )); + widget.connect_select_all(clone!( + #[weak] + model, + move || model.select_all() + )); + widget.connect_selection_cancel(clone!( + #[weak] + model, + move || model.cancel_selection() + )); + widget.connect_go_back(clone!( + #[weak] + model, + move || model.go_back() + )); widget.set_title(model.title().as_ref().map(|s| &s[..])); widget.set_selection_possible(model.selection_context().is_some()); @@ -247,10 +263,7 @@ impl StandardScreen where Model: HeaderBarModel + 'static, { - pub fn new( - wrapped: impl ListenerComponent + 'static, - model: Rc, - ) -> Self { + pub fn new(wrapped: impl ListenerComponent + 'static, model: Rc) -> Self { let widget = HeaderBarWidget::new(); common::bind_headerbar(&widget, &model); diff --git a/src/app/components/headerbar/widget.rs b/src/app/components/headerbar/widget.rs index d35275f0..0c96f3b0 100644 --- a/src/app/components/headerbar/widget.rs +++ b/src/app/components/headerbar/widget.rs @@ -116,7 +116,7 @@ impl HeaderBarWidget { { self.imp().go_back.connect_clicked(move |_| f()); } - + pub fn set_can_go_back(&self, can_go_back: bool) { self.imp().go_back.set_visible(can_go_back); } diff --git a/src/app/components/library/library.rs b/src/app/components/library/library.rs index 9af13f30..5e8fe392 100644 --- a/src/app/components/library/library.rs +++ b/src/app/components/library/library.rs @@ -86,9 +86,13 @@ impl LibraryWidget { wrap_flowbox_item(item, |album_model| { let f = on_album_pressed.clone(); let album = AlbumWidget::for_model(album_model, worker.clone()); - album.connect_album_pressed(clone!(@weak album_model => move |_| { - f(album_model.uri()); - })); + album.connect_album_pressed(clone!( + #[weak] + album_model, + move || { + f(album_model.uri()); + } + )); album }) }); @@ -109,9 +113,13 @@ impl Library { pub fn new(worker: Worker, model: LibraryModel) -> Self { let model = Rc::new(model); let widget = LibraryWidget::new(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more_albums(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more_albums(); + } + )); Self { widget, @@ -124,9 +132,13 @@ impl Library { self.widget.bind_albums( self.worker.clone(), &self.model.get_list_store().unwrap(), - clone!(@weak self.model as model => move |id| { - model.open_album(id); - }), + clone!( + #[weak(rename_to = model)] + self.model, + move |id| { + model.open_album(id); + } + ), ); } } diff --git a/src/app/components/login/login.rs b/src/app/components/login/login.rs index 1d9731de..90f9925a 100644 --- a/src/app/components/login/login.rs +++ b/src/app/components/login/login.rs @@ -76,11 +76,9 @@ impl LoginWindow { where F: Fn() + 'static, { - self.imp().login_with_spotify_button.connect_clicked( - clone!(@weak self as _self => move |_| { - on_login_with_spotify_button() - }), - ); + self.imp() + .login_with_spotify_button + .connect_clicked(move |_| on_login_with_spotify_button()); } fn show_auth_error(&self, shown: bool) { @@ -101,15 +99,23 @@ impl Login { let login_window = LoginWindow::new(); - login_window.connect_close(clone!(@weak parent => move || { - if let Some(app) = parent.application().as_ref() { - app.quit(); + login_window.connect_close(clone!( + #[weak] + parent, + move || { + if let Some(app) = parent.application().as_ref() { + app.quit(); + } } - })); + )); - login_window.connect_login_oauth_spotify(clone!(@weak model => move || { - model.login_with_spotify(); - })); + login_window.connect_login_oauth_spotify(clone!( + #[weak] + model, + move || { + model.login_with_spotify(); + } + )); Self { parent, diff --git a/src/app/components/navigation/navigation.rs b/src/app/components/navigation/navigation.rs index 4189c114..492480ad 100644 --- a/src/app/components/navigation/navigation.rs +++ b/src/app/components/navigation/navigation.rs @@ -26,27 +26,35 @@ impl Navigation { ) -> Self { let model = Rc::new(model); - split_view.connect_collapsed_notify(clone!(@weak model => move |split_view| { - let is_main = split_view.shows_content(); - let folded = split_view.is_collapsed(); - if folded { - split_view.add_css_class("collapsed"); - } else { - split_view.remove_css_class("collapsed"); + split_view.connect_collapsed_notify(clone!( + #[weak] + model, + move |split_view| { + let is_main = split_view.shows_content(); + let folded = split_view.is_collapsed(); + if folded { + split_view.add_css_class("collapsed"); + } else { + split_view.remove_css_class("collapsed"); + } + model.set_nav_hidden(folded && is_main); } - model.set_nav_hidden(folded && is_main); - })); - - split_view.connect_show_content_notify(clone!(@weak model => move |split_view| { - let is_main = split_view.shows_content(); - let folded = split_view.is_collapsed(); - if folded { - split_view.add_css_class("collapsed"); - } else { - split_view.remove_css_class("collapsed"); + )); + + split_view.connect_show_content_notify(clone!( + #[weak] + model, + move |split_view| { + let is_main = split_view.shows_content(); + let folded = split_view.is_collapsed(); + if folded { + split_view.add_css_class("collapsed"); + } else { + split_view.remove_css_class("collapsed"); + } + model.set_nav_hidden(folded && is_main); } - model.set_nav_hidden(folded && is_main); - })); + )); Self { model, diff --git a/src/app/components/notification/mod.rs b/src/app/components/notification/mod.rs index b11dab2c..2057fd57 100644 --- a/src/app/components/notification/mod.rs +++ b/src/app/components/notification/mod.rs @@ -1,7 +1,7 @@ use crate::app::components::EventListener; use crate::app::AppEvent; -use gettextrs::*; use gdk::prelude::ToVariant; +use gettextrs::*; pub struct Notification { toast_overlay: libadwaita::ToastOverlay, diff --git a/src/app/components/now_playing/now_playing.rs b/src/app/components/now_playing/now_playing.rs index 35f7ca00..92d38c86 100644 --- a/src/app/components/now_playing/now_playing.rs +++ b/src/app/components/now_playing/now_playing.rs @@ -93,15 +93,16 @@ pub struct NowPlaying { } impl NowPlaying { - pub fn new( - model: Rc, - worker: Worker, - ) -> Self { + pub fn new(model: Rc, worker: Worker) -> Self { let widget = NowPlayingWidget::new(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more(); + } + )); let playlist = Box::new(Playlist::new( widget.song_list_widget().clone(), diff --git a/src/app/components/playback/component.rs b/src/app/components/playback/component.rs index dbae5b47..e295c397 100644 --- a/src/app/components/playback/component.rs +++ b/src/app/components/playback/component.rs @@ -83,13 +83,41 @@ impl PlaybackControl { pub fn new(model: PlaybackModel, widget: PlaybackWidget, worker: Worker) -> Self { let model = Rc::new(model); - widget.connect_play_pause(clone!(@weak model => move || model.toggle_playback() )); - widget.connect_next(clone!(@weak model => move || model.play_next_song())); - widget.connect_prev(clone!(@weak model => move || model.play_prev_song())); - widget.connect_shuffle(clone!(@weak model => move || model.toggle_shuffle())); - widget.connect_repeat(clone!(@weak model => move || model.toggle_repeat())); - widget.connect_seek(clone!(@weak model => move |position| model.seek_to(position))); - widget.connect_now_playing_clicked(clone!(@weak model => move || model.go_home())); + widget.connect_play_pause(clone!( + #[weak] + model, + move || model.toggle_playback() + )); + widget.connect_next(clone!( + #[weak] + model, + move || model.play_next_song() + )); + widget.connect_prev(clone!( + #[weak] + model, + move || model.play_prev_song() + )); + widget.connect_shuffle(clone!( + #[weak] + model, + move || model.toggle_shuffle() + )); + widget.connect_repeat(clone!( + #[weak] + model, + move || model.toggle_repeat() + )); + widget.connect_seek(clone!( + #[weak] + model, + move |position| model.seek_to(position) + )); + widget.connect_now_playing_clicked(clone!( + #[weak] + model, + move || model.go_home() + )); Self { model, diff --git a/src/app/components/playback/playback_info.rs b/src/app/components/playback/playback_info.rs index cd3a58b4..9e070ecc 100644 --- a/src/app/components/playback/playback_info.rs +++ b/src/app/components/playback/playback_info.rs @@ -58,10 +58,10 @@ impl PlaybackInfoWidget { .set_label(&gettext("No song playing")); widget .playing_image - .set_from_icon_name(Some("emblem-music-symbolic")); + .set_icon_name(Some("emblem-music-symbolic")); widget .playing_image - .set_from_icon_name(Some("emblem-music-symbolic")); + .set_icon_name(Some("emblem-music-symbolic")); } pub fn set_info_visible(&self, visible: bool) { @@ -70,6 +70,6 @@ impl PlaybackInfoWidget { pub fn set_artwork(&self, pixbuf: &gdk_pixbuf::Pixbuf) { let texture = gdk::Texture::for_pixbuf(pixbuf); - self.imp().playing_image.set_from_paintable(Some(&texture)); + self.imp().playing_image.set_paintable(Some(&texture)); } } diff --git a/src/app/components/playback/playback_widget.rs b/src/app/components/playback/playback_widget.rs index cf1830dc..e808b696 100644 --- a/src/app/components/playback/playback_widget.rs +++ b/src/app/components/playback/playback_widget.rs @@ -154,7 +154,7 @@ impl PlaybackWidget { let widget = self.imp(); widget.seek_bar.set_increments(5_000.0, 10_000.0); widget.seek_bar.connect_change_value( - clone!(@weak self as _self => @default-return glib::Propagation::Proceed, move |_, _, requested| { + clone!(#[weak(rename_to = _self)] self, #[upgrade_or] glib::Propagation::Proceed, move |_, _, requested| { _self.imp() .track_position .set_text(&format_duration(requested)); @@ -170,9 +170,11 @@ impl PlaybackWidget { widget.controls.set_playing(is_playing); widget.controls_mobile.set_playing(is_playing); if is_playing { - widget - .clock - .start(clone!(@weak self as _self => move || _self.increment_seek_position())); + widget.clock.start(clone!( + #[weak(rename_to = _self)] + self, + move || _self.increment_seek_position() + )); } else { widget.clock.stop(); } diff --git a/src/app/components/playlist/playlist.rs b/src/app/components/playlist/playlist.rs index 691f783c..247396b8 100644 --- a/src/app/components/playlist/playlist.rs +++ b/src/app/components/playlist/playlist.rs @@ -102,18 +102,22 @@ where item.set_child(Some(&SongWidget::new())); }); - factory.connect_bind(clone!(@weak model => move |_, item| { - let item = item.downcast_ref::().unwrap(); - let song_model = item.item().unwrap().downcast::().unwrap(); - song_model.set_state(model.song_state(&song_model.get_id())); + factory.connect_bind(clone!( + #[weak] + model, + move |_, item| { + let item = item.downcast_ref::().unwrap(); + let song_model = item.item().unwrap().downcast::().unwrap(); + song_model.set_state(model.song_state(&song_model.get_id())); - let widget = item.child().unwrap().downcast::().unwrap(); - widget.bind(&song_model, worker.clone(), model.show_song_covers()); + let widget = item.child().unwrap().downcast::().unwrap(); + widget.bind(&song_model, worker.clone(), model.show_song_covers()); - let id = &song_model.get_id(); - widget.set_actions(model.actions_for(id).as_ref()); - widget.set_menu(model.menu_for(id).as_ref()); - })); + let id = &song_model.get_id(); + widget.set_actions(model.actions_for(id).as_ref()); + widget.set_menu(model.menu_for(id).as_ref()); + } + )); factory.connect_unbind(|_, item| { let item = item.downcast_ref::().unwrap(); @@ -121,23 +125,35 @@ where song_model.unbind_all(); }); - listview.connect_activate(clone!(@weak list_model, @weak model => move |_, position| { - let song = list_model.index_continuous(position as usize).expect("attempt to access invalid index"); - let song = song.description(); - let selection_enabled = model.is_selection_enabled(); - if selection_enabled { - model.toggle_select(&song.id); - } else { - model.play_song_at(position as usize, &song.id); + listview.connect_activate(clone!( + #[weak] + list_model, + #[weak] + model, + move |_, position| { + let song = list_model + .index_continuous(position as usize) + .expect("attempt to access invalid index"); + let song = song.description(); + let selection_enabled = model.is_selection_enabled(); + if selection_enabled { + model.toggle_select(&song.id); + } else { + model.play_song_at(position as usize, &song.id); + } } - })); + )); let press_gesture = gtk::GestureLongPress::new(); press_gesture.set_touch_only(false); press_gesture.set_propagation_phase(gtk::PropagationPhase::Capture); - press_gesture.connect_pressed(clone!(@weak model => move |_, _, _| { - model.enable_selection(); - })); + press_gesture.connect_pressed(clone!( + #[weak] + model, + move |_, _, _| { + model.enable_selection(); + } + )); listview.add_controller(press_gesture); Self { @@ -160,11 +176,17 @@ where if pos < v || pos > v2 { self.animator.animate( 20, - clone!(@weak adj => @default-return false, move |p| { - let v = adj.value(); - adj.set_value(v + p * (pos - v)); - true - }), + clone!( + #[weak] + adj, + #[upgrade_or] + false, + move |p| { + let v = adj.value(); + adj.set_value(v + p * (pos - v)); + true + } + ), ); } } diff --git a/src/app/components/playlist/song.rs b/src/app/components/playlist/song.rs index 6a7920a5..48ef7145 100644 --- a/src/app/components/playlist/song.rs +++ b/src/app/components/playlist/song.rs @@ -155,7 +155,7 @@ impl SongWidget { fn set_image(&self, pixbuf: &gdk_pixbuf::Pixbuf) { let texture = gdk::Texture::for_pixbuf(pixbuf); - self.imp().song_cover.set_from_paintable(Some(&texture)); + self.imp().song_cover.set_paintable(Some(&texture)); } pub fn set_art(&self, model: &SongModel, worker: Worker) { diff --git a/src/app/components/playlist_details/playlist_details.rs b/src/app/components/playlist_details/playlist_details.rs index 55b3e09a..636e426f 100644 --- a/src/app/components/playlist_details/playlist_details.rs +++ b/src/app/components/playlist_details/playlist_details.rs @@ -94,11 +94,15 @@ impl PlaylistDetailsWidget { fn connect_header(&self) { self.set_header_visible(false); - self.imp().scrolling_header.connect_header_visibility( - clone!(@weak self as _self => move |visible| { - _self.set_header_visible(visible); - }), - ); + self.imp() + .scrolling_header + .connect_header_visibility(clone!( + #[weak(rename_to = _self)] + self, + move |visible| { + _self.set_header_visible(visible); + } + )); } fn set_loaded(&self) { @@ -147,12 +151,14 @@ impl PlaylistDetailsWidget { where F: Fn() + 'static, { - self.imp() - .headerbar - .connect_cancel(clone!(@weak self as _self => move || { + self.imp().headerbar.connect_cancel(clone!( + #[weak(rename_to = _self)] + self, + move || { _self.imp().header_widget.reset_playlist_name(); f(); - })); + } + )); } pub fn connect_play(&self, f: F) @@ -166,12 +172,14 @@ impl PlaylistDetailsWidget { where F: Fn(String) + 'static, { - self.imp() - .headerbar - .connect_ok(clone!(@weak self as _self => move || { + self.imp().headerbar.connect_ok(clone!( + #[weak(rename_to = _self)] + self, + move || { let s = _self.imp().header_widget.get_edited_playlist_name(); f(s); - })); + } + )); } pub fn connect_go_back(&self, f: F) @@ -206,25 +214,53 @@ impl PlaylistDetails { widget.connect_header(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more_tracks(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more_tracks(); + } + )); - widget.connect_owner_clicked(clone!(@weak model => move || model.view_owner())); + widget.connect_owner_clicked(clone!( + #[weak] + model, + move || model.view_owner() + )); - widget.connect_edit(clone!(@weak model => move || { - model.enable_selection(); - })); + widget.connect_edit(clone!( + #[weak] + model, + move || { + model.enable_selection(); + } + )); - widget.connect_cancel(clone!(@weak model => move || model.disable_selection())); - widget.connect_done(clone!(@weak model => move |n| { - model.disable_selection(); - model.update_playlist_details(n); - })); + widget.connect_cancel(clone!( + #[weak] + model, + move || model.disable_selection() + )); + widget.connect_done(clone!( + #[weak] + model, + move |n| { + model.disable_selection(); + model.update_playlist_details(n); + } + )); - widget.connect_play(clone!(@weak model => move || model.toggle_play_playlist())); + widget.connect_play(clone!( + #[weak] + model, + move || model.toggle_play_playlist() + )); - widget.connect_go_back(clone!(@weak model => move || model.go_back())); + widget.connect_go_back(clone!( + #[weak] + model, + move || model.go_back() + )); Self { model, diff --git a/src/app/components/playlist_details/playlist_header.rs b/src/app/components/playlist_details/playlist_header.rs index 44ecb81d..aeb6199e 100644 --- a/src/app/components/playlist_details/playlist_header.rs +++ b/src/app/components/playlist_details/playlist_header.rs @@ -44,7 +44,7 @@ mod imp { #[property(get, set = Self::set_vertical, name = "vertical-layout")] pub vertical_layout: Cell, } - + impl PlaylistHeaderWidget { pub fn set_vertical(&self, vertical: bool) { let self_ = self.obj(); @@ -53,13 +53,13 @@ mod imp { box_.set_orientation(gtk::Orientation::Vertical); box_.set_spacing(12); self.playlist_info.set_halign(gtk::Align::Center); - self.playlist_label_entry.set_xalign(0.5); + EntryExt::set_alignment(&*self.playlist_label_entry, 0.5); self.author_button.set_halign(gtk::Align::Center); } else { box_.set_orientation(gtk::Orientation::Horizontal); box_.set_spacing(0); self.playlist_info.set_halign(gtk::Align::Start); - self.playlist_label_entry.set_xalign(0.0); + EntryExt::set_alignment(&*self.playlist_label_entry, 0.0); self.author_button.set_halign(gtk::Align::Start); } } @@ -131,7 +131,7 @@ impl PlaylistHeaderWidget { pub fn set_artwork(&self, pixbuf: &gdk_pixbuf::Pixbuf) { let texture = gdk::Texture::for_pixbuf(pixbuf); - self.imp().playlist_art.set_from_paintable(Some(&texture)); + self.imp().playlist_art.set_paintable(Some(&texture)); } pub fn set_info(&self, playlist: &str, owner: &str) { diff --git a/src/app/components/saved_playlists/saved_playlists.rs b/src/app/components/saved_playlists/saved_playlists.rs index 645ebf82..3054b944 100644 --- a/src/app/components/saved_playlists/saved_playlists.rs +++ b/src/app/components/saved_playlists/saved_playlists.rs @@ -86,9 +86,13 @@ impl SavedPlaylistsWidget { let album = AlbumWidget::for_model(album_model, worker.clone()); let f = on_album_pressed.clone(); - album.connect_album_pressed(clone!(@weak album_model => move |_| { - f(album_model.uri()); - })); + album.connect_album_pressed(clone!( + #[weak] + album_model, + move || { + f(album_model.uri()); + } + )); child.set_child(Some(&album)); child.upcast::() @@ -111,9 +115,13 @@ impl SavedPlaylists { let widget = SavedPlaylistsWidget::new(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more_playlists(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more_playlists(); + } + )); Self { widget, @@ -126,9 +134,13 @@ impl SavedPlaylists { self.widget.bind_albums( self.worker.clone(), &self.model.get_list_store().unwrap(), - clone!(@weak self.model as model => move |id| { - model.open_playlist(id); - }), + clone!( + #[weak(rename_to = model)] + self.model, + move |id| { + model.open_playlist(id); + } + ), ); } } diff --git a/src/app/components/saved_tracks/saved_tracks.rs b/src/app/components/saved_tracks/saved_tracks.rs index 4291483b..1a2d4c9e 100644 --- a/src/app/components/saved_tracks/saved_tracks.rs +++ b/src/app/components/saved_tracks/saved_tracks.rs @@ -80,9 +80,13 @@ impl SavedTracks { pub fn new(model: Rc, worker: Worker) -> Self { let widget = SavedTracksWidget::new(); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more(); + } + )); let playlist = Playlist::new(widget.song_list_widget().clone(), model.clone(), worker); diff --git a/src/app/components/scrolling_header/scrolling_header_widget.rs b/src/app/components/scrolling_header/scrolling_header_widget.rs index 23e8a9ed..73b1fb71 100644 --- a/src/app/components/scrolling_header/scrolling_header_widget.rs +++ b/src/app/components/scrolling_header/scrolling_header_widget.rs @@ -77,8 +77,14 @@ impl ScrollingHeaderWidget { let scroll_controller = gtk::EventControllerScroll::new(gtk::EventControllerScrollFlags::VERTICAL); - scroll_controller.connect_scroll( - clone!(@strong f, @weak self as _self => @default-return glib::Propagation::Proceed, move |_, _, dy| { + scroll_controller.connect_scroll(clone!( + #[strong] + f, + #[weak(rename_to = _self)] + self, + #[upgrade_or] + glib::Propagation::Proceed, + move |_, _, dy| { let visible = dy < 0f64 && _self.is_scrolled_to_top(); f(visible); if _self.set_header_visible(visible) { @@ -86,17 +92,21 @@ impl ScrollingHeaderWidget { } else { glib::Propagation::Stop } - }), - ); + } + )); let swipe_controller = gtk::GestureSwipe::new(); swipe_controller.set_touch_only(true); swipe_controller.set_propagation_phase(gtk::PropagationPhase::Capture); - swipe_controller.connect_swipe(clone!(@weak self as _self => move |_, _, dy| { - let visible = dy >= 0f64 && _self.is_scrolled_to_top(); - f(visible); - _self.set_header_visible(visible); - })); + swipe_controller.connect_swipe(clone!( + #[weak(rename_to = _self)] + self, + move |_, _, dy| { + let visible = dy >= 0f64 && _self.is_scrolled_to_top(); + f(visible); + _self.set_header_visible(visible); + } + )); self.imp().scrolled_window.add_controller(scroll_controller); self.add_controller(swipe_controller); diff --git a/src/app/components/search/search.rs b/src/app/components/search/search.rs index edcc202e..c405a056 100644 --- a/src/app/components/search/search.rs +++ b/src/app/components/search/search.rs @@ -78,7 +78,7 @@ impl SearchResultsWidget { pub fn new() -> Self { glib::Object::new() } - + pub fn connect_go_back(&self, f: F) where F: Fn() + 'static, @@ -90,9 +90,10 @@ impl SearchResultsWidget { where F: Fn(String) + 'static, { - self.imp() - .search_entry - .connect_changed(clone!(@weak self as _self => move |s| { + self.imp().search_entry.connect_changed(clone!( + #[weak(rename_to = _self)] + self, + move |s| { let query = s.text(); let query = query.as_str(); _self.imp().status_page.set_visible(query.is_empty()); @@ -100,7 +101,8 @@ impl SearchResultsWidget { if !query.is_empty() { f(query.to_string()); } - })); + } + )); } fn bind_albums_results(&self, worker: Worker, store: &gio::ListStore, on_album_pressed: F) @@ -113,9 +115,13 @@ impl SearchResultsWidget { wrap_flowbox_item(item, |album_model| { let f = on_album_pressed.clone(); let album = AlbumWidget::for_model(album_model, worker.clone()); - album.connect_album_pressed(clone!(@weak album_model => move |_| { - f(album_model.uri()); - })); + album.connect_album_pressed(clone!( + #[weak] + album_model, + move || { + f(album_model.uri()); + } + )); album }) }); @@ -131,9 +137,13 @@ impl SearchResultsWidget { wrap_flowbox_item(item, |artist_model| { let f = on_artist_pressed.clone(); let artist = ArtistWidget::for_model(artist_model, worker.clone()); - artist.connect_artist_pressed(clone!(@weak artist_model => move |_| { - f(artist_model.id()); - })); + artist.connect_artist_pressed(clone!( + #[weak] + artist_model, + move || { + f(artist_model.id()); + } + )); artist }) }); @@ -149,38 +159,51 @@ pub struct SearchResults { } impl SearchResults { - pub fn new( - model: SearchResultsModel, - worker: Worker, - ) -> Self { + pub fn new(model: SearchResultsModel, worker: Worker) -> Self { let model = Rc::new(model); let widget = SearchResultsWidget::new(); let album_results_model = gio::ListStore::new::(); let artist_results_model = gio::ListStore::new::(); - widget.connect_go_back(clone!(@weak model => move || { - model.go_back(); - })); + widget.connect_go_back(clone!( + #[weak] + model, + move || { + model.go_back(); + } + )); - widget.connect_search_updated(clone!(@weak model => move |q| { - model.search(q); - })); + widget.connect_search_updated(clone!( + #[weak] + model, + move |q| { + model.search(q); + } + )); widget.bind_albums_results( worker.clone(), &album_results_model, - clone!(@weak model => move |uri| { - model.open_album(uri); - }), + clone!( + #[weak] + model, + move |uri| { + model.open_album(uri); + } + ), ); widget.bind_artists_results( worker, &artist_results_model, - clone!(@weak model => move |id| { - model.open_artist(id); - }), + clone!( + #[weak] + model, + move |id| { + model.open_artist(id); + } + ), ); Self { @@ -220,7 +243,11 @@ impl SearchResults { fn update_search_query(&self) { self.debouncer.debounce( 600, - clone!(@weak self.model as model => move || model.fetch_results()), + clone!( + #[weak(rename_to = model)] + self.model, + move || model.fetch_results() + ), ); } } diff --git a/src/app/components/selection/component.rs b/src/app/components/selection/component.rs index 57372373..dcf5c740 100644 --- a/src/app/components/selection/component.rs +++ b/src/app/components/selection/component.rs @@ -139,11 +139,31 @@ pub struct SelectionToolbar { impl SelectionToolbar { pub fn new(model: SelectionToolbarModel, widget: SelectionToolbarWidget) -> Self { let model = Rc::new(model); - widget.connect_move_up(clone!(@weak model => move || model.move_up_selection())); - widget.connect_move_down(clone!(@weak model => move || model.move_down_selection())); - widget.connect_queue(clone!(@weak model => move || model.queue_selection())); - widget.connect_remove(clone!(@weak model => move || model.remove_selection())); - widget.connect_save(clone!(@weak model => move || model.save_selection())); + widget.connect_move_up(clone!( + #[weak] + model, + move || model.move_up_selection() + )); + widget.connect_move_down(clone!( + #[weak] + model, + move || model.move_down_selection() + )); + widget.connect_queue(clone!( + #[weak] + model, + move || model.queue_selection() + )); + widget.connect_remove(clone!( + #[weak] + model, + move || model.remove_selection() + )); + widget.connect_save(clone!( + #[weak] + model, + move || model.save_selection() + )); Self { model, widget } } @@ -224,7 +244,11 @@ impl EventListener for SelectionToolbar { let model = &self.model; self.widget.connect_playlists( &model.user_playlists(), - clone!(@weak model => move |s| model.add_to_playlist(s)), + clone!( + #[weak] + model, + move |s| model.add_to_playlist(s) + ), ); } _ => {} diff --git a/src/app/components/settings/settings.rs b/src/app/components/settings/settings.rs index 1a68b7a2..b0e155ca 100644 --- a/src/app/components/settings/settings.rs +++ b/src/app/components/settings/settings.rs @@ -274,7 +274,7 @@ impl Settings { } pub fn show_self(&self) { - self.dialog().present(&self.parent); + self.dialog().present(Some(&self.parent)); } } diff --git a/src/app/components/sidebar/create_playlist.rs b/src/app/components/sidebar/create_playlist.rs index 27d42388..464351a2 100644 --- a/src/app/components/sidebar/create_playlist.rs +++ b/src/app/components/sidebar/create_playlist.rs @@ -55,11 +55,19 @@ impl CreatePlaylistPopover { pub fn connect_create(&self, create_fun: F) { let entry = self.imp().entry.get(); - let closure = clone!(@weak self as popover, @weak entry, @strong create_fun => move || { - create_fun(entry.text().to_string()); - popover.popdown(); - entry.buffer().delete_text(0, None); - }); + let closure = clone!( + #[weak(rename_to = popover)] + self, + #[weak] + entry, + #[strong] + create_fun, + move || { + create_fun(entry.text().to_string()); + popover.popdown(); + entry.buffer().delete_text(0, None); + } + ); let closure_clone = closure.clone(); entry.connect_activate(move |_| closure()); self.imp().button.connect_clicked(move |_| closure_clone()); diff --git a/src/app/components/sidebar/sidebar.rs b/src/app/components/sidebar/sidebar.rs index 3f369b76..e00fa908 100644 --- a/src/app/components/sidebar/sidebar.rs +++ b/src/app/components/sidebar/sidebar.rs @@ -90,7 +90,11 @@ pub struct Sidebar { impl Sidebar { pub fn new(listbox: gtk::ListBox, model: Rc) -> Self { let popover = CreatePlaylistPopover::new(); - popover.connect_create(clone!(@weak model => move |t| model.create_new_playlist(t))); + popover.connect_create(clone!( + #[weak] + model, + move |t| model.create_new_playlist(t) + )); let list_store = gio::ListStore::new::(); @@ -109,32 +113,43 @@ impl Sidebar { listbox.bind_model( Some(&list_store), - clone!(@weak popover => @default-panic, move |obj| { - let item = obj.downcast_ref::().unwrap(); - if item.navigatable() { - Self::make_navigatable(item) - } else { - match item.id().as_str() { - SAVED_PLAYLISTS_SECTION => Self::make_section_label(item), - CREATE_PLAYLIST_ITEM => Self::make_create_playlist(item, popover), - _ => unimplemented!(), + clone!( + #[weak] + popover, + #[upgrade_or_panic] + move |obj| { + let item = obj.downcast_ref::().unwrap(); + if item.navigatable() { + Self::make_navigatable(item) + } else { + match item.id().as_str() { + SAVED_PLAYLISTS_SECTION => Self::make_section_label(item), + CREATE_PLAYLIST_ITEM => Self::make_create_playlist(item, popover), + _ => unimplemented!(), + } } } - }), + ), ); - listbox.connect_row_activated(clone!(@weak popover, @weak model => move |_, row| { - if let Some(row) = row.downcast_ref::() { - if let Some(dest) = row.item().destination() { - model.navigate(dest); - } else { - match row.item().id().as_str() { - CREATE_PLAYLIST_ITEM => popover.popup(), - _ => unimplemented!() + listbox.connect_row_activated(clone!( + #[weak] + popover, + #[weak] + model, + move |_, row| { + if let Some(row) = row.downcast_ref::() { + if let Some(dest) = row.item().destination() { + model.navigate(dest); + } else { + match row.item().id().as_str() { + CREATE_PLAYLIST_ITEM => popover.popup(), + _ => unimplemented!(), + } } } } - })); + )); Self { listbox, diff --git a/src/app/components/user_details/user_details.rs b/src/app/components/user_details/user_details.rs index 9d158964..5e3c96ae 100644 --- a/src/app/components/user_details/user_details.rs +++ b/src/app/components/user_details/user_details.rs @@ -85,9 +85,13 @@ impl UserDetailsWidget { wrap_flowbox_item(item, |item: &AlbumModel| { let f = on_pressed.clone(); let album = AlbumWidget::for_model(item, worker.clone()); - album.connect_album_pressed(clone!(@weak item => move |_| { - f(item.uri()); - })); + album.connect_album_pressed(clone!( + #[weak] + item, + move || { + f(item.uri()); + } + )); album }) }); @@ -106,17 +110,25 @@ impl UserDetails { let widget = UserDetailsWidget::new(); let model = Rc::new(model); - widget.connect_bottom_edge(clone!(@weak model => move || { - model.load_more(); - })); + widget.connect_bottom_edge(clone!( + #[weak] + model, + move || { + model.load_more(); + } + )); if let Some(store) = model.get_list_store() { widget.bind_user_playlists( worker, &store, - clone!(@weak model => move |uri| { - model.open_playlist(uri); - }), + clone!( + #[weak] + model, + move |uri| { + model.open_playlist(uri); + } + ), ); } diff --git a/src/app/components/user_menu/user_menu.rs b/src/app/components/user_menu/user_menu.rs index 0a3ce98e..6a95fb85 100644 --- a/src/app/components/user_menu/user_menu.rs +++ b/src/app/components/user_menu/user_menu.rs @@ -27,25 +27,35 @@ impl UserMenu { action_group.add_action(&{ let logout = SimpleAction::new("logout", None); - logout.connect_activate(clone!(@weak model => move |_, _| { - model.logout(); - })); + logout.connect_activate(clone!( + #[weak] + model, + move |_, _| { + model.logout(); + } + )); logout }); action_group.add_action(&{ let settings_action = SimpleAction::new("settings", None); - settings_action.connect_activate(clone!(@weak model => move |_, _| { + settings_action.connect_activate(move |_, _| { settings.show_self(); - })); + }); settings_action }); action_group.add_action(&{ let about_action = SimpleAction::new("about", None); - about_action.connect_activate(clone!(@weak about, @weak parent => move |_, _| { - about.present(&parent); - })); + about_action.connect_activate(clone!( + #[weak] + about, + #[weak] + parent, + move |_, _| { + about.present(Some(&parent)); + } + )); about_action }); diff --git a/src/app/components/window/mod.rs b/src/app/components/window/mod.rs index eb4ff2fa..fdf112ca 100644 --- a/src/app/components/window/mod.rs +++ b/src/app/components/window/mod.rs @@ -23,8 +23,12 @@ impl MainWindow { app_model: Rc, window: libadwaita::ApplicationWindow, ) -> Self { - window.connect_close_request( - clone!(@weak app_model => @default-return glib::Propagation::Proceed, move |window| { + window.connect_close_request(clone!( + #[weak] + app_model, + #[upgrade_or] + glib::Propagation::Proceed, + move |window| { let state = app_model.get_state(); if state.playback.is_playing() { window.set_visible(false); @@ -32,8 +36,8 @@ impl MainWindow { } else { glib::Propagation::Proceed } - }), - ); + } + )); window.connect_default_height_notify(Self::save_window_geometry); window.connect_default_width_notify(Self::save_window_geometry); diff --git a/src/app/mod.rs b/src/app/mod.rs index b1e1a3a7..59fdda49 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -164,11 +164,8 @@ impl App { let home_listbox: gtk::ListBox = builder.object("home_listbox").unwrap(); let model = NavigationModel::new(Rc::clone(&app_model), dispatcher.box_clone()); // This is where components that are not created initially will be assembled - let screen_factory = ScreenFactory::new( - Rc::clone(&app_model), - dispatcher.box_clone(), - worker, - ); + let screen_factory = + ScreenFactory::new(Rc::clone(&app_model), dispatcher.box_clone(), worker); Box::new(Navigation::new( model, split_view, diff --git a/src/app/models/artist_model.rs b/src/app/models/artist_model.rs index 594e224b..89ee8617 100644 --- a/src/app/models/artist_model.rs +++ b/src/app/models/artist_model.rs @@ -41,7 +41,7 @@ mod imp { type Type = super::ArtistModel; type ParentType = glib::Object; } - + #[glib::derived_properties] impl ObjectImpl for ArtistModel {} } diff --git a/src/app/models/songs/song_list_model.rs b/src/app/models/songs/song_list_model.rs index 9a96734c..9275ed09 100644 --- a/src/app/models/songs/song_list_model.rs +++ b/src/app/models/songs/song_list_model.rs @@ -79,12 +79,16 @@ impl SongListModel { fn notify_changes(&self, changes: impl IntoIterator + 'static) { // Eh, not great but that works if cfg!(not(test)) { - glib::source::idle_add_local_once(clone!(@weak self as s => move || { - for ListRangeUpdate(a, b, c) in changes.into_iter() { - debug!("pos {}, removed {}, added {}", a, b, c); - s.items_changed(a as u32, b as u32, c as u32); + glib::source::idle_add_local_once(clone!( + #[weak(rename_to = s)] + self, + move || { + for ListRangeUpdate(a, b, c) in changes.into_iter() { + debug!("pos {}, removed {}, added {}", a, b, c); + s.items_changed(a as u32, b as u32, c as u32); + } } - })); + )); } } @@ -207,7 +211,7 @@ mod imp { type ParentType = glib::Object; type Interfaces = (ListModel,); } - + #[glib::derived_properties] impl ObjectImpl for SongListModel {} diff --git a/src/main.rs b/src/main.rs index c6fee1f5..b7711722 100644 --- a/src/main.rs +++ b/src/main.rs @@ -143,12 +143,16 @@ fn setup_credits(about: libadwaita::AboutDialog) { fn register_actions(app: >k::Application, sender: UnboundedSender) { let quit = SimpleAction::new("quit", None); - quit.connect_activate(clone!(@weak app => move |_, _| { - if let Some(existing_window) = app.active_window() { - existing_window.close(); + quit.connect_activate(clone!( + #[weak] + app, + move |_, _| { + if let Some(existing_window) = app.active_window() { + existing_window.close(); + } + app.quit(); } - app.quit(); - })); + )); app.add_action(&quit); app.add_action(&make_action(