aboutsummaryrefslogtreecommitdiff
path: root/src/bookmarks/bookmarkswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/bookmarkswidget.cpp')
-rw-r--r--src/bookmarks/bookmarkswidget.cpp47
1 files changed, 45 insertions, 2 deletions
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 <QFileDialog>
+#include <QMenu>
#include <QTreeView>
#include <QUrl>
@@ -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<MainWindow *>(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));
}
});