diff options
Diffstat (limited to 'src/webengine')
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 12 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 1 | ||||
-rw-r--r-- | src/webengine/render_widget_host_view_qt_delegate_quick.h | 6 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 049e353b6..2f5d868ea 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -180,6 +180,18 @@ void QQuickWebEngineViewPrivate::runFileChooser(FileChooserMode mode, const QStr ui()->showFilePicker(mode, defaultFileName, acceptedMimeTypes, adapter); } +void QQuickWebEngineViewPrivate::passOnFocus(bool reverse) +{ + Q_Q(QQuickWebEngineView); + // In one direction we would pass forward the focus to RenderWidgetHostViewQtDelegateQuick(Painted), + // which in return would forward the tab key event and therefore the focus back to the QQuickWebEngineView. + // This is why we skip RenderWidgetHostViewQtDelegateQuick in the focus chain. + QQuickItem* current = QQuickItemPrivate::nextPrevItemInTabFocusChain(q, !reverse); + if (!qobject_cast<RenderWidgetHostViewQtDelegateQuick*>(current) && !qobject_cast<RenderWidgetHostViewQtDelegateQuickPainted*>(current)) + current = q; + focusNextPrev(current, !reverse); +} + void QQuickWebEngineViewPrivate::titleChanged(const QString &title) { Q_Q(QQuickWebEngineView); diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 37ac9edf0..3de597469 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -141,6 +141,7 @@ public: virtual void didRunJavaScript(const QVariant&, quint64) Q_DECL_OVERRIDE { } virtual void didFetchDocumentMarkup(const QString&, quint64) Q_DECL_OVERRIDE { } virtual void didFetchDocumentInnerText(const QString&, quint64) Q_DECL_OVERRIDE { } + virtual void passOnFocus(bool reverse) Q_DECL_OVERRIDE; virtual void javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE; void setDevicePixelRatio(qreal); diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h index 9dbe79941..8f32689d0 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h @@ -60,6 +60,10 @@ public: : ItemBaseT(parent) , m_client(client) { + this->setFocus(true); + this->setActiveFocusOnTab(true); + this->setFlag(QQuickItem::ItemIsFocusScope); + this->setAcceptedMouseButtons(Qt::AllButtons); this->setAcceptHoverEvents(true); } @@ -143,7 +147,7 @@ public: void mousePressEvent(QMouseEvent *event) { - this->setFocus(true); + this->forceActiveFocus(); m_client->forwardEvent(event); } |