FB12459 - Keyboard shouldn't lower when move between property values in Create app in HMD mode

This commit is contained in:
Alexander Ivash 2018-09-20 00:42:39 +03:00
parent 568b5b9142
commit 08b07e57d0
5 changed files with 41 additions and 4 deletions

View file

@ -18,6 +18,11 @@
window.isKeyboardRaised = false;
window.isNumericKeyboard = false;
window.isPasswordField = false;
window.lastActiveElement = null;
function getActiveElement() {
return document.activeElement;
}
function shouldSetPasswordField() {
var nodeType = document.activeElement.type;
@ -65,10 +70,11 @@
var keyboardRaised = shouldRaiseKeyboard();
var numericKeyboard = shouldSetNumeric();
var passwordField = shouldSetPasswordField();
var activeElement = getActiveElement();
if (isWindowFocused &&
(keyboardRaised !== window.isKeyboardRaised || numericKeyboard !== window.isNumericKeyboard
|| passwordField !== window.isPasswordField)) {
|| passwordField !== window.isPasswordField || activeElement !== window.lastActiveElement)) {
if (typeof EventBridge !== "undefined" && EventBridge !== null) {
EventBridge.emitWebEvent(
@ -90,6 +96,7 @@
window.isKeyboardRaised = keyboardRaised;
window.isNumericKeyboard = numericKeyboard;
window.isPasswordField = passwordField;
window.lastActiveElement = activeElement;
}
}, POLL_FREQUENCY);

View file

@ -34,10 +34,34 @@ Item {
webViewCore.stop();
}
Timer {
id: delayedUnfocuser
repeat: false
interval: 200
onTriggered: {
// The idea behind this is to delay unfocusing, so that fast lower/raise will not result actual unfocusing.
// Fast lower/raise happens every time keyboard is being re-raised (see the code below in OffscreenQmlSurface::setKeyboardRaised)
//
// if (raised) {
// item->setProperty("keyboardRaised", QVariant(!raised));
// }
//
// item->setProperty("keyboardRaised", QVariant(raised));
//
webViewCore.runJavaScript("if (document.activeElement) document.activeElement.blur();", function(result) {
console.log('unfocus completed: ', result);
});
}
}
function unfocus() {
webViewCore.runJavaScript("if (document.activeElement) document.activeElement.blur();", function(result) {
console.log('unfocus completed: ', result);
});
delayedUnfocuser.start();
}
function stopUnfocus() {
delayedUnfocuser.stop();
}
function onLoadingChanged(loadRequest) {

View file

@ -13,6 +13,8 @@ Item {
onKeyboardRaisedChanged: {
if(!keyboardRaised) {
webroot.unfocus();
} else {
webroot.stopUnfocus();
}
}
property bool punctuationMode: false

View file

@ -17,6 +17,8 @@ Item {
onKeyboardRaisedChanged: {
if(!keyboardRaised) {
webroot.unfocus();
} else {
webroot.stopUnfocus();
}
}
property bool punctuationMode: false

View file

@ -15,6 +15,8 @@ Item {
onKeyboardRaisedChanged: {
if(!keyboardRaised) {
webroot.unfocus();
} else {
webroot.stopUnfocus();
}
}
property bool punctuationMode: false