diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp index 9ff456bc0..0c80caf79 100644 --- a/app/window/mainwindow/mainmenu.cpp +++ b/app/window/mainwindow/mainmenu.cpp @@ -29,7 +29,7 @@ #include "undo/undostack.h" #include "widget/menu/menushared.h" -MainMenu::MainMenu(QWidget *parent) : +MainMenu::MainMenu(QMainWindow *parent) : QMenuBar(parent) { // @@ -84,7 +84,7 @@ MainMenu::MainMenu(QWidget *parent) : // // VIEW MENU // - view_menu_ = new Menu(this); + view_menu_ = new Menu(this, this, SLOT(ViewMenuAboutToShow())); view_zoom_in_item_ = view_menu_->AddItem("zoomin", this, SLOT(ZoomInTriggered()), "="); view_zoom_out_item_ = view_menu_->AddItem("zoomout", this, SLOT(ZoomOutTriggered()), "-"); view_increase_track_height_item_ = view_menu_->AddItem("vzoomin", nullptr, nullptr, "Ctrl+="); @@ -151,7 +151,7 @@ MainMenu::MainMenu(QWidget *parent) : view_menu_->addSeparator(); - view_full_screen_item_ = view_menu_->AddItem("fullscreen", nullptr, nullptr, "F11"); + view_full_screen_item_ = view_menu_->AddItem("fullscreen", parent, SLOT(SetFullscreen(bool)), "F11"); view_full_screen_item_->setCheckable(true); view_full_screen_viewer_item_ = view_menu_->AddItem("fullscreenviewer", nullptr, nullptr); @@ -324,6 +324,12 @@ void MainMenu::ToolItemTriggered() olive::core.SetTool(tool); } +void MainMenu::ViewMenuAboutToShow() +{ + // Parent is QMainWindow + view_full_screen_item_->setChecked(parentWidget()->isFullScreen()); +} + void MainMenu::ToolsMenuAboutToShow() { // Ensure checked Tool is correct diff --git a/app/window/mainwindow/mainmenu.h b/app/window/mainwindow/mainmenu.h index 9b19d8f65..008e91f22 100644 --- a/app/window/mainwindow/mainmenu.h +++ b/app/window/mainwindow/mainmenu.h @@ -21,6 +21,7 @@ #ifndef MAINMENU_H #define MAINMENU_H +#include #include #include "widget/menu/menu.h" @@ -34,7 +35,7 @@ class MainMenu : public QMenuBar { Q_OBJECT public: - MainMenu(QWidget* parent); + MainMenu(QMainWindow* parent); protected: /** @@ -55,6 +56,11 @@ private slots: */ void ToolItemTriggered(); + /** + * @brief Slot triggered just before the View menu shows + */ + void ViewMenuAboutToShow(); + /** * @brief Slot triggered just before the Tools menu shows */ diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp index 0223bc206..d189c26b7 100644 --- a/app/window/mainwindow/mainwindow.cpp +++ b/app/window/mainwindow/mainwindow.cpp @@ -55,6 +55,15 @@ olive::MainWindow::MainWindow(QWidget *parent) : setMenuBar(main_menu); } +void olive::MainWindow::SetFullscreen(bool fullscreen) +{ + if (fullscreen) { + setWindowState(windowState() | Qt::WindowFullScreen); + } else { + setWindowState(windowState() & ~Qt::WindowFullScreen); + } +} + void olive::MainWindow::ProjectOpen(Project* p) { // FIXME Use settings data to create panels and restore state if they exist diff --git a/app/window/mainwindow/mainwindow.h b/app/window/mainwindow/mainwindow.h index db6f57088..f852737f2 100644 --- a/app/window/mainwindow/mainwindow.h +++ b/app/window/mainwindow/mainwindow.h @@ -37,12 +37,13 @@ public: public slots: void ProjectOpen(Project *p); + void SetFullscreen(bool fullscreen); protected: virtual void closeEvent(QCloseEvent* e) override; private: - + Qt::WindowStates old_window_state_; };