mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-02 09:35:28 +00:00
reorganize reload action, add middle click handler
This commit is contained in:
parent
3ee6a03c30
commit
8b4d184ad7
5 changed files with 80 additions and 20 deletions
|
|
@ -1,21 +1,55 @@
|
|||
use super::WindowAction;
|
||||
use gtk::{prelude::ActionExt, Button};
|
||||
use super::{ItemAction, Request, TabAction, WindowAction};
|
||||
use crate::app::browser::window::action::Position;
|
||||
use gtk::{
|
||||
gdk::BUTTON_MIDDLE,
|
||||
prelude::{ActionExt, WidgetExt},
|
||||
Button, GestureClick,
|
||||
};
|
||||
use std::rc::Rc;
|
||||
|
||||
pub trait Reload {
|
||||
fn reload(action: &Rc<WindowAction>) -> Self;
|
||||
fn reload(
|
||||
action: (&Rc<WindowAction>, &Rc<TabAction>, &Rc<ItemAction>),
|
||||
request: &Rc<Request>,
|
||||
) -> Self;
|
||||
}
|
||||
|
||||
impl Reload for Button {
|
||||
fn reload(action: &Rc<WindowAction>) -> Self {
|
||||
Button::builder()
|
||||
.action_name(format!(
|
||||
"{}.{}",
|
||||
action.id,
|
||||
action.reload.simple_action.name()
|
||||
)) // @TODO
|
||||
fn reload(
|
||||
(window_action, tab_action, item_action): (
|
||||
&Rc<WindowAction>,
|
||||
&Rc<TabAction>,
|
||||
&Rc<ItemAction>,
|
||||
),
|
||||
request: &Rc<Request>,
|
||||
) -> Self {
|
||||
let button = Button::builder()
|
||||
.action_name(format!("{}.{}", tab_action.id, item_action.reload.name()))
|
||||
.icon_name("view-refresh-symbolic")
|
||||
.tooltip_text("Reload")
|
||||
.build()
|
||||
.build();
|
||||
|
||||
// Navigate home in the new tab (feature)
|
||||
let button_middle_controller = GestureClick::builder().button(BUTTON_MIDDLE).build();
|
||||
|
||||
button_middle_controller.connect_pressed({
|
||||
let request = request.clone();
|
||||
let window_action = window_action.clone();
|
||||
move |_, _, _, _| {
|
||||
if let Some(uri) = request.home() {
|
||||
window_action.append.activate_stateful_once(
|
||||
Position::After,
|
||||
Some(uri.to_string()),
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
button.add_controller(button_middle_controller);
|
||||
button
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue