summaryrefslogtreecommitdiff
path: root/src/webengine/api
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2014-03-05 03:37:04 -0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-13 16:21:15 +0100
commitc47bc7986e3a158fcb505992df084372a4a0e3bf (patch)
tree6a3b76d005b6b29071bd47417ff13e5e8bb4e94f /src/webengine/api
parentd1deca6c120bf5087d22b506d8994884598a7987 (diff)
downloadqtwebengine-c47bc7986e3a158fcb505992df084372a4a0e3bf.tar.gz
Fix focus in Quick API
The forceActiveFocus() doesn't work in the QML tests. We need to call forceActiveFocus() in RenderWidgetHostViewQtDelegateQuick instead of the one in WebEngineView. To make this work, I replaced RWHV with QQuickWebEngineView in the focus chain. This is necessary in order to extend tst_loadUrl QML test with urlProperty test case. Change-Id: Ifba0c824a7ce9f00d328110233402d3563f967aa Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/webengine/api')
-rw-r--r--src/webengine/api/qquickwebengineview.cpp23
-rw-r--r--src/webengine/api/qquickwebengineview_p.h1
2 files changed, 17 insertions, 7 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 6522137a8..64c7f337e 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -187,13 +187,7 @@ void QQuickWebEngineViewPrivate::runFileChooser(FileChooserMode mode, const QStr
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);
+ focusNextPrev(q, !reverse);
}
void QQuickWebEngineViewPrivate::titleChanged(const QString &title)
@@ -364,6 +358,10 @@ QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent)
Q_D(QQuickWebEngineView);
d->e->q_ptr = this;
d->adapter->initialize(d);
+
+ this->setFocus(true);
+ this->setActiveFocusOnTab(true);
+ this->setFlag(QQuickItem::ItemIsFocusScope);
}
QQuickWebEngineView::~QQuickWebEngineView()
@@ -472,6 +470,17 @@ void QQuickWebEngineView::setInspectable(bool enable)
d->adapter->enableInspector(enable);
}
+void QQuickWebEngineView::forceActiveFocus()
+{
+ Q_FOREACH (QQuickItem *child, childItems()) {
+ if (qobject_cast<RenderWidgetHostViewQtDelegateQuick *>(child)
+ || qobject_cast<RenderWidgetHostViewQtDelegateQuickPainted *>(child)) {
+ child->forceActiveFocus();
+ break;
+ }
+ }
+}
+
void QQuickWebEngineViewExperimental::setIsFullScreen(bool fullscreen)
{
d_ptr->m_isFullScreen = fullscreen;
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index f17f5d11a..3ad2e59b7 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -78,6 +78,7 @@ public:
bool canGoForward() const;
bool inspectable() const;
void setInspectable(bool);
+ void forceActiveFocus();
enum LoadStatus {
LoadStartedStatus,