From 4d0a5a007c968814c1e105fd5cdd4478ddbf3ba5 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 30 Jan 2020 17:06:01 +0200 Subject: BookmarksWidget: add Clear selection in context menu --- src/bookmarks/bookmarkswidget.cpp | 47 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'src/bookmarks/bookmarkswidget.cpp') diff --git a/src/bookmarks/bookmarkswidget.cpp b/src/bookmarks/bookmarkswidget.cpp index 21739e7..e05f291 100644 --- a/src/bookmarks/bookmarkswidget.cpp +++ b/src/bookmarks/bookmarkswidget.cpp @@ -9,8 +9,13 @@ #include "bookmarkswidget.h" #include "bookmarkmodel.h" #include "editbookmarkdialog.h" +#include "mainwindow/mainwindow.h" +#include "subwindow/subwindow.h" #include "ui_bookmarksform.h" +#include "webengine/webprofilemanager.h" +#include "webengine/webview.h" #include +#include #include #include @@ -90,9 +95,47 @@ BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent) const QModelIndex idx = ui->treeView->indexAt(pos); if(idx.isValid()) { const QUrl url = m_model->data(idx, 1, Qt::DisplayRole).toUrl(); - const QPoint _pos = ui->treeView->viewport()->mapToGlobal(pos); - emit showContextMenu(url, _pos); + // get parent main window + MainWindow *window = nullptr; + for(QWidget *w = this; w != nullptr && window == nullptr; w = w->parentWidget()) { + window = qobject_cast(w); + } + if(window == nullptr) + return; + + auto *subwindow = window->currentSubWindow(); + if(subwindow == nullptr) + return; + + auto *menu = new QMenu(this); + + menu->addAction(tr("Open link in current tab"), subwindow, [url, subwindow]() { + subwindow->currentView()->load(url); + }); + + auto *openInCurrentTabWithProfile = menu->addMenu(tr("Open link in current tab with profile")); + profileMenu(openInCurrentTabWithProfile, [url, subwindow](WebProfile *profile) { + subwindow->currentView()->setProfile(profile); + subwindow->currentView()->load(url); + }); + + menu->addAction(tr("Open link in new tab"), subwindow, [url, subwindow]() { + subwindow->addTab(url); + }); + + auto *openInNewTabWithProfile = menu->addMenu(tr("Open link in new tab with profile")); + profileMenu(openInNewTabWithProfile, [url, subwindow](WebProfile *profile) { + subwindow->addTab(url, profile); + }); + + menu->addSeparator(); + menu->addAction(tr("Clear selection"), this, [this]() { + ui->treeView->setCurrentIndex(QModelIndex()); + ui->treeView->clearSelection(); + }); + + menu->exec(ui->treeView->viewport()->mapToGlobal(pos)); } }); -- cgit v1.2.1