From bc0ce2f934e7a683523dfb80787bd93354386e4b Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sat, 21 Oct 2023 15:52:35 +0200 Subject: [PATCH] Implement fullscreen --- src/ui.rs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/ui.rs b/src/ui.rs index 9c1efde..6ddc1d1 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -8,6 +8,7 @@ use gtk4::{ use poppler::Page; pub struct Ui { + window: ApplicationWindow, bottom_bar: gtk4::Box, header_bar: gtk4::HeaderBar, page_indicator: gtk4::Label, @@ -60,14 +61,16 @@ impl DocumentCanvas { } pub fn toggle_fullscreen(ui: &Ui) { - match ui.header_bar.is_visible() { + match !ui.window.is_fullscreen() { true => { ui.header_bar.hide(); ui.bottom_bar.hide(); + ui.window.fullscreen(); } false => { ui.header_bar.show(); ui.bottom_bar.show(); + ui.window.unfullscreen(); } } } @@ -128,8 +131,15 @@ impl Ui { let open_file_button = Button::from_icon_name("document-open"); let app_wrapper = Box::builder().orientation(Orientation::Vertical).build(); + let window = ApplicationWindow::builder() + .application(app) + .title("Music Reader") + .child(&app_wrapper) + .maximized(true) + .build(); let ui = Ui { + window, bottom_bar: Box::builder().hexpand_set(true).build(), header_bar: HeaderBar::builder().build(), page_indicator: Label::builder().build(), @@ -170,23 +180,17 @@ impl Ui { }), ); - let window = ApplicationWindow::builder() - .application(app) - .title("Music Reader") - .child(&app_wrapper) - .maximized(true) - .build(); - let window = Rc::new(RefCell::new(window)); - - window.borrow().set_titlebar(Some(&ui.borrow().header_bar)); + ui.borrow() + .window + .set_titlebar(Some(&ui.borrow().header_bar)); open_file_button.connect_clicked( - glib::clone!(@strong ui, @strong window => @default-panic, move |_button| { - choose_file(Rc::clone(&ui), &window.borrow()); + glib::clone!(@strong ui => @default-panic, move |_button| { + choose_file(Rc::clone(&ui), &ui.borrow().window); }), ); - window.borrow().present(); + ui.borrow().window.present(); ui } }