From cb31b93ee1afc81233e3756b3fa5c1d085b3e37d Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Sat, 21 Dec 2024 03:09:15 +0100 Subject: [PATCH] imageWindow: Fix shortcuts not always working --- src/widgets/edit/crop.rs | 3 +- src/widgets/image/loading.rs | 13 +- src/widgets/image_window.rs | 7 +- src/widgets/image_window.ui | 5 + src/widgets/image_window/actions.rs | 231 ++++++++++++---------------- 5 files changed, 118 insertions(+), 141 deletions(-) diff --git a/src/widgets/edit/crop.rs b/src/widgets/edit/crop.rs index add0fa3..0b5e851 100644 --- a/src/widgets/edit/crop.rs +++ b/src/widgets/edit/crop.rs @@ -23,8 +23,9 @@ use adw::{glib, gtk}; use glycin::Operation; use crate::editing::preview::EditingError; +use crate::util::gettext::*; use crate::util::root::ParentWindow; -use crate::util::{gettext::*, ErrorType}; +use crate::util::ErrorType; use crate::widgets::edit::LpEditCropSelection; use crate::widgets::{LpEditWindow, LpImage}; diff --git a/src/widgets/image/loading.rs b/src/widgets/image/loading.rs index 30647bf..6c666e7 100644 --- a/src/widgets/image/loading.rs +++ b/src/widgets/image/loading.rs @@ -18,9 +18,8 @@ use decoder::DecoderError; -use crate::widgets::LpEditWindow; - use super::*; +use crate::widgets::LpEditWindow; impl imp::LpImage { // Set filename when (re)loading image @@ -290,14 +289,14 @@ impl imp::LpImage { async fn check_editable(&self) { let obj = self.obj(); - if let Some(mime_type) = dbg!(obj.metadata().mime_type()) { - if let Ok(supported_formats) = dbg!(glycin::config::Config::cached() + if let Some(mime_type) = obj.metadata().mime_type() { + if let Ok(supported_formats) = glycin::config::Config::cached() .await - .editor(&mime_type.as_str().into())) + .editor(&mime_type.as_str().into()) { - if dbg!(LpEditWindow::REQUIRED_OPERATIONS + if LpEditWindow::REQUIRED_OPERATIONS .iter() - .all(|x| supported_formats.operations.contains(x))) + .all(|x| supported_formats.operations.contains(x)) { self.editable.set(true); obj.notify_editable(); diff --git a/src/widgets/image_window.rs b/src/widgets/image_window.rs index 3e7404d..3870667 100644 --- a/src/widgets/image_window.rs +++ b/src/widgets/image_window.rs @@ -61,6 +61,9 @@ mod imp { #[properties(wrapper_type = super::LpImageWindow)] #[template(file = "image_window.ui")] pub struct LpImageWindow { + #[template_child] + pub(super) shortcut_controller: TemplateChild, + #[template_child] pub(super) headerbar: TemplateChild, #[template_child] @@ -140,7 +143,7 @@ mod imp { ); // Set up actions - Action::init_actions_and_bindings(klass); + Action::init_actions(klass); } } @@ -153,6 +156,8 @@ mod imp { let obj = self.obj(); + Action::add_bindings(&obj); + self.forward_click_gesture.connect_pressed(glib::clone!( #[weak] obj, diff --git a/src/widgets/image_window.ui b/src/widgets/image_window.ui index 26d9f05..f69d672 100644 --- a/src/widgets/image_window.ui +++ b/src/widgets/image_window.ui @@ -59,6 +59,11 @@