From 2adde0008df70845a089c43ea2540f39c56514fe Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 6 Oct 2024 05:52:16 +0300 Subject: [PATCH] make separated widget mod --- src/app/browser/header.rs | 17 +++++++++-------- src/app/browser/header/widget.rs | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 src/app/browser/header/widget.rs diff --git a/src/app/browser/header.rs b/src/app/browser/header.rs index 0f9cc5b3..6300147a 100644 --- a/src/app/browser/header.rs +++ b/src/app/browser/header.rs @@ -1,16 +1,19 @@ mod subject; mod tray; +mod widget; use subject::Subject; use tray::Tray; +use widget::Widget; use gtk::{gio::SimpleAction, glib::GString, HeaderBar}; use std::sync::Arc; pub struct Header { - gobject: HeaderBar, - subject: Subject, + subject: Arc, + // tray: Arc, + widget: Arc, } impl Header { @@ -43,15 +46,13 @@ impl Header { action_tab_pin, ); - let subject = Subject::new(); + let subject = Arc::new(Subject::new()); // Init widget - let gobject = HeaderBar::builder().build(); - gobject.pack_start(tray.gobject()); - gobject.set_title_widget(Some(subject.gobject())); + let widget = Arc::new(Widget::new(tray.gobject(), Some(subject.gobject()))); // Return new struct - Self { gobject, subject } + Self { subject, widget } } // Actions @@ -61,6 +62,6 @@ impl Header { // Getters pub fn gobject(&self) -> &HeaderBar { - &self.gobject + &self.widget.gobject() } } diff --git a/src/app/browser/header/widget.rs b/src/app/browser/header/widget.rs new file mode 100644 index 00000000..1811d194 --- /dev/null +++ b/src/app/browser/header/widget.rs @@ -0,0 +1,22 @@ +use gtk::{Box, HeaderBar}; + +pub struct Widget { + gobject: HeaderBar, +} + +impl Widget { + // Construct + pub fn new(tray: &Box, title_widget: Option<&Box>) -> Self { + let gobject = HeaderBar::builder().build(); + + gobject.pack_start(tray); + gobject.set_title_widget(title_widget); + + Self { gobject } + } + + // Getters + pub fn gobject(&self) -> &HeaderBar { + &self.gobject + } +}