[Libreoffice-commits] online.git: loleaflet/src

Jan Holesovsky (via logerrit) logerrit at kemper.freedesktop.org
Thu Feb 13 09:29:02 UTC 2020


 loleaflet/src/layer/marker/TextInput.js |   15 ++++++++++++++-
 loleaflet/src/map/Map.js                |    4 +---
 2 files changed, 15 insertions(+), 4 deletions(-)

New commits:
commit f7663f37a2258b4088ba9c4e488d878f34705123
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Feb 13 10:10:28 2020 +0100
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Feb 13 10:28:45 2020 +0100

    android: Control the keyboard appearing directly in TextInput.js.
    
    And add one more trick: If the keyboard is not supposed to be shown, set
    the read-only attribute for the textarea before the focus(), and remove
    it again after the blur().
    
    Change-Id: I5ff4d0e093cb70737af205c04951d8dd58a35831
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88587
    Tested-by: Jan Holesovsky <kendy at collabora.com>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/loleaflet/src/layer/marker/TextInput.js b/loleaflet/src/layer/marker/TextInput.js
index 5f95d6a46..98138e761 100644
--- a/loleaflet/src/layer/marker/TextInput.js
+++ b/loleaflet/src/layer/marker/TextInput.js
@@ -151,14 +151,27 @@ L.TextInput = L.Layer.extend({
 	},
 
 	// Focus the textarea/contenteditable
-	focus: function() {
+	// @acceptInput (only on "mobile" (= mobile phone) or on iOS and Android in general) true if we want to
+	// accept key input, and show the virtual keyboard.
+	focus: function(acceptInput) {
 		// Clicking or otherwise focusing the map should focus on the clipboard
 		// container in order for the user to input text (and on-screen keyboards
 		// to pop-up), unless the document is read only.
 		if (this._map._permission !== 'edit') {
 			return;
 		}
+
+		// Trick to avoid showing the software keyboard: Set the textarea
+		// read-only before focus() and reset it again after the blur()
+		if ((window.ThisIsAMobileApp || window.mode.isMobile()) && acceptInput !== true)
+			this._textArea.setAttribute('readonly', true);
+
 		this._textArea.focus();
+
+		if ((window.ThisIsAMobileApp || window.mode.isMobile()) && acceptInput !== true) {
+			this._textArea.blur();
+			this._textArea.removeAttribute('readonly');
+		}
 	},
 
 	blur: function() {
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index de9666179..ba848c2b2 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -908,9 +908,7 @@ L.Map = L.Evented.extend({
 	// @acceptInput (only on "mobile" (= mobile phone) or on iOS and Android in general) true if we want to
 	// accept key input, and show the virtual keyboard.
 	focus: function (acceptInput) {
-		this._textInput.focus();
-		if ((window.ThisIsAMobileApp || window.mode.isMobile()) && acceptInput !== true)
-			this.blur();
+		this._textInput.focus(acceptInput);
 	},
 
 	// Lose focus to stop accepting keyboard input.


More information about the Libreoffice-commits mailing list