summaryrefslogtreecommitdiff
path: root/lib/widgets/Api/qwebengineview.cpp
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-08-05 14:56:59 +0200
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-08-20 17:42:53 +0200
commitf4c5a81cc1050bc267359d1b2173e36392fe08a1 (patch)
treea3b42f13ed36302842c35d97d156e2ac5f6fa073 /lib/widgets/Api/qwebengineview.cpp
parent9a3641f43572ce9e77dd6770f0029e82bd92d70c (diff)
downloadqtwebengine-f4c5a81cc1050bc267359d1b2173e36392fe08a1.tar.gz
Import QtWebKit public headers.
This is the first step toward re-implementing part of the QWebView API on top of QtWebEngine. The plan is to import the complete headers to facilitate diffs and progress tracking. Changes squashed in this commit: - Use the QWebEngine prefix for class names - Strip out non-public members and directives - Allow building using those headers by disabling the Q_PROPERTY macros and by adding a dummy implementation for virtual methods directly in the header - Update the widgetsnanobrowser example to comply with the slight changes from the previous API Change-Id: Ia7efa5430f775d09b493544430a04856cc7928f6 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
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()