diff --git a/Cargo.toml b/Cargo.toml index ee5f1b76..fade2567 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,7 @@ gst_gtk = { version = "0.12", package = "gst-plugin-gtk4" } gst_pbutils = { version = "0.22", package = "gstreamer-pbutils" } gst_play = { version = "0.22", package = "gstreamer-play" } gst_video = { version = "0.22", package = "gstreamer-video" } -gtk = { package = "gtk4", version = "0.8", features = ["gnome_44"] } +gtk = { package = "gtk4", version = "0.8", features = ["gnome_45"] } shumate = { package = "libshumate", version = "0.5" } sourceview = { package = "sourceview5", version = "0.8" } diff --git a/meson.build b/meson.build index dcad04f4..02f91baa 100644 --- a/meson.build +++ b/meson.build @@ -19,9 +19,9 @@ if pre_release_version != '' endif full_version = version -dependency('glib-2.0', version: '>= 2.72') # update when changing gtk version -dependency('gio-2.0', version: '>= 2.72') # always same version as glib -dependency('gtk4', version: '>= 4.10.0') +dependency('glib-2.0', version: '>= 2.76') # update when changing gtk version +dependency('gio-2.0', version: '>= 2.76') # always same version as glib +dependency('gtk4', version: '>= 4.12.0') dependency( 'libadwaita-1', version: '>= 1.5.beta', fallback: ['libadwaita', 'libadwaita_dep'], diff --git a/src/contrib/qr_code_scanner/qr_code_detector.rs b/src/contrib/qr_code_scanner/qr_code_detector.rs index 38f74cfa..edf4bc66 100644 --- a/src/contrib/qr_code_scanner/qr_code_detector.rs +++ b/src/contrib/qr_code_scanner/qr_code_detector.rs @@ -1,5 +1,3 @@ -use std::convert::AsRef; - use futures_channel::mpsc; use gst_video::{prelude::*, video_frame::VideoFrameRef, VideoInfo}; use image::{GenericImage, GenericImageView, Luma}; diff --git a/src/session/model/room/mod.rs b/src/session/model/room/mod.rs index 34fcd44b..84a54737 100644 --- a/src/session/model/room/mod.rs +++ b/src/session/model/room/mod.rs @@ -880,9 +880,9 @@ impl Room { let mut category = RoomType::Normal; if let Ok(Some(tags)) = tags.await.unwrap() { - if tags.get(&TagName::Favorite).is_some() { + if tags.contains_key(&TagName::Favorite) { category = RoomType::Favorite; - } else if tags.get(&TagName::LowPriority).is_some() { + } else if tags.contains_key(&TagName::LowPriority) { category = RoomType::LowPriority; } } diff --git a/src/session/model/sidebar_data/item_list.rs b/src/session/model/sidebar_data/item_list.rs index ecff9507..67037cb4 100644 --- a/src/session/model/sidebar_data/item_list.rs +++ b/src/session/model/sidebar_data/item_list.rs @@ -43,7 +43,7 @@ impl SidebarItem { } mod imp { - use std::cell::{Cell, OnceCell}; + use std::cell::OnceCell; use super::*; diff --git a/src/session/view/account_settings/user_sessions_page/user_session_row.rs b/src/session/view/account_settings/user_sessions_page/user_session_row.rs index 9e7ea1c2..6d172378 100644 --- a/src/session/view/account_settings/user_sessions_page/user_session_row.rs +++ b/src/session/view/account_settings/user_sessions_page/user_session_row.rs @@ -1,4 +1,4 @@ -use adw::{self, prelude::*}; +use adw::prelude::*; use gettextrs::gettext; use gtk::{glib, glib::clone, subclass::prelude::*, CompositeTemplate}; diff --git a/src/session/view/content/room_history/mod.rs b/src/session/view/content/room_history/mod.rs index 4ac2ea72..d7b6993d 100644 --- a/src/session/view/content/room_history/mod.rs +++ b/src/session/view/content/room_history/mod.rs @@ -13,7 +13,7 @@ use std::time::Duration; use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; -use gtk::{gdk, gio, glib, glib::clone, CompositeTemplate}; +use gtk::{gdk, gio, glib, glib::clone, graphene::Point, CompositeTemplate}; use matrix_sdk::ruma::EventId; use ruma::{ api::client::receipt::create_receipt::v3::ReceiptType, events::receipt::ReceiptThread, @@ -722,8 +722,9 @@ impl RoomHistory { imp.is_auto_scrolling.set(true); - imp.scrolled_window - .emit_scroll_child(gtk::ScrollType::End, false); + let num_events = self.selection_model().n_items(); + imp.listview + .scroll_to(num_events - 1, gtk::ListScrollFlags::FOCUS, None); } /// Set `RoomHistory` to stick to the bottom based on scrollbar position @@ -783,10 +784,9 @@ impl RoomHistory { if let Some(pos) = room.timeline().find_event_position(key) { let pos = pos as u32; - let _ = self - .imp() + self.imp() .listview - .activate_action("list.scroll-to-item", Some(&pos.to_variant())); + .scroll_to(pos, gtk::ListScrollFlags::FOCUS, None); } } @@ -862,15 +862,19 @@ impl RoomHistory { let listview = &*self.imp().listview; let mut child = listview.last_child(); // The visible part of the listview spans between 0 and max. - let max = listview.height() as f64; + let max = listview.height() as f32; while let Some(item) = child { // Vertical position of the top of the item. - let (_, top_pos) = item.translate_coordinates(listview, 0.0, 0.0).unwrap(); + let top_pos = item + .compute_point(listview, &Point::new(0.0, 0.0)) + .unwrap() + .y(); // Vertical position of the bottom of the item. - let (_, bottom_pos) = item - .translate_coordinates(listview, 0.0, item.height() as f64) - .unwrap(); + let bottom_pos = item + .compute_point(listview, &Point::new(0.0, item.height() as f32)) + .unwrap() + .y(); let top_in_view = top_pos > 0.0 && top_pos <= max; let bottom_in_view = bottom_pos > 0.0 && bottom_pos <= max; diff --git a/src/session_list/session_list_settings.rs b/src/session_list/session_list_settings.rs index 518763d4..a4b5b755 100644 --- a/src/session_list/session_list_settings.rs +++ b/src/session_list/session_list_settings.rs @@ -11,7 +11,6 @@ mod imp { use std::cell::RefCell; use super::*; - use crate::session::model::SessionSettings; #[derive(Debug, Default)] pub struct SessionListSettings {