summaryrefslogtreecommitdiffstats
path: root/src/webengine
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
parentd1deca6c120bf5087d22b506d8994884598a7987 (diff)
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')
-rw-r--r--src/webengine/api/qquickwebengineview.cpp23
-rw-r--r--src/webengine/api/qquickwebengineview_p.h1
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.h4
3 files changed, 17 insertions, 11 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,
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 30f4a6003..866cf23ea 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h
@@ -60,10 +60,6 @@ public:
: ItemBaseT(parent)
, m_client(client)
{
- this->setFocus(true);
- this->setActiveFocusOnTab(true);
- this->setFlag(QQuickItem::ItemIsFocusScope);
-
this->setAcceptedMouseButtons(Qt::AllButtons);
this->setAcceptHoverEvents(true);
}