From 39bbfcbdda4a61089f6e6f2e9043f9cb2044582d Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 16 Mar 2025 12:06:27 +0200 Subject: [PATCH] implement shortcut controller for titan input --- .../window/tab/item/page/input/titan.rs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/app/browser/window/tab/item/page/input/titan.rs b/src/app/browser/window/tab/item/page/input/titan.rs index 585c7755..b1335452 100644 --- a/src/app/browser/window/tab/item/page/input/titan.rs +++ b/src/app/browser/window/tab/item/page/input/titan.rs @@ -6,7 +6,11 @@ mod text; use control::Control; use file::File; -use gtk::{glib::Bytes, Notebook}; +use gtk::{ + glib::Bytes, + prelude::{DisplayExt, WidgetExt}, + Notebook, +}; pub use header::Header; use tab::Tab; use text::Text; @@ -71,6 +75,28 @@ impl Titan for gtk::Box { }; // Init events + text.text_view.add_controller({ + const SHORTCUT: &str = "Return"; // @TODO optional + let c = gtk::ShortcutController::new(); + c.add_shortcut( + gtk::Shortcut::builder() + .trigger(>k::ShortcutTrigger::parse_string(SHORTCUT).unwrap()) + .action(>k::CallbackAction::new({ + let u = control.upload.clone(); + move |_, _| { + if u.is_sensitive() { + u.emit_activate(); + } else { + u.display().beep(); + } + gtk::glib::Propagation::Stop + } + })) + .build(), + ); + c + }); + control.options.connect_clicked({ let text = text.clone(); let file = file.clone();