From 8b2ae6d4647b2d55c0bb153a9d1a2b433a6084ec Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 27 Jun 2018 20:19:03 +0300 Subject: [PATCH] Headerbar: Remove the requirment of a window to construct it. --- hammond-gtk/src/app.rs | 4 +++- hammond-gtk/src/headerbar.rs | 20 ++++---------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 3b3a354..18bba1b 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -88,7 +88,9 @@ impl App { let content = Content::new(&sender).expect("Content Initialization failed."); // Create the headerbar - let header = Header::new(&content, &window, &sender); + let header = Header::new(&content, &sender); + // Add the Headerbar to the window. + window.set_titlebar(&header.container); // Add the content main stack to the overlay. let overlay = gtk::Overlay::new(); diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index ce8b550..24dced8 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -18,7 +18,7 @@ use std::rc::Rc; #[derive(Debug, Clone)] // TODO: split this into smaller pub struct Header { - container: gtk::HeaderBar, + pub container: gtk::HeaderBar, switch: gtk::StackSwitcher, back: gtk::Button, show_title: gtk::Label, @@ -180,22 +180,13 @@ impl Default for Header { // TODO: Refactor components into smaller widgets. impl Header { - pub fn new( - content: &Content, - window: >k::ApplicationWindow, - sender: &Sender, - ) -> Rc { + pub fn new(content: &Content, sender: &Sender) -> Rc { let h = Rc::new(Header::default()); - Self::init(&h, content, window, &sender); + Self::init(&h, content, &sender); h } - pub fn init( - s: &Rc, - content: &Content, - window: >k::ApplicationWindow, - sender: &Sender, - ) { + pub fn init(s: &Rc, content: &Content, sender: &Sender) { let weak = Rc::downgrade(s); s.switch.set_stack(&content.get_stack()); @@ -212,9 +203,6 @@ impl Header { weak.upgrade().map(|h| h.add.on_add_clicked(&sender)); })); - // Add the Headerbar to the window. - window.set_titlebar(&s.container); - let switch = &s.switch; let add_toggle = &s.add.toggle; let show_title = &s.show_title;