From a7bea6a07a51079680a2a8b2bf1e2a27a9a190fb Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 22 Dec 2018 22:49:49 +0100 Subject: Add BookmarksWidget::showContextMenu signal Connected the signal to last window's current subwindow. Menu contains: - Open link in current tab - Open link in current tab with profile - Open link in new tab - Open link in new tab with profile BUG: #10 Add right-click menu for bookmarks --- src/browser.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/browser.cpp') diff --git a/src/browser.cpp b/src/browser.cpp index 0422a4e..8c1dcf1 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -34,6 +34,7 @@ #include #include #include "mainwindow/menubar.h" +#include "webengine/webview.h" Browser::Browser(int &argc, char *argv[], bool allowSecondary) : SingleApplication(argc, argv, allowSecondary, SingleApplication::User | SingleApplication::SecondaryNotification | SingleApplication::ExcludeAppVersion) @@ -185,6 +186,36 @@ void Browser::setup(QVector plugins) // bookmarks m_bookmarks = std::make_shared(QString::fromStdString(m_config->value("bookmarks.path").value())); + connect(m_bookmarks.get(), &BookmarksWidget::showContextMenu, this, [this](const QUrl &url, const QPoint &pos) { + auto *menu = new QMenu(m_windows.last()); + auto *subwindow = m_windows.last()->currentSubWindow(); + if(subwindow == nullptr) + return; + + menu->addAction(tr("Open link in current tab"), subwindow, [url, subwindow]() { + subwindow->currentView()->load(url); + }); + + auto *openInCurrentTabWithProfile = m_profileManager->createProfileMenu([url, subwindow](WebProfile *profile) { + subwindow->currentView()->setProfile(profile); + subwindow->currentView()->load(url); + }, nullptr); + openInCurrentTabWithProfile->setTitle(tr("Open link in current tab with profile")); + menu->addMenu(openInCurrentTabWithProfile); + + menu->addAction(tr("Open link in new tab"), subwindow, [url, subwindow]() { + subwindow->addTab(url); + }); + + auto *openInNewTabWithProfile = m_profileManager->createProfileMenu([url, subwindow](WebProfile *profile) { + subwindow->addTab(url, profile); + }, nullptr); + openInNewTabWithProfile->setTitle(tr("Open link in new tab with profile")); + menu->addMenu(openInNewTabWithProfile); + + menu->exec(pos); + }); + connect(m_bookmarks.get(), &BookmarksWidget::openUrl, this, [this](const QUrl &url) { m_windows.last()->createTab(url); }); -- cgit v1.2.1