From 8f42a3fe9e2dfe51c9e824b2c61cd3fc366ba643 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 14 Oct 2016 12:14:23 +1300 Subject: [PATCH] Fix keyboard state in browser when switching focus to/from dialog frame --- interface/resources/html/raiseAndLowerKeyboard.js | 13 ++++++++++++- interface/resources/qml/Browser.qml | 7 ------- interface/resources/qml/controls-uit/WebView.qml | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/interface/resources/html/raiseAndLowerKeyboard.js b/interface/resources/html/raiseAndLowerKeyboard.js index fb53fcf743..3897c9ff3f 100644 --- a/interface/resources/html/raiseAndLowerKeyboard.js +++ b/interface/resources/html/raiseAndLowerKeyboard.js @@ -11,6 +11,7 @@ var POLL_FREQUENCY = 500; // ms var MAX_WARNINGS = 3; var numWarnings = 0; + var isWindowFocused = true; var isKeyboardRaised = false; var isNumericKeyboard = false; var KEYBOARD_HEIGHT = 200; @@ -38,7 +39,7 @@ var keyboardRaised = shouldRaiseKeyboard(); var numericKeyboard = shouldSetNumeric(); - if (keyboardRaised !== isKeyboardRaised || numericKeyboard !== isNumericKeyboard) { + if (isWindowFocused && (keyboardRaised !== isKeyboardRaised || numericKeyboard !== isNumericKeyboard)) { if (typeof EventBridge !== "undefined" && EventBridge !== null) { EventBridge.emitWebEvent( @@ -65,4 +66,14 @@ isNumericKeyboard = numericKeyboard; } }, POLL_FREQUENCY); + + window.addEventListener("focus", function () { + isWindowFocused = true; + }); + + window.addEventListener("blur", function () { + isWindowFocused = false; + isKeyboardRaised = false; + isNumericKeyboard = false; + }); })(); diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index b258dadae4..869c0556fb 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -31,13 +31,6 @@ ScrollingWindow { addressBar.text = webview.url } - onParentChanged: { - if (visible) { - addressBar.forceActiveFocus(); - addressBar.selectAll() - } - } - function showPermissionsBar(){ permissionsContainer.visible=true; } diff --git a/interface/resources/qml/controls-uit/WebView.qml b/interface/resources/qml/controls-uit/WebView.qml index 4a8ffde52a..2895f36944 100644 --- a/interface/resources/qml/controls-uit/WebView.qml +++ b/interface/resources/qml/controls-uit/WebView.qml @@ -16,5 +16,6 @@ BaseWebView { // Load dialog via OffscreenUi so that JavaScript EventBridge is available. var browser = OffscreenUi.load("Browser.qml"); request.openIn(browser.webView); + browser.webView.forceActiveFocus(); } }