From 6e1d411f9218645851f0dde54688739390b62736 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 3 Apr 2020 21:23:35 +0300 Subject: Remove QMdiArea in MainWindow Kconfig: Change About Dialog shortcut default to F1 (was Ctrl+H) Change close current tab shortcut to Ctrl+W (was Ctrl+X) MainWindow: automatically close window when last subwindow is closed MenuBar: remove Tile/Cascade subwindows actions add show/hide/close subwindow actions SubWindow: remove Subwindow menu shortcut (was F1 by default) add close shortcut (default Ctrl+Shift+W) Minor fixes: Fix PKGBUILD sources --- src/mainwindow/menubar.cpp | 106 ++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 55 deletions(-) (limited to 'src/mainwindow/menubar.cpp') diff --git a/src/mainwindow/menubar.cpp b/src/mainwindow/menubar.cpp index 7a2bedc..c0bda61 100644 --- a/src/mainwindow/menubar.cpp +++ b/src/mainwindow/menubar.cpp @@ -71,6 +71,7 @@ inline QDialog *createDevToolsDialog(QWebEnginePage *page) MenuBar::MenuBar(MainWindow *parent) : QMenuBar(parent) { + m_parent = parent; auto *browser = qobject_cast(qApp); Q_CHECK_PTR(browser); Configuration conf; @@ -162,11 +163,10 @@ MenuBar::MenuBar(MainWindow *parent) }); conf.shortcut(*actionNewSubwindow, "shortcuts.window.newgroup"); - auto *actionTileSubwindows = window->addAction(tr("Tile Subwindows"), parent->mdiArea, &QMdiArea::tileSubWindows); - conf.shortcut(*actionTileSubwindows, "shortcuts.subwindow.tile"); - - auto *actionCascadeSubwindows = window->addAction(tr("Cascade Subwindows"), parent->mdiArea, &QMdiArea::cascadeSubWindows); - conf.shortcut(*actionCascadeSubwindows, "shortcuts.subwindow.cascade"); + auto *actionCloseSubwindow = window->addAction(tr("Close Subwindow"), parent, [parent]() { + parent->currentSubWindow()->close(); + }); + conf.shortcut(*actionCloseSubwindow, "shortcuts.subwindow.close"); window->addSeparator()->setText(tr("Toolbars")); @@ -378,22 +378,22 @@ MenuBar::MenuBar(MainWindow *parent) auto *page = this->addMenu(tr("&Page")); { page->addAction(tr("Create Bookmark"), parent, [browser, parent]() { - if(parent->currentView != nullptr) - browser->bookmarks()->addBookmark(parent->currentView->title(), parent->currentView->url().toString()); + if(parent->currentView() != nullptr) + browser->bookmarks()->addBookmark(parent->currentView()->title(), parent->currentView()->url().toString()); }); page->addSeparator(); page->addAction(tr("Save"), parent, [parent]() { - if(parent->currentView != nullptr) - parent->currentView->triggerPageAction(QWebEnginePage::SavePage); + if(parent->currentView() != nullptr) + parent->currentView()->triggerPageAction(QWebEnginePage::SavePage); }); page->addAction(tr("Print"), parent, [parent]() { - if(parent->currentView != nullptr) { + if(parent->currentView() != nullptr) { auto *printer = new QPrinter(QPrinterInfo::defaultPrinter()); QPrintDialog dlg(printer, parent); if(dlg.exec() == QDialog::Accepted) { - parent->currentView->page()->print(printer, [printer](bool success) { + parent->currentView()->page()->print(printer, [printer](bool success) { Q_UNUSED(success); delete printer; }); @@ -402,9 +402,9 @@ MenuBar::MenuBar(MainWindow *parent) }); page->addAction(tr("Print to PDF"), parent, [parent]() { - if(parent->currentView != nullptr) { + if(parent->currentView() != nullptr) { const QString path = QFileDialog::getSaveFileName(parent, tr("Print to PDF"), QDir::homePath(), tr("PDF files (*.pdf)")); - parent->currentView->page()->printToPdf(path); + parent->currentView()->page()->printToPdf(path); } }); @@ -414,32 +414,32 @@ MenuBar::MenuBar(MainWindow *parent) connect(pageProfile, &QMenu::aboutToShow, pageProfile, [=]() { pageProfile->clear(); - if(parent->currentView != nullptr) { + if(parent->currentView() != nullptr) { profileMenu( pageProfile, [parent](WebProfile *profile) { - parent->currentView->setProfile(profile); + parent->currentView()->setProfile(profile); }, - parent->currentView->profile(), true); + parent->currentView()->profile(), true); } }); page->addSeparator(); page->addAction(tr("Developer Tools"), parent, [parent]() { - if(parent->currentView != nullptr) { - auto *dlg = createDevToolsDialog(parent->currentView->page()); + if(parent->currentView() != nullptr) { + auto *dlg = createDevToolsDialog(parent->currentView()->page()); dlg->show(); } }); page->addAction(tr("View Source"), parent, [parent]() { - if(parent->currentView != nullptr) { - parent->currentView->triggerPageAction(QWebEnginePage::ViewSource); + if(parent->currentView() != nullptr) { + parent->currentView()->triggerPageAction(QWebEnginePage::ViewSource); } }); #ifdef QT_DEBUG // doesn't seem to do anything? page->addAction(tr("Inspect Element"), parent, [parent]() { - if(parent->currentView != nullptr) { - parent->currentView->triggerPageAction(QWebEnginePage::InspectElement); + if(parent->currentView() != nullptr) { + parent->currentView()->triggerPageAction(QWebEnginePage::InspectElement); } }); #endif @@ -450,77 +450,77 @@ MenuBar::MenuBar(MainWindow *parent) auto *edit = this->addMenu(tr("Edit")); { edit->addAction(tr("Undo"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Undo); + trigger_if(parent->currentView(), QWebEnginePage::Undo); }); edit->addAction(tr("Redo"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Redo); + trigger_if(parent->currentView(), QWebEnginePage::Redo); }); edit->addSeparator(); edit->addAction(tr("Cut"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Cut); + trigger_if(parent->currentView(), QWebEnginePage::Cut); }); edit->addAction(tr("Copy"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Copy); + trigger_if(parent->currentView(), QWebEnginePage::Copy); }); edit->addAction(tr("Paste"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Paste); + trigger_if(parent->currentView(), QWebEnginePage::Paste); }); edit->addAction(tr("Paste and match Style"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::PasteAndMatchStyle); + trigger_if(parent->currentView(), QWebEnginePage::PasteAndMatchStyle); }); edit->addSeparator(); edit->addAction(tr("Select all"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::SelectAll); + trigger_if(parent->currentView(), QWebEnginePage::SelectAll); }); edit->addAction(tr("Clear selection"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Unselect); + trigger_if(parent->currentView(), QWebEnginePage::Unselect); }); edit->addSeparator()->setText(tr("Editing")); edit->addAction(tr("Make editable"), parent, [parent]() { - if(parent->currentView != nullptr) - parent->currentView->page()->runJavaScript("document.documentElement.contentEditable = true"); + if(parent->currentView() != nullptr) + parent->currentView()->page()->runJavaScript("document.documentElement.contentEditable = true"); }); edit->addAction(tr("Bold"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::ToggleBold); + trigger_if(parent->currentView(), QWebEnginePage::ToggleBold); }); edit->addAction(tr("Italic"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::ToggleItalic); + trigger_if(parent->currentView(), QWebEnginePage::ToggleItalic); }); edit->addAction(tr("Underline"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::ToggleUnderline); + trigger_if(parent->currentView(), QWebEnginePage::ToggleUnderline); }); edit->addAction(tr("Strikethrough"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::ToggleStrikethrough); + trigger_if(parent->currentView(), QWebEnginePage::ToggleStrikethrough); }); edit->addAction(tr("Align left"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::AlignLeft); + trigger_if(parent->currentView(), QWebEnginePage::AlignLeft); }); edit->addAction(tr("Align right"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::AlignRight); + trigger_if(parent->currentView(), QWebEnginePage::AlignRight); }); edit->addAction(tr("Align center"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::AlignCenter); + trigger_if(parent->currentView(), QWebEnginePage::AlignCenter); }); edit->addAction(tr("Align justified"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::AlignJustified); + trigger_if(parent->currentView(), QWebEnginePage::AlignJustified); }); edit->addAction(tr("Indent"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Indent); + trigger_if(parent->currentView(), QWebEnginePage::Indent); }); edit->addAction(tr("Outdent"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::Outdent); + trigger_if(parent->currentView(), QWebEnginePage::Outdent); }); edit->addAction(tr("Insert ordered list"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::InsertOrderedList); + trigger_if(parent->currentView(), QWebEnginePage::InsertOrderedList); }); edit->addAction(tr("Insert unordered list"), parent, [parent]() { - trigger_if(parent->currentView, QWebEnginePage::InsertUnorderedList); + trigger_if(parent->currentView(), QWebEnginePage::InsertUnorderedList); }); } } @@ -535,22 +535,18 @@ void MenuBar::insertSubWindow(SubWindow *subwindow) auto *action = window->addAction(subwindow->windowTitle()); action->setCheckable(true); - connect(subwindow, &SubWindow::windowStateChanged, action, [action](Qt::WindowStates, Qt::WindowStates state) { - action->setChecked(state.testFlag(Qt::WindowMaximized) | state.testFlag(Qt::WindowActive)); - }); + action->setChecked(subwindow->isVisible()); + connect(subwindow, &SubWindow::visibilityChanged, action, &QAction::setChecked); connect(subwindow, &SubWindow::windowTitleChanged, action, &QAction::setText); connect(subwindow, &SubWindow::destroyed, action, &QAction::deleteLater); auto *optionsMenu = new QMenu; - optionsMenu->addAction(tr("Switch to"), subwindow, [subwindow]() { - if(!subwindow->windowState().testFlag(Qt::WindowMaximized)) - subwindow->showMaximized(); - else - subwindow->showNormal(); - }); - optionsMenu->addAction(tr("Close"), subwindow, [subwindow]() { - subwindow->close(); + optionsMenu->addAction(tr("Switch to"), subwindow, [this, subwindow]() { + m_parent->setCurrentSubWindow(subwindow); }); + optionsMenu->addAction(tr("Show"), subwindow, &SubWindow::show); + optionsMenu->addAction(tr("Hide"), subwindow, &SubWindow::hide); + optionsMenu->addAction(tr("Close"), subwindow, &SubWindow::close); action->setMenu(optionsMenu); } -- cgit v1.2.1