From f4c5a81cc1050bc267359d1b2173e36392fe08a1 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 5 Aug 2013 14:56:59 +0200 Subject: 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 Reviewed-by: Andras Becsi --- lib/widgets/Api/qwebengineview.cpp | 47 ++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 9 deletions(-) (limited to 'lib/widgets/Api/qwebengineview.cpp') 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 #include +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(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() -- cgit v1.2.1