summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-04-01 10:27:13 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-08 14:00:06 +0200
commit84f31c11b77a62212451cb77adae63219e06de96 (patch)
tree97d252eee0ee8716d1a7165cd714b0d5b9552ebb /src/webenginewidgets/api
parent3cb5203cb7a4bee9a867e8616c23ce635d6a8506 (diff)
Revert part of the RenderWidgetHostViewQtDelegate refactoring
This reverts parts of commit 9c198939be1ef064d1a2430a4b9991f2fe16f359. This does keeps the popup fixes and removes support for QWebEnginePage::setViewportSize and QWebEnginePage::render until we can evaluate the needs vs the cost of such feature. Change-Id: I1b55b751d463717b1462393ea8cd353422f8fdbb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp81
-rw-r--r--src/webenginewidgets/api/qwebenginepage_p.h5
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp37
-rw-r--r--src/webenginewidgets/api/qwebengineview.h2
4 files changed, 18 insertions, 107 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 0ed9d0135..a5e5f8320 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -28,8 +28,7 @@
#include "qwebenginehistory_p.h"
#include "qwebengineview.h"
#include "qwebengineview_p.h"
-#include "render_widget_host_view_qt_delegate_popup.h"
-#include "render_widget_host_view_qt_delegate_webpage.h"
+#include "render_widget_host_view_qt_delegate_widget.h"
#include "web_contents_adapter.h"
#include <QAction>
@@ -38,6 +37,7 @@
#include <QFileDialog>
#include <QIcon>
#include <QInputDialog>
+#include <QLayout>
#include <QMenu>
#include <QMessageBox>
#include <QStandardPaths>
@@ -152,6 +152,7 @@ QWebEnginePagePrivate::QWebEnginePagePrivate()
, history(new QWebEngineHistory(new QWebEngineHistoryPrivate(this)))
, view(0)
{
+ adapter->initialize(this);
memset(actions, 0, sizeof(actions));
}
@@ -163,13 +164,7 @@ QWebEnginePagePrivate::~QWebEnginePagePrivate()
RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, RenderingMode mode)
{
Q_UNUSED(mode);
- return new RenderWidgetHostViewQtDelegateWebPage(client);
-}
-
-RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegateForPopup(RenderWidgetHostViewQtDelegateClient *client, WebContentsAdapterClient::RenderingMode)
-{
- Q_ASSERT(m_rwhvDelegate);
- return new RenderWidgetHostViewQtDelegatePopup(client, view);
+ return new RenderWidgetHostViewQtDelegateWidget(client);
}
void QWebEnginePagePrivate::titleChanged(const QString &title)
@@ -204,10 +199,12 @@ void QWebEnginePagePrivate::selectionChanged()
QRectF QWebEnginePagePrivate::viewportRect() const
{
- QRectF rect(QPointF(), viewportSize);
- if (view)
- rect.setTopLeft(view->rect().topLeft());
- return rect;
+ return view ? view->rect() : QRectF();
+}
+
+QPoint QWebEnginePagePrivate::mapToGlobal(const QPoint &posInView) const
+{
+ return view ? view->mapToGlobal(posInView) : QPoint();
}
qreal QWebEnginePagePrivate::dpiScale() const
@@ -366,8 +363,6 @@ void QWebEnginePagePrivate::recreateFromSerializedHistory(QDataStream &input)
QWebEnginePage::QWebEnginePage(QObject* parent)
: QObject(*new QWebEnginePagePrivate, parent)
{
- Q_D(QWebEnginePage);
- d->adapter->initialize(d);
}
QWebEnginePage::~QWebEnginePage()
@@ -528,32 +523,9 @@ void QWebEnginePage::findText(const QString &subString, FindFlags options, const
}
}
-QSize QWebEnginePage::viewportSize() const
-{
- Q_D(const QWebEnginePage);
- return d->viewportSize;
-}
-
-void QWebEnginePage::setViewportSize(const QSize &size)
-{
- Q_D(QWebEnginePage);
- d->viewportSize = size;
- if (d->m_rwhvDelegate)
- d->m_rwhvDelegate->notifyResize();
-}
-
bool QWebEnginePage::event(QEvent *e)
{
- Q_D(QWebEnginePage);
- if (!d->m_rwhvDelegate) {
- // FIXME: implement a signal when the render process crashes and keep track of it at this level
- // Ideally, this should be Q_ASSERT(!d->m_renderProcessLive) or something along those lines
- qWarning("%s: no render process running?\n", Q_FUNC_INFO);
- return false;
- }
- if (!d->m_rwhvDelegate->forwardEvent(e))
- return QObject::event(e);
- return true;
+ return QObject::event(e);
}
bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData &data)
@@ -759,22 +731,6 @@ QUrl QWebEnginePage::requestedUrl() const
return d->adapter->requestedUrl();
}
-void QWebEnginePage::render(QPainter *p, const QRegion &clip)
-{
- Q_D(const QWebEnginePage);
- if (!d->m_rwhvDelegate) {
- // Most likely the render process crashed. See QWebEnginePage::event
- return;
- }
- if (!clip.isNull()) {
- p->save();
- p->setClipRegion(clip);
- }
- d->m_rwhvDelegate->paint(p, QRectF(clip.boundingRect()));
- if (!clip.isNull())
- p->restore();
-}
-
qreal QWebEnginePage::zoomFactor() const
{
Q_D(const QWebEnginePage);
@@ -787,21 +743,6 @@ void QWebEnginePage::setZoomFactor(qreal factor)
d->adapter->setZoomFactor(factor);
}
-bool QWebEnginePage::hasFocus() const
-{
- Q_D(const QWebEnginePage);
- if (d->view)
- return d->view->hasFocus();
- return false;
-}
-
-void QWebEnginePage::setFocus()
-{
- Q_D(QWebEnginePage);
- if (d->view)
- d->view->setFocus();
-}
-
void QWebEnginePage::runJavaScript(const QString &scriptSource, const QString &xPath)
{
Q_D(QWebEnginePage);
diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index 927519008..e487ff37c 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -45,7 +45,6 @@
#include "qwebenginepage.h"
#include "web_contents_adapter_client.h"
-#include "render_widget_host_view_qt_delegate_webpage.h"
#include <QtCore/private/qobject_p.h>
#include <QtCore/qcompilerdetection.h>
#include <QSharedData>
@@ -110,13 +109,14 @@ public:
~QWebEnginePagePrivate();
virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, RenderingMode mode) Q_DECL_OVERRIDE;
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegateForPopup(RenderWidgetHostViewQtDelegateClient *client, RenderingMode) Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegateForPopup(RenderWidgetHostViewQtDelegateClient *client, RenderingMode mode) Q_DECL_OVERRIDE { return CreateRenderWidgetHostViewQtDelegate(client, mode); }
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE;
virtual void selectionChanged() Q_DECL_OVERRIDE;
virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
+ virtual QPoint mapToGlobal(const QPoint &posInView) const Q_DECL_OVERRIDE;
virtual qreal dpiScale() const Q_DECL_OVERRIDE;
virtual void loadStarted(const QUrl &provisionalUrl) Q_DECL_OVERRIDE;
virtual void loadCommitted() Q_DECL_OVERRIDE;
@@ -150,7 +150,6 @@ public:
QSize viewportSize;
QUrl m_explicitUrl;
WebEngineContextMenuData m_menuData;
- QPointer<RenderWidgetHostViewQtDelegateWebPage> m_rwhvDelegate;
mutable CallbackDirectory m_callbacks;
mutable QAction *actions[QWebEnginePage::WebActionCount];
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 3f3fdd7cd..c8fe9c383 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -48,6 +48,7 @@
#include <QAction>
#include <QMenu>
#include <QContextMenuEvent>
+#include <QStackedLayout>
QT_BEGIN_NAMESPACE
@@ -63,6 +64,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
oldView->d_func()->page = 0;
}
page->d_func()->view = view;
+ page->d_func()->adapter->reattachRWHV();
}
if (view) {
@@ -81,7 +83,6 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress);
QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished);
QObject::connect(page, &QWebEnginePage::selectionChanged, view, &QWebEngineView::selectionChanged);
- page->setViewportSize(view->size());
}
}
@@ -94,10 +95,8 @@ QWebEngineViewPrivate::QWebEngineViewPrivate()
QWebEngineView::QWebEngineView(QWidget *parent)
: QWidget(*(new QWebEngineViewPrivate), parent, 0)
{
- setFocusPolicy(Qt::ClickFocus);
- setMouseTracking(true);
- setAttribute(Qt::WA_AcceptTouchEvents);
- setAttribute(Qt::WA_OpaquePaintEvent);
+ // This causes the child RenderWidgetHostViewQtDelegateWidgets to fill this widget.
+ setLayout(new QStackedLayout);
}
QWebEngineView::~QWebEngineView()
@@ -222,41 +221,15 @@ void QWebEngineView::setZoomFactor(qreal factor)
bool QWebEngineView::event(QEvent *ev)
{
- Q_D(QWebEngineView);
// We swallow spontaneous contextMenu events and synthethize those back later on when we get the
// HandleContextMenu callback from chromium
if (ev->type() == QEvent::ContextMenu) {
ev->accept();
return true;
-
- // Meta calls are not safe to forward to the page, as they could be widget specific (e.g. QWidgetPrivate::_q_showIfNotHidden)
- // ToolTip events need to be processed at the widget level for the tooltip to show.
- } else if (ev->type() == QEvent::MetaCall
- || ev->type() == QEvent::ToolTip)
- return QWidget::event(ev);
- if (d->page && d->page->event(ev))
- return true;
-
+ }
return QWidget::event(ev);
}
-void QWebEngineView::paintEvent(QPaintEvent *ev)
-{
- Q_D(QWebEngineView);
- if (!d->page)
- return;
- QPainter painter(this);
- d->page->render(&painter, QRegion(ev->rect()));
-}
-
-void QWebEngineView::resizeEvent(QResizeEvent *ev)
-{
- Q_D(QWebEngineView);
- if (!d->page)
- return;
- d->page->setViewportSize(ev->size());
-}
-
void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = page()->createStandardContextMenu();
diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h
index 836e61be3..5e7dfa0e9 100644
--- a/src/webenginewidgets/api/qwebengineview.h
+++ b/src/webenginewidgets/api/qwebengineview.h
@@ -132,8 +132,6 @@ protected:
virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type);
virtual void contextMenuEvent(QContextMenuEvent*) Q_DECL_OVERRIDE;
virtual bool event(QEvent*) Q_DECL_OVERRIDE;
- virtual void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE;
- virtual void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
private:
Q_DECLARE_PRIVATE(QWebEngineView);