close search on escape action

This commit is contained in:
yggverse 2024-12-16 16:49:19 +02:00
parent 94b8227088
commit 4b357f8229
4 changed files with 40 additions and 11 deletions

View file

@ -6,7 +6,7 @@ use gemini::Gemini;
use search::Search;
use source::Source;
use super::{TabAction, WindowAction};
use super::{BrowserAction, TabAction, WindowAction};
use adw::Clamp;
use gtk::{
glib::Uri,
@ -31,10 +31,14 @@ impl Text {
pub fn new_gemini(
gemtext: &str,
base: &Uri,
(window_action, tab_action): (Rc<WindowAction>, Rc<TabAction>),
(browser_action, window_action, tab_action): (
&Rc<BrowserAction>,
&Rc<WindowAction>,
&Rc<TabAction>,
),
) -> Self {
// Init components
let gemini = Gemini::new(gemtext, base, (window_action.clone(), tab_action));
let gemini = Gemini::new(gemtext, base, (window_action, tab_action));
let search = Rc::new(Search::new(&gemini.reader.buffer));
// Init main widget
@ -55,6 +59,13 @@ impl Text {
);
// Connect events
browser_action.escape.connect_activate({
let close = search.close.clone();
move || {
close.activate();
}
});
window_action.find.connect_activate({
let search = search.clone();
move |_| {

View file

@ -15,9 +15,15 @@ pub struct Gemini {
impl Gemini {
// Construct
pub fn new(gemtext: &str, base: &Uri, actions: (Rc<WindowAction>, Rc<TabAction>)) -> Self {
pub fn new(
gemtext: &str,
base: &Uri,
(window_action, tab_action): (&Rc<WindowAction>, &Rc<TabAction>),
) -> Self {
// Init components
let reader = Rc::new(Reader::new(gemtext, base, actions).unwrap()); // @TODO handle errors
let reader = Rc::new(
Reader::new(gemtext, base, (window_action.clone(), tab_action.clone())).unwrap(),
); // @TODO handle errors
let widget = Rc::new(Widget::new(&reader.widget.text_view));
// Result