X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fwidgets%2FPrivacyWebEngineView.cpp;h=d7b3f8c1de62a7be5050dc274503d29a690781a2;hb=93a1583163ca580a2218ba81836a17c3a6586ccf;hp=ba56d31d76c6827f9b3e1e60927c756f9ed4e896;hpb=8689d74c8a97cbeb81b69bed8e195ed68bca2ee1;p=PrivacyBrowserPC.git diff --git a/src/widgets/PrivacyWebEngineView.cpp b/src/widgets/PrivacyWebEngineView.cpp index ba56d31..d7b3f8c 100644 --- a/src/widgets/PrivacyWebEngineView.cpp +++ b/src/widgets/PrivacyWebEngineView.cpp @@ -22,6 +22,10 @@ #include "databases/CookiesDatabase.h" #include "windows/BrowserWindow.h" +// Qt toolkit headers. +#include +#include + // Construct the class. PrivacyWebEngineView::PrivacyWebEngineView() : QWebEngineView(nullptr) {} @@ -40,22 +44,60 @@ void PrivacyWebEngineView::addCookieToList(const QNetworkCookie &cookie) const emit updateCookiesAction(cookieListPointer->size()); } -QWebEngineView* PrivacyWebEngineView::createWindow(QWebEnginePage::WebWindowType webWindowType) { - qDebug().noquote().nospace() << "Web window type: " << webWindowType; +void PrivacyWebEngineView::contextMenuEvent(QContextMenuEvent *contextMenuEvent) { + // Get a handle for the + QWebEnginePage *webEnginePagePointer = page(); + + // Get a handle for the menu. + QMenu *contextMenu = webEnginePagePointer->createStandardContextMenu(); + + // Get the list of context menu actions. + const QList contextMenuActionsList = contextMenu->actions(); + // Add the open link in new background tab action if the context menu already contains the open link in new window action. + if (contextMenuActionsList.contains(webEnginePagePointer->action(QWebEnginePage::OpenLinkInNewWindow))) + contextMenu->insertAction(webEnginePagePointer->action(QWebEnginePage::OpenLinkInNewWindow), webEnginePagePointer->action(QWebEnginePage::OpenLinkInNewBackgroundTab)); + + // Display the menu using the location in the context menu event. + contextMenu->popup(contextMenuEvent->globalPos()); +} + +QWebEngineView* PrivacyWebEngineView::createWindow(QWebEnginePage::WebWindowType webWindowType) { // Get a handle for the browser window. BrowserWindow *browserWindowPointer = qobject_cast(window()); // Create the requsted window type. - switch (webWindowType) { - case QWebEnginePage::WebBrowserTab: { + switch (webWindowType) + { + case QWebEnginePage::WebBrowserTab: + { // Create the new tab and return the privacy WebEngine view pointer. `true` removes the focus from the blank URL line edit. // The new privacy WebEngine view pointer is returned so it can be populated with the link from the context menu. return browserWindowPointer->tabWidgetPointer->addTab(true); } - default: { - // Return an null pointer. + case QWebEnginePage::WebBrowserWindow: + { + // Create a new browser window. + BrowserWindow *newBrowserWindowPointer = new BrowserWindow(); + + // Show the new browser window. + newBrowserWindowPointer->show(); + + // The new privacy WebEngine view pointer is returned so it can be populated with the link from the context menu. + return newBrowserWindowPointer->tabWidgetPointer->loadBlankInitialWebsite(); + } + + case QWebEnginePage::WebBrowserBackgroundTab: + { + // Create the new tab and return the privacy WebEngine view pointer. `false` does not clear the URL line edit. `true` creates a background tab. + // The new privacy WebEngine view pointer is returned so it can be populated with the link from the context menu. + return browserWindowPointer->tabWidgetPointer->addTab(false, true); + } + + default: + { + // Return an null pointer for opening a background tab and opening a web dialog. return nullptr; } }