diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-10-16 12:15:51 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2020-11-24 09:45:04 +0100 |
commit | 2fbe10a115fb0f5f50efe192d554fb7d1c988884 (patch) | |
tree | a8dc909c7457a9f0570b8f856c007db567dea25d /src/webenginewidgets/api/qwebengineview.cpp | |
parent | e7d3d03a7540c2fa5ac1ba88eddec6135c4ab9ab (diff) | |
download | qtwebengine-2fbe10a115fb0f5f50efe192d554fb7d1c988884.tar.gz |
Drop dependency on QWebEngineView in page
Introduce temporarily PageView interface and DummyDelegate.
Change-Id: I3a3d57435c98b31a15fb6d777045e141d007486f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineview.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 83 |
1 files changed, 79 insertions, 4 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 934991cbe..2b5b2414c 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -78,6 +78,7 @@ # include <QMessageBox> #endif #include <QStyle> +#include <QGuiApplication> QT_BEGIN_NAMESPACE @@ -306,6 +307,26 @@ bool QWebEngineViewPrivate::javaScriptPrompt(const QUrl &url, const QString &msg #endif // QT_CONFIG(inputdialog) } +void QWebEngineViewPrivate::focusContainer() +{ + Q_Q(QWebEngineView); + q->activateWindow(); + q->setFocus(); +} + +void QWebEngineViewPrivate::unhandledKeyEvent(QKeyEvent *event) +{ + Q_Q(QWebEngineView); + if (q->parentWidget()) + QGuiApplication::sendEvent(q->parentWidget(), event); +} + +bool QWebEngineViewPrivate::passOnFocus(bool reverse) +{ + Q_Q(QWebEngineView); + return q->focusNextPrevChild(!reverse); +} + #ifndef QT_NO_ACCESSIBILITY static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object) { @@ -323,9 +344,13 @@ QWebEngineViewPrivate::QWebEngineViewPrivate() #endif // QT_NO_ACCESSIBILITY } +QWebEngineViewPrivate::~QWebEngineViewPrivate() = default; + void QWebEngineViewPrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView *view) { - auto oldView = page ? page->d_func()->view : nullptr; + QWebEngineViewPrivate *v = + page ? static_cast<QWebEngineViewPrivate *>(page->d_func()->view) : nullptr; + auto oldView = v ? v->q_func() : nullptr; auto oldPage = view ? view->d_func()->page : nullptr; bool ownNewPage = false; @@ -339,7 +364,7 @@ void QWebEngineViewPrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView oldView->d_func()->page = nullptr; oldView->d_func()->m_ownsPage = false; } - page->d_func()->view = view; + page->d_func()->view = view ? view->d_func() : nullptr; } if (view && oldPage != page) { @@ -399,12 +424,12 @@ void QWebEngineViewPrivate::bindPageAndWidget( if (widget && oldPage != page && oldPage && oldPage->d_func()) { if (auto oldView = oldPage->d_func()->view) - oldView->d_func()->widgetChanged(widget, nullptr); + static_cast<QWebEngineViewPrivate *>(oldView)->widgetChanged(widget, nullptr); } if (page && oldWidget != widget) { if (auto view = page->d_func()->view) - view->d_func()->widgetChanged(oldWidget, widget); + static_cast<QWebEngineViewPrivate *>(view)->widgetChanged(oldWidget, widget); } } @@ -435,6 +460,56 @@ QIcon QWebEngineViewPrivate::webActionIcon(QWebEnginePage::WebAction action) } return icon; } + +QWebEnginePage *QWebEngineViewPrivate::createPageForWindow(QWebEnginePage::WebWindowType type) +{ + Q_Q(QWebEngineView); + QWebEngineView *newView = q->createWindow(type); + if (newView) + return newView->page(); + return nullptr; +} + +void QWebEngineViewPrivate::setToolTip(const QString &toolTipText) +{ + Q_Q(QWebEngineView); + q->setToolTip(toolTipText); +} + +bool QWebEngineViewPrivate::isEnabled() const +{ + Q_Q(const QWebEngineView); + return q->isEnabled(); +} + +QObject *QWebEngineViewPrivate::accessibilityParentObject() +{ + Q_Q(QWebEngineView); + return q; +} + +bool QWebEngineViewPrivate::isVisible() const +{ + Q_Q(const QWebEngineView); + return q->isVisible(); +} +QRect QWebEngineViewPrivate::viewportRect() const +{ + Q_Q(const QWebEngineView); + return q->rect(); +} +QtWebEngineCore::RenderWidgetHostViewQtDelegate * +QWebEngineViewPrivate::CreateRenderWidgetHostViewQtDelegate( + QtWebEngineCore::RenderWidgetHostViewQtDelegateClient *client) +{ + Q_Q(QWebEngineView); + return new QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget(client, q); +} + +QWebEngineContextMenuRequest *QWebEngineViewPrivate::lastContextMenuRequest() const +{ + return m_contextRequest; +} /*! \fn QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) \since 5.6 |