From fb46138a25b2b39af94d8fbdda49cfe057dd9c37 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 10 Sep 2017 21:10:36 +0200 Subject: Back and forward history menus --- src/mainwindow.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index be19021..cb29e64 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -32,6 +32,8 @@ #include +#include + MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), @@ -78,10 +80,37 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : backButton->setIcon(style()->standardIcon(QStyle::SP_ArrowBack)); connect(backButton, SIGNAL(clicked()), tabBar->signalMapper(), SLOT(map())); tabBar->signalMapper()->setMapping(backButton, WebViewTabBar::Back); + + QMenu *backMenu = new QMenu(this); + connect(backMenu, &QMenu::aboutToShow, [backMenu, this]() { + backMenu->clear(); + for(QWebEngineHistoryItem i : m_currentView->history()->backItems(10)) { + QAction *a = backMenu->addAction(i.title()); + connect(a, &QAction::triggered, [i, this]() { + m_currentView->history()->goToItem(i); + }); + } + }); + backButton->setMenu(backMenu); + QToolButton *forwardButton = new QToolButton(this); forwardButton->setIcon(style()->standardIcon(QStyle::SP_ArrowForward)); connect(forwardButton, SIGNAL(clicked()), tabBar->signalMapper(), SLOT(map())); tabBar->signalMapper()->setMapping(forwardButton, WebViewTabBar::Forward); + + + QMenu *forwardMenu = new QMenu(this); + connect(forwardMenu, &QMenu::aboutToShow, [forwardMenu, this]() { + forwardMenu->clear(); + for(QWebEngineHistoryItem i : m_currentView->history()->forwardItems(10)) { + QAction *a = forwardMenu->addAction(i.title()); + connect(a, &QAction::triggered, [i, this]() { + m_currentView->history()->goToItem(i); + }); + } + }); + forwardButton->setMenu(forwardMenu); + QToolButton *reloadButton = new QToolButton(this); reloadButton->setIcon(style()->standardIcon(QStyle::SP_BrowserReload)); connect(reloadButton, SIGNAL(clicked()), tabBar->signalMapper(), SLOT(map())); -- cgit v1.2.1