From 00c3dcee2fc2059320d7e89d526c1d809b6c7f15 Mon Sep 17 00:00:00 2001 From: beholder Date: Thu, 28 Sep 2017 00:28:54 +0300 Subject: [PATCH] 7925 Create Mode: keyboard focused entry field is not visible note: changed the way of calculation scroll value after showing virtual keyboard. Now it doesn't require KEYBOARD_HEGHT and will always try to position focused element at vertical center of the client area --- .../resources/html/raiseAndLowerKeyboard.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/interface/resources/html/raiseAndLowerKeyboard.js b/interface/resources/html/raiseAndLowerKeyboard.js index 27ead23124..f87312b838 100644 --- a/interface/resources/html/raiseAndLowerKeyboard.js +++ b/interface/resources/html/raiseAndLowerKeyboard.js @@ -14,7 +14,6 @@ var isWindowFocused = true; var isKeyboardRaised = false; var isNumericKeyboard = false; - var KEYBOARD_HEIGHT = 200; function shouldRaiseKeyboard() { var nodeName = document.activeElement.nodeName; @@ -56,13 +55,15 @@ } if (!isKeyboardRaised) { - var delta = document.activeElement.getBoundingClientRect().bottom + 10 - - (document.body.clientHeight - KEYBOARD_HEIGHT); - if (delta > 0) { - setTimeout(function () { - document.body.scrollTop += delta; - }, 500); // Allow time for keyboard to be raised in QML. - } + var timeout = setTimeout(function () { + clearTimeout(timeout); + + var elementRect = document.activeElement.getBoundingClientRect(); + var absoluteElementTop = elementRect.top + window.scrollY; + var middle = absoluteElementTop - (window.innerHeight / 2); + + window.scrollTo(0, middle); + }, 500); // Allow time for keyboard to be raised in QML. } isKeyboardRaised = keyboardRaised;