feat: use SearchEntry directly instead of SearchBar in the vulkan features window

chore: bump gtk-rs
This commit is contained in:
Ilya Zlobintsev
2023-10-31 09:48:31 +02:00
parent a511119b86
commit 2bfd4e05bd
5 changed files with 62 additions and 105 deletions

99
Cargo.lock generated
View File

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

View File

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

View File

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

View File

@@ -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<String>,
#[property(set, get)]
pub supported: Cell<bool>,
}
@@ -19,36 +21,5 @@ impl ObjectSubclass for FeatureModel {
type Type = super::FeatureModel;
}
impl ObjectImpl for FeatureModel {
fn properties() -> &'static [glib::ParamSpec] {
static PROPERTIES: Lazy<Vec<ParamSpec>> = 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 {}

View File

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