diff --git a/src/ui/debug_view.rs b/src/ui/debug_view.rs index 62a4885..00edb99 100644 --- a/src/ui/debug_view.rs +++ b/src/ui/debug_view.rs @@ -2,12 +2,10 @@ use super::term_widget::TermWidget; use crate::log_level::LogLevel; use crate::log_parser::MonadoLog; use crate::ui::app::{DebugCopyEnvVarsAction, DebugOpenDataAction, DebugOpenPrefixAction}; -use crate::ui::util::copy_text; use gtk::glib::clone; use gtk::prelude::*; use relm4::prelude::*; use relm4::{ComponentSender, SimpleComponent}; -use vte4::TerminalExt; #[derive(Debug)] pub enum SearchDirection { @@ -243,29 +241,6 @@ impl SimpleComponent for DebugView { }; model.term.set_color_scheme(); - { - let sc = gtk::ShortcutController::new(); - let term = model.term.term.clone(); - sc.add_shortcut(gtk::Shortcut::new( - gtk::ShortcutTrigger::parse_string("c"), - Some(gtk::CallbackAction::new(move |_, _| { - if let Some(text) = term.text_selected(vte4::Format::Text) { - copy_text(text.as_str()); - } - gtk::glib::Propagation::Proceed - })), - )); - let term = model.term.term.clone(); - sc.add_shortcut(gtk::Shortcut::new( - gtk::ShortcutTrigger::parse_string("a"), - Some(gtk::CallbackAction::new(move |_, _| { - term.select_all(); - gtk::glib::Propagation::Proceed - })), - )); - model.term.term.add_controller(sc); - } - let widgets = view_output!(); model.searchbar = Some(widgets.searchbar.clone()); model.search_entry = Some(widgets.search_entry.clone()); diff --git a/src/ui/term_widget.rs b/src/ui/term_widget.rs index b51b0c6..786679d 100644 --- a/src/ui/term_widget.rs +++ b/src/ui/term_widget.rs @@ -1,6 +1,8 @@ -use gtk4::gdk; +use gtk4::{gdk, glib::clone}; use relm4::adw; -use vte4::{Terminal, TerminalExt, TerminalExtManual}; +use vte4::{Terminal, TerminalExt, TerminalExtManual, WidgetExt}; + +use super::util::copy_text; const MAX_SCROLLBACK: u32 = 2000; @@ -34,7 +36,48 @@ impl TermWidget { .child(&term) .build(); - Self { container, term } + let this = Self { container, term }; + + this.setup_shortcuts(); + + this + } + + fn setup_shortcuts(&self) { + let sc = gtk4::ShortcutController::new(); + ["c", "c"] + .iter() + .for_each(|combo| { + sc.add_shortcut(gtk4::Shortcut::new( + gtk4::ShortcutTrigger::parse_string(combo), + Some(gtk4::CallbackAction::new(clone!( + #[strong(rename_to = term)] + self.term, + move |_, _| { + if let Some(text) = term.text_selected(vte4::Format::Text) { + copy_text(text.as_str()); + } + gtk4::glib::Propagation::Proceed + } + ))), + )); + }); + ["a", "a"] + .iter() + .for_each(|combo| { + sc.add_shortcut(gtk4::Shortcut::new( + gtk4::ShortcutTrigger::parse_string(combo), + Some(gtk4::CallbackAction::new(clone!( + #[strong(rename_to = term)] + self.term, + move |_, _| { + term.select_all(); + gtk4::glib::Propagation::Proceed + } + ))), + )); + }); + self.term.add_controller(sc); } pub fn set_color_scheme(&self) {