summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/api/qwebenginenewwindowrequest.cpp16
-rw-r--r--src/core/api/qwebenginenewwindowrequest.h3
-rw-r--r--src/core/api/qwebenginepage.cpp8
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp5
4 files changed, 24 insertions, 8 deletions
diff --git a/src/core/api/qwebenginenewwindowrequest.cpp b/src/core/api/qwebenginenewwindowrequest.cpp
index 7d2762e1c..1322bb4dd 100644
--- a/src/core/api/qwebenginenewwindowrequest.cpp
+++ b/src/core/api/qwebenginenewwindowrequest.cpp
@@ -40,6 +40,8 @@
#include "qwebenginenewwindowrequest.h"
#include "qwebenginenewwindowrequest_p.h"
+#include "qwebenginepage.h"
+
#include "web_contents_adapter.h"
QT_BEGIN_NAMESPACE
@@ -172,4 +174,18 @@ bool QWebEngineNewWindowRequest::isUserInitiated() const
return d_ptr->isUserInitiated;
}
+/*!
+ Opens the requested window in the view represented by \a page.
+
+ \sa QWebEnginePage::newWindowRequested
+*/
+void QWebEngineNewWindowRequest::openIn(QWebEnginePage *page)
+{
+ if (!page) {
+ qWarning("Trying to open a QWebEngineNewWindowRequest in an invalid QWebEnginePage.");
+ return;
+ }
+ page->acceptAsNewWindow(*this);
+}
+
QT_END_NAMESPACE
diff --git a/src/core/api/qwebenginenewwindowrequest.h b/src/core/api/qwebenginenewwindowrequest.h
index 4066f1a65..8fd35ad6f 100644
--- a/src/core/api/qwebenginenewwindowrequest.h
+++ b/src/core/api/qwebenginenewwindowrequest.h
@@ -53,6 +53,7 @@ class WebContentsAdapter;
QT_BEGIN_NAMESPACE
+class QWebEnginePage;
struct QWebEngineNewWindowRequestPrivate;
class Q_WEBENGINECORE_EXPORT QWebEngineNewWindowRequest : public QObject
@@ -78,6 +79,8 @@ public:
QRect requestedGeometry() const;
bool isUserInitiated() const;
+ void openIn(QWebEnginePage *);
+
protected:
QWebEngineNewWindowRequest(DestinationType, const QRect &, const QUrl &, bool,
QSharedPointer<QtWebEngineCore::WebContentsAdapter>,
diff --git a/src/core/api/qwebenginepage.cpp b/src/core/api/qwebenginepage.cpp
index 17a790d9f..b69fdfb92 100644
--- a/src/core/api/qwebenginepage.cpp
+++ b/src/core/api/qwebenginepage.cpp
@@ -2225,18 +2225,16 @@ QSizeF QWebEnginePage::contentsSize() const
while holding Shift, Ctrl, or a built-in combination that triggers the page to open
in a new window.
- The signal is handled by calling acceptAsNewWindow() on the destination page.
+ The signal is handled by calling openIn() with the new page on the request.
If this signal is not handled, the requested load will fail.
\note This signal is not emitted if \l createWindow() handled the request first.
- \sa createWindow()
+ \sa createWindow(), QWebEngineNewWindowRequest::openIn()
*/
/*!
- Handles the newWindowRequested() signal by opening the \a request in this page.
- \since 6.2
- \sa newWindowRequested()
+ \internal
*/
void QWebEnginePage::acceptAsNewWindow(QWebEngineNewWindowRequest &request)
{
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 8df70d917..824c00f18 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -564,7 +564,7 @@ private Q_SLOTS:
TestPage *page = new TestPage(this);
createdWindows.append(page);
emit windowCreated();
- page->acceptAsNewWindow(request);
+ request.openIn(page);
}
void slotGeometryChangeRequested(const QRect &geom)
@@ -3433,8 +3433,7 @@ void tst_QWebEnginePage::openLinkInDifferentProfile()
QWebEngineProfile profile1, profile2;
QWebEnginePage page1(&profile1), page2(&profile2);
connect(&page1, &QWebEnginePage::newWindowRequested, [&](QWebEngineNewWindowRequest &request) {
- if (targetPage)
- targetPage->acceptAsNewWindow(request);
+ request.openIn(targetPage);
});
QWebEngineView view;
view.resize(500, 500);