use tuple for actions

This commit is contained in:
yggverse 2024-11-12 18:47:52 +02:00
parent b70a5a7867
commit 61010e0a42
6 changed files with 24 additions and 39 deletions

View File

@ -50,9 +50,7 @@ impl Item {
let page = Rc::new(Page::new(
id.clone(),
browser_action,
window_action,
action.clone(),
(browser_action, window_action, action.clone()),
));
let widget = Rc::new(Widget::new(

View File

@ -44,20 +44,15 @@ pub struct Page {
impl Page {
// Constructors
pub fn new(
id: GString,
browser_action: Rc<BrowserAction>,
window_action: Rc<WindowAction>,
tab_action: Rc<TabAction>,
) -> Self {
pub fn new(id: GString, action: (Rc<BrowserAction>, Rc<WindowAction>, Rc<TabAction>)) -> Self {
// Init components
let content = Rc::new(Content::new(window_action.clone(), tab_action.clone()));
let content = Rc::new(Content::new((action.1.clone(), action.2.clone())));
let navigation = Rc::new(Navigation::new(
browser_action.clone(),
window_action.clone(),
tab_action.clone(),
));
let navigation = Rc::new(Navigation::new((
action.0.clone(),
action.1.clone(),
action.2.clone(),
)));
let input = Rc::new(Input::new());
@ -75,8 +70,8 @@ impl Page {
cancellable: RefCell::new(Cancellable::new()),
id,
// Actions
browser_action,
tab_action,
browser_action: action.0,
tab_action: action.2,
// Components
content,
navigation,

View File

@ -25,11 +25,11 @@ impl Content {
// Construct
/// Create new container for different components
pub fn new(window_action: Rc<WindowAction>, tab_action: Rc<TabAction>) -> Self {
pub fn new(action: (Rc<WindowAction>, Rc<TabAction>)) -> Self {
Self {
gobject: Box::builder().orientation(Orientation::Vertical).build(),
window_action,
tab_action,
window_action: action.0,
tab_action: action.1,
}
}

View File

@ -30,17 +30,13 @@ pub struct Navigation {
}
impl Navigation {
pub fn new(
browser_action: Rc<BrowserAction>,
window_action: Rc<WindowAction>,
tab_action: Rc<TabAction>,
) -> Self {
pub fn new(action: (Rc<BrowserAction>, Rc<WindowAction>, Rc<TabAction>)) -> Self {
// Init components
let home = Rc::new(Home::new(window_action.clone()));
let history = Rc::new(History::new(window_action.clone()));
let reload = Rc::new(Reload::new(window_action.clone()));
let request = Rc::new(Request::new(browser_action, tab_action));
let bookmark = Rc::new(Bookmark::new(window_action));
let home = Rc::new(Home::new(action.1.clone()));
let history = Rc::new(History::new(action.1.clone()));
let reload = Rc::new(Reload::new(action.1.clone()));
let request = Rc::new(Request::new((action.0, action.2)));
let bookmark = Rc::new(Bookmark::new(action.1));
// Init widget
let widget = Rc::new(Widget::new(

View File

@ -18,13 +18,9 @@ pub struct Request {
impl Request {
// Construct
pub fn new(
// Actions
browser_action: Rc<BrowserAction>,
tab_action: Rc<TabAction>,
) -> Self {
pub fn new(action: (Rc<BrowserAction>, Rc<TabAction>)) -> Self {
Self {
widget: Rc::new(Widget::new(browser_action, tab_action)),
widget: Rc::new(Widget::new(action)),
}
}

View File

@ -27,7 +27,7 @@ pub struct Widget {
impl Widget {
// Construct
pub fn new(browser_action: Rc<BrowserAction>, tab_action: Rc<TabAction>) -> Self {
pub fn new(action: (Rc<BrowserAction>, Rc<TabAction>)) -> Self {
// Init animated progress bar state
let progress = Rc::new(Progress {
fraction: RefCell::new(0.0),
@ -42,11 +42,11 @@ impl Widget {
// Connect events
gobject.connect_changed(move |_| {
browser_action.update().activate(None);
action.0.update().activate(None);
});
gobject.connect_activate(move |this| {
tab_action.load().activate(Some(&this.text()), true);
action.1.load().activate(Some(&this.text()), true);
});
gobject.connect_state_flags_changed({