diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-05 14:56:59 +0200 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-20 17:42:53 +0200 |
commit | f4c5a81cc1050bc267359d1b2173e36392fe08a1 (patch) | |
tree | a3b42f13ed36302842c35d97d156e2ac5f6fa073 /lib/widgets/Api/qwebengineview.cpp | |
parent | 9a3641f43572ce9e77dd6770f0029e82bd92d70c (diff) | |
download | qtwebengine-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.cpp | 47 |
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() |