loleaflet/src/control/Control.LokDialog.js |   13 ++++++-------
 loleaflet/src/map/Map.js                   |   10 ++++++++--
 2 files changed, 14 insertions(+), 9 deletions(-)

New commits:
commit cc9add3208819130d5d7e3f6d873ed67912a7e01
Author:     Ashod Nakashian <ashod.nakash...@collabora.co.uk>
AuthorDate: Wed Jan 29 10:33:19 2020 -0500
Commit:     Aron Budea <aron.bu...@collabora.com>
CommitDate: Wed Jan 29 18:36:38 2020 +0100

    leaflet: fix input-bar now showing keyboard on mobile
    
    Change-Id: Ib81822cae342d5e8bc394fc84e43ec681ecffb8f
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/87693
    Reviewed-by: Aron Budea <aron.bu...@collabora.com>
    Tested-by: Aron Budea <aron.bu...@collabora.com>

diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 4779f4ed9..6afb2d064 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -345,15 +345,15 @@ L.Control.LokDialog = L.Control.extend({
                                $('#' + strId).dialog('option', 'title', 
e.title);
                        }
                } else if (e.action === 'cursor_visible') {
-                       // cursor_visible means focus has changed.
+                       // cursor_visible implies focus has changed, but can
+                       // be misleading when it flips back on forth on typing!
                        this._dialogs[e.id].cursorVisible = e.visible === 
'true';
                        if (this._dialogs[e.id].cursorVisible) {
                                $('#' + strId + '-cursor').css({display: 
'block'});
-                               this._map.onFocusDialog(this, e.id);
+                               this._map.fire('changefocuswidget', {winId: 
e.id, dialog: this, acceptInput: true}); // Us.
                        }
                        else {
                                $('#' + strId + '-cursor').css({display: 
'none'});
-                               this._map.fire('changefocuswidget', {winId: 0, 
dialog: null}); // Editor.
                        }
                } else if (e.action === 'close') {
                        parent = this._getParentId(e.id);
@@ -380,7 +380,6 @@ L.Control.LokDialog = L.Control.extend({
                // set the position of the cursor container element
                L.DomUtil.setStyle(this._dialogs[dlgId].cursor, 'left', x + 
'px');
                L.DomUtil.setStyle(this._dialogs[dlgId].cursor, 'top', y + 
'px');
-               this._map.focus();
        },
 
        _createDialogCursor: function(dialogId) {
@@ -391,7 +390,7 @@ L.Control.LokDialog = L.Control.extend({
                L.DomUtil.addClass(cursor, 'blinking-cursor');
        },
 
-       focus: function(dlgId) {
+       focus: function(dlgId, acceptInput) {
                // In case of the sidebar we should be careful about
                // grabbing the focus from the main window.
                if (this._isSidebar(dlgId)) {
@@ -410,7 +409,7 @@ L.Control.LokDialog = L.Control.extend({
 
                this._map.setWinId(dlgId);
                if (dlgId in this._dialogs) {
-                       this._map.focus();
+                       this._map.focus(acceptInput);
                }
        },
 
@@ -963,7 +962,7 @@ L.Control.LokDialog = L.Control.extend({
                        // We lost the focus.
                        this._onEditorGotFocus();
                } else {
-                       this.focus(e.winId);
+                       this.focus(e.winId, e.acceptInput);
                }
        },
 
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 863e2a4f4..afd66ef8b 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -1336,7 +1336,10 @@ L.Map = L.Evented.extend({
        },
 
        // Change the focus to a dialog or editor.
-       _changeFocusWidget: function (dialog, winId) {
+       // @dialog is the instance of the dialog class.
+       // @winId is the ID of the dialog/sidebar, or 0 for the editor.
+       // @acceptInput iff defined, map.focus is called and passed to it.
+       _changeFocusWidget: function (dialog, winId, acceptInput) {
                if (!this._loaded) { return; }
 
                this._winId = winId;
@@ -1345,6 +1348,9 @@ L.Map = L.Evented.extend({
                var doclayer = this._docLayer;
                if (doclayer)
                        doclayer._updateCursorAndOverlay();
+
+               if (acceptInput !== undefined)
+                       this.focus(acceptInput);
        },
 
        // Our browser tab lost focus.
@@ -1374,7 +1380,7 @@ L.Map = L.Evented.extend({
                if (e.winId === 0) {
                        this._onEditorGotFocus();
                } else {
-                       this._changeFocusWidget(e.dialog, e.winId);
+                       this._changeFocusWidget(e.dialog, e.winId, 
e.acceptInput);
                }
        },
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to