summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Yadrov <oleg.yadrov@qt.io>2017-04-17 11:47:26 -0400
committerOleg Yadrov <oleg.yadrov@qt.io>2017-04-25 16:03:03 +0000
commit0685dffb9275613e06f47e1d07643e55eeff56d9 (patch)
tree43023906df8cd3363f7f6843ad7d0824d1ae10a6
parentf7f8f8f6c12b8617b4d9f89dd2aaaf241a1a6f8e (diff)
Make WebView receive active focus on forceActiveFocus() call
This logic was simply missed. Task-number: QTBUG-60150 Change-Id: Id2e744a524823ca25b3ab42b76c8729c22e817b9 Reviewed-by: Robin Burchell <robin.burchell@crimson.no> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
-rw-r--r--src/webview/qquickwebview.cpp8
-rw-r--r--src/webview/qquickwebview_p.h1
-rw-r--r--src/webview/qwebview_webengine.cpp6
-rw-r--r--src/webview/qwebview_webengine_p.h1
4 files changed, 16 insertions, 0 deletions
diff --git a/src/webview/qquickwebview.cpp b/src/webview/qquickwebview.cpp
index d760564..16559cf 100644
--- a/src/webview/qquickwebview.cpp
+++ b/src/webview/qquickwebview.cpp
@@ -291,6 +291,14 @@ void QQuickWebView::runJavaScriptPrivate(const QString &script, int callbackId)
m_webView->runJavaScriptPrivate(script, callbackId);
}
+void QQuickWebView::itemChange(ItemChange change, const ItemChangeData &value)
+{
+ if (change == QQuickItem::ItemActiveFocusHasChanged) {
+ m_webView->setFocus(value.boolValue);
+ }
+ QQuickItem::itemChange(change, value);
+}
+
void QQuickWebView::onRunJavaScriptResult(int id, const QVariant &variant)
{
if (id == -1)
diff --git a/src/webview/qquickwebview_p.h b/src/webview/qquickwebview_p.h
index 3d1a432..6534815 100644
--- a/src/webview/qquickwebview_p.h
+++ b/src/webview/qquickwebview_p.h
@@ -103,6 +103,7 @@ Q_SIGNALS:
void loadProgressChanged();
protected:
+ void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
void runJavaScriptPrivate(const QString& script,
int callbackId) Q_DECL_OVERRIDE;
diff --git a/src/webview/qwebview_webengine.cpp b/src/webview/qwebview_webengine.cpp
index e7d09e2..6ea9872 100644
--- a/src/webview/qwebview_webengine.cpp
+++ b/src/webview/qwebview_webengine.cpp
@@ -147,6 +147,12 @@ void QWebEngineWebViewPrivate::setVisible(bool visible)
m_webEngineView->setVisible(visible);
}
+void QWebEngineWebViewPrivate::setFocus(bool focus)
+{
+ if (focus)
+ m_webEngineView->forceActiveFocus();
+}
+
int QWebEngineWebViewPrivate::loadProgress() const
{
return m_webEngineView->loadProgress();
diff --git a/src/webview/qwebview_webengine_p.h b/src/webview/qwebview_webengine_p.h
index 623b455..16dd773 100644
--- a/src/webview/qwebview_webengine_p.h
+++ b/src/webview/qwebview_webengine_p.h
@@ -81,6 +81,7 @@ public:
void setGeometry(const QRect &geometry) Q_DECL_OVERRIDE;
void setVisibility(QWindow::Visibility visibility) Q_DECL_OVERRIDE;
void setVisible(bool visible) Q_DECL_OVERRIDE;
+ void setFocus(bool focus) Q_DECL_OVERRIDE;
public Q_SLOTS:
void goBack() Q_DECL_OVERRIDE;