summaryrefslogtreecommitdiff
path: root/lib/widgets/Api/qwebengineview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/widgets/Api/qwebengineview.cpp')
-rw-r--r--lib/widgets/Api/qwebengineview.cpp47
1 files changed, 38 insertions, 9 deletions
diff --git a/lib/widgets/Api/qwebengineview.cpp b/lib/widgets/Api/qwebengineview.cpp
index 369aa6efa..aea228cc1 100644
--- a/lib/widgets/Api/qwebengineview.cpp
+++ b/lib/widgets/Api/qwebengineview.cpp
@@ -42,16 +42,42 @@
#include "qwebengineview.h"
#include "qwebengineview_p.h"
+#include "qwebenginepage_p.h"
#include "render_widget_host_view_qt_delegate_widget.h"
#include "web_contents_adapter.h"
#include <QStackedLayout>
#include <QUrl>
+void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
+{
+ if (view && page == view->d_func()->page)
+ return;
+
+ if (page) {
+ // Un-bind page from its current view.
+ if (QWebEngineView *oldView = page->d_func()->view) {
+ page->disconnect(oldView);
+ oldView->d_func()->page = 0;
+ }
+ page->d_func()->view = view;
+ }
+
+ if (view) {
+ // Un-bind view from its current page.
+ if (QWebEnginePage *oldPage = view->d_func()->page) {
+ oldPage->disconnect(view);
+ oldPage->d_func()->view = 0;
+ }
+ view->d_func()->page = page;
+ }
+}
+
QWebEngineViewPrivate::QWebEngineViewPrivate()
: QWidgetPrivate(QObjectPrivateVersion)
, m_isLoading(false)
, adapter(new WebContentsAdapter(this))
+ , page(0)
{
}
@@ -113,22 +139,25 @@ QWebEngineView::~QWebEngineView()
{
}
-void QWebEngineView::load(const QUrl& url)
+QWebEnginePage* QWebEngineView::page() const
{
- Q_D(QWebEngineView);
- d->adapter->load(url);
+ Q_D(const QWebEngineView);
+ if (!d->page) {
+ QWebEngineView *that = const_cast<QWebEngineView*>(this);
+ that->setPage(new QWebEnginePage(that));
+ }
+ return d->page;
}
-bool QWebEngineView::canGoBack() const
+void QWebEngineView::setPage(QWebEnginePage* page)
{
- Q_D(const QWebEngineView);
- return d->adapter->canGoBack();
+ QWebEngineViewPrivate::bind(this, page);
}
-bool QWebEngineView::canGoForward() const
+void QWebEngineView::load(const QUrl& url)
{
- Q_D(const QWebEngineView);
- return d->adapter->canGoForward();
+ Q_D(QWebEngineView);
+ d->adapter->load(url);
}
void QWebEngineView::back()