From 2bfd4e05bdca9bae9b198efa58454c82fb8314d7 Mon Sep 17 00:00:00 2001 From: Ilya Zlobintsev Date: Tue, 31 Oct 2023 09:48:31 +0200 Subject: [PATCH] feat: use SearchEntry directly instead of SearchBar in the vulkan features window chore: bump gtk-rs --- Cargo.lock | 99 +++++++++---------- lact-gui/Cargo.toml | 3 +- lact-gui/src/app/mod.rs | 13 +-- .../vulkan_info/feature_model/imp.rs | 43 ++------ .../root_stack/info_page/vulkan_info/mod.rs | 9 +- 5 files changed, 62 insertions(+), 105 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 461c0f3..b954a92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,11 +331,11 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cairo-rs" -version = "0.17.10" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a" +checksum = "1c0466dfa8c0ee78deef390c274ad756801e0a6dbb86c5ef0924a298c5761c4d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cairo-sys-rs", "glib", "libc", @@ -345,9 +345,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.17.10" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", @@ -766,11 +766,10 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.17.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717" +checksum = "bbc9c2ed73a81d556b65d08879ba4ee58808a6b1927ce915262185d6d547c6f3" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", @@ -780,9 +779,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.17.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", @@ -793,11 +792,10 @@ dependencies = [ [[package]] name = "gdk4" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff" +checksum = "7edb019ad581f8ecf8ea8e4baa6df7c483a95b5a59be3140be6a9c3b0c632af6" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk4-sys", @@ -809,9 +807,9 @@ dependencies = [ [[package]] name = "gdk4-sys" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64" +checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -853,11 +851,10 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "gio" -version = "0.17.10" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a" +checksum = "57052f84e8e5999b258e8adf8f5f2af0ac69033864936b8b6838321db2f759b1" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", @@ -873,9 +870,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.17.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", @@ -886,11 +883,11 @@ dependencies = [ [[package]] name = "glib" -version = "0.17.10" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b" +checksum = "1c316afb01ce8067c5eaab1fc4f2cd47dc21ce7b6296358605e2ffab23ccbd19" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "futures-channel", "futures-core", "futures-executor", @@ -909,24 +906,23 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.17.10" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26" +checksum = "f8da903822b136d42360518653fcf154455defc437d3e7a81475bf9a95ff1e47" dependencies = [ - "anyhow", "heck", "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "glib-sys" -version = "0.17.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", "system-deps", @@ -934,9 +930,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.17.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", @@ -945,9 +941,9 @@ dependencies = [ [[package]] name = "graphene-rs" -version = "0.17.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9" +checksum = "3b2228cda1505613a7a956cca69076892cfbda84fc2b7a62b94a41a272c0c401" dependencies = [ "glib", "graphene-sys", @@ -956,9 +952,9 @@ dependencies = [ [[package]] name = "graphene-sys" -version = "0.17.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d" +checksum = "cc4144cee8fc8788f2a9b73dc5f1d4e1189d1f95305c4cb7bd9c1af1cfa31f59" dependencies = [ "glib-sys", "libc", @@ -968,11 +964,10 @@ dependencies = [ [[package]] name = "gsk4" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c" +checksum = "0d958e351d2f210309b32d081c832d7de0aca0b077aa10d88336c6379bd01f7e" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk4", "glib", @@ -984,9 +979,9 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0" +checksum = "12bd9e3effea989f020e8f1ff3fa3b8c63ba93d43b899c11a118868853a56d55" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -1000,11 +995,10 @@ dependencies = [ [[package]] name = "gtk4" -version = "0.6.6" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b28a32a04cd75cef14a0983f8b0c669e0fe152a0a7725accdeb594e2c764c88b" +checksum = "5aeb51aa3e9728575a053e1f43543cd9992ac2477e1b186ad824fd4adfb70842" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1017,15 +1011,14 @@ dependencies = [ "gtk4-macros", "gtk4-sys", "libc", - "once_cell", "pango", ] [[package]] name = "gtk4-macros" -version = "0.6.6" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a4d6b61570f76d3ee542d984da443b1cd69b6105264c61afec3abed08c2500f" +checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f" dependencies = [ "anyhow", "proc-macro-crate", @@ -1037,9 +1030,9 @@ dependencies = [ [[package]] name = "gtk4-sys" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f" +checksum = "54d8c4aa23638ce9faa2caf7e2a27d4a1295af2155c8e8d28c4d4eeca7a65eb8" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1210,7 +1203,6 @@ dependencies = [ "gtk4", "lact-client", "lact-daemon", - "once_cell", "pretty_assertions", "tracing", "tracing-subscriber", @@ -1423,11 +1415,10 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.17.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48" +checksum = "06a9e54b831d033206160096b825f2070cf5fda7e35167b1c01e9e774f9202d1" dependencies = [ - "bitflags 1.3.2", "gio", "glib", "libc", @@ -1437,9 +1428,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.17.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", diff --git a/lact-gui/Cargo.toml b/lact-gui/Cargo.toml index 914faf4..05c7a84 100644 --- a/lact-gui/Cargo.toml +++ b/lact-gui/Cargo.toml @@ -11,8 +11,7 @@ gtk-tests = [] [dependencies] lact-client = { path = "../lact-client" } lact-daemon = { path = "../lact-daemon" } -gtk = { version = "0.6", package = "gtk4", features = ["v4_6"] } -once_cell = "1.18.0" +gtk = { version = "0.7", package = "gtk4", features = ["v4_6"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } anyhow = "1.0" diff --git a/lact-gui/src/app/mod.rs b/lact-gui/src/app/mod.rs index 1e444ba..0104325 100644 --- a/lact-gui/src/app/mod.rs +++ b/lact-gui/src/app/mod.rs @@ -6,7 +6,7 @@ use crate::{APP_ID, GUI_VERSION}; use anyhow::{anyhow, Context}; use apply_revealer::ApplyRevealer; use glib::clone; -use gtk::glib::timeout_future; +use gtk::glib::{timeout_future, ControlFlow}; use gtk::{gio::ApplicationFlags, prelude::*, *}; use header::Header; use lact_client::schema::request::{ConfirmCommand, SetClocksCommand}; @@ -245,7 +245,7 @@ impl App { let _guard = context.acquire(); // The loop that gets stats - let (sender, receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); + let (sender, receiver) = glib::MainContext::channel(glib::Priority::default()); context.spawn_local( clone!(@strong self.daemon_client as daemon_client => async move { @@ -283,7 +283,7 @@ impl App { } } - glib::Continue(true) + ControlFlow::Continue }), ); } @@ -446,7 +446,8 @@ impl App { Duration::from_secs(1), clone!(@strong dialog, @strong self as app, @strong gpu_id, @strong confirmed => move || { if confirmed.load(std::sync::atomic::Ordering::SeqCst) { - return Continue(false) + return ControlFlow::Break; + } delay -= 1; @@ -457,9 +458,9 @@ impl App { dialog.hide(); app.set_initial(&gpu_id); - Continue(false) + ControlFlow::Break } else { - Continue(true) + ControlFlow::Continue } }), ); diff --git a/lact-gui/src/app/root_stack/info_page/vulkan_info/feature_model/imp.rs b/lact-gui/src/app/root_stack/info_page/vulkan_info/feature_model/imp.rs index b7ef7b0..305ecf9 100644 --- a/lact-gui/src/app/root_stack/info_page/vulkan_info/feature_model/imp.rs +++ b/lact-gui/src/app/root_stack/info_page/vulkan_info/feature_model/imp.rs @@ -1,15 +1,17 @@ use gio::subclass::prelude::*; use gtk::{ gio, - glib::{self, ParamSpec, ParamSpecBoolean, ParamSpecString}, + glib::{self, Properties}, prelude::*, }; -use once_cell::sync::Lazy; use std::cell::{Cell, RefCell}; -#[derive(Debug, Default)] +#[derive(Debug, Default, Properties)] +#[properties(wrapper_type = super::FeatureModel)] pub struct FeatureModel { + #[property(set, get)] pub name: RefCell, + #[property(set, get)] pub supported: Cell, } @@ -19,36 +21,5 @@ impl ObjectSubclass for FeatureModel { type Type = super::FeatureModel; } -impl ObjectImpl for FeatureModel { - fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { - vec![ - ParamSpecString::builder("name").build(), - ParamSpecBoolean::builder("supported").build(), - ] - }); - PROPERTIES.as_ref() - } - - fn set_property(&self, _id: usize, value: &glib::Value, pspec: &ParamSpec) { - match pspec.name() { - "name" => { - let name = value.get().expect("Name needs to be a string"); - self.name.replace(name); - } - "supported" => { - let supported = value.get().expect("Supported needs to be a bool"); - self.supported.replace(supported); - } - _ => unimplemented!(), - } - } - - fn property(&self, _id: usize, pspec: &ParamSpec) -> glib::Value { - match pspec.name() { - "name" => self.name.borrow().to_value(), - "supported" => self.supported.get().to_value(), - _ => unimplemented!(), - } - } -} +#[glib::derived_properties] +impl ObjectImpl for FeatureModel {} diff --git a/lact-gui/src/app/root_stack/info_page/vulkan_info/mod.rs b/lact-gui/src/app/root_stack/info_page/vulkan_info/mod.rs index 50c9a0f..0aed1c5 100644 --- a/lact-gui/src/app/root_stack/info_page/vulkan_info/mod.rs +++ b/lact-gui/src/app/root_stack/info_page/vulkan_info/mod.rs @@ -104,7 +104,7 @@ fn show_list_window(title: &str, items: &[FeatureModel]) { .resizable(false) .build(); - let base_model = gio::ListStore::new(FeatureModel::static_type()); + let base_model = gio::ListStore::new::(); base_model.extend_from_slice(items); let expression = PropertyExpression::new(FeatureModel::static_type(), Expression::NONE, "name"); @@ -122,11 +122,6 @@ fn show_list_window(title: &str, items: &[FeatureModel]) { filter.set_search(Some(entry.text().as_str())); } })); - let search_bar = SearchBar::builder() - .child(&entry) - .search_mode_enabled(true) - .key_capture_widget(&window) - .build(); let filter_model = FilterListModel::builder() .model(&base_model) @@ -187,7 +182,7 @@ fn show_list_window(title: &str, items: &[FeatureModel]) { .build(); let vbox = Box::new(Orientation::Vertical, 5); - vbox.append(&search_bar); + vbox.append(&entry); vbox.append(&scroll_window); window.set_child(Some(&vbox));