From c3b0d2ada159896b49451fe3d8e6172a8101a845 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 17 Dec 2018 22:57:56 +0100 Subject: Add subwindow list to Window menu --- src/mainwindow/menubar.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'src/mainwindow/menubar.cpp') diff --git a/src/mainwindow/menubar.cpp b/src/mainwindow/menubar.cpp index bc06f65..e74069e 100644 --- a/src/mainwindow/menubar.cpp +++ b/src/mainwindow/menubar.cpp @@ -122,7 +122,7 @@ MenuBar::MenuBar(const Configuration *config, MainWindow *parent) config->setShortcut(actionQuit, "mainwindow.shortcuts.quit"); } - auto *window = this->addMenu(tr("Window")); + window = this->addMenu(tr("&Window")); { auto *actionNewWindow = window->addAction(tr("New Window"), browser, &Browser::createWindow); config->setShortcut(actionNewWindow, "mainwindow.shortcuts.newWindow"); @@ -139,9 +139,11 @@ MenuBar::MenuBar(const Configuration *config, MainWindow *parent) auto *actionCascadeSubwindows = window->addAction(tr("Cascade Subwindows"), parent->mdiArea, &QMdiArea::cascadeSubWindows); config->setShortcut(actionCascadeSubwindows, "mainwindow.shortcuts.cascadeWindows"); + + window->addSeparator()->setText(tr("Subwindows")); } - auto *subwindow = this->addMenu(tr("Subwindow")); + auto *subwindow = this->addMenu(tr("&Subwindow")); { auto *actionNewTab = subwindow->addAction(tr("New Tab"), parent, [parent]() { run_if(parent->currentSubWindow(), [](SubWindow *_subwindow, int) { @@ -318,7 +320,7 @@ MenuBar::MenuBar(const Configuration *config, MainWindow *parent) }); } - auto *page = this->addMenu(tr("Page")); + auto *page = this->addMenu(tr("&Page")); { page->addAction(tr("Create Bookmark"), parent, [browser, parent]() { if(parent->currentView != nullptr) @@ -374,3 +376,21 @@ QAction *MenuBar::insertPlugin(QMenu *menu) { return smolbote->insertMenu(pluginInsertLocation, menu); } + +void MenuBar::insertSubWindow(SubWindow *subwindow) +{ + auto *action = window->addAction(subwindow->windowTitle(), subwindow, [subwindow]() { + if(!subwindow->windowState().testFlag(Qt::WindowMaximized)) + subwindow->showMaximized(); + else + subwindow->showNormal(); + }); + + action->setCheckable(true); + connect(subwindow, &SubWindow::windowStateChanged, action, [action](Qt::WindowStates, Qt::WindowStates state) { + action->setChecked(state.testFlag(Qt::WindowMaximized) | state.testFlag(Qt::WindowActive)); + }); + + connect(subwindow, &SubWindow::windowTitleChanged, action, &QAction::setText); + connect(subwindow, &SubWindow::destroyed, action, &QAction::deleteLater); +} -- cgit v1.2.1