aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/menubar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow/menubar.cpp')
-rw-r--r--src/mainwindow/menubar.cpp106
1 files changed, 51 insertions, 55 deletions
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<Browser *>(qApp);
Q_CHECK_PTR(browser);
Configuration conf;
@@ -162,11 +163,10 @@ MenuBar::MenuBar(MainWindow *parent)
});
conf.shortcut<QAction>(*actionNewSubwindow, "shortcuts.window.newgroup");
- auto *actionTileSubwindows = window->addAction(tr("Tile Subwindows"), parent->mdiArea, &QMdiArea::tileSubWindows);
- conf.shortcut<QAction>(*actionTileSubwindows, "shortcuts.subwindow.tile");
-
- auto *actionCascadeSubwindows = window->addAction(tr("Cascade Subwindows"), parent->mdiArea, &QMdiArea::cascadeSubWindows);
- conf.shortcut<QAction>(*actionCascadeSubwindows, "shortcuts.subwindow.cascade");
+ auto *actionCloseSubwindow = window->addAction(tr("Close Subwindow"), parent, [parent]() {
+ parent->currentSubWindow()->close();
+ });
+ conf.shortcut<QAction>(*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);
}