X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fwidgets%2FPrivacyWebEngineView.cpp;h=d7b3f8c1de62a7be5050dc274503d29a690781a2;hb=15219459baed09d03d17a12c72302595c135fd53;hp=10a3a47fcf3f7124a194ce4c62f31b273c5eeaac;hpb=b516206c4d278640374cbfe244a5510e5ac70b54;p=PrivacyBrowserPC.git diff --git a/src/widgets/PrivacyWebEngineView.cpp b/src/widgets/PrivacyWebEngineView.cpp index 10a3a47..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,19 +44,40 @@ void PrivacyWebEngineView::addCookieToList(const QNetworkCookie &cookie) const emit updateCookiesAction(cookieListPointer->size()); } +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); } - case QWebEnginePage::WebBrowserWindow: { + case QWebEnginePage::WebBrowserWindow: + { // Create a new browser window. BrowserWindow *newBrowserWindowPointer = new BrowserWindow(); @@ -63,7 +88,15 @@ QWebEngineView* PrivacyWebEngineView::createWindow(QWebEnginePage::WebWindowType return newBrowserWindowPointer->tabWidgetPointer->loadBlankInitialWebsite(); } - default: { + 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; }