diff --git a/src/browser/header/tray/mod.rs b/src/browser/header/tray/mod.rs index 5ae0922c..88a4d165 100644 --- a/src/browser/header/tray/mod.rs +++ b/src/browser/header/tray/mod.rs @@ -5,14 +5,18 @@ use gtk::prelude::BoxExt; use gtk::Box; pub fn new() -> Box { + // Init components + let tab = tab::new(); + + // Init widget let tray = Box::builder() .orientation(gtk::Orientation::Horizontal) .spacing(8) .build(); // Compose childs - tray.append(&menu::new()); - tray.append(&tab::new()); + tray.append(&menu::new()); // @TODO + tray.append(tab.widget.as_ref()); - tray + tray // @TODO struct } diff --git a/src/browser/header/tray/tab/mod.rs b/src/browser/header/tray/tab/mod.rs index 71883583..18ec5e7f 100644 --- a/src/browser/header/tray/tab/mod.rs +++ b/src/browser/header/tray/tab/mod.rs @@ -1,10 +1,27 @@ +use std::sync::Arc; + +use gtk::prelude::{ButtonExt, WidgetExt}; use gtk::Button; -pub fn new() -> Button { - let tab = Button::builder() - .icon_name("tab-new-symbolic") - .tooltip_text("New tab") - .build(); - - return tab; +pub struct Tab { + pub widget: Arc, +} + +pub fn new() -> Tab { + // Init widget + let widget = Arc::new( + Button::builder() + .icon_name("tab-new-symbolic") + .tooltip_text("New tab") + .build(), + ); + + // Init events + widget.connect_clicked(|this| { + this.activate_action("win.tab_append", None) + .expect("The action does not exist"); + }); + + // Result + Tab { widget } }