loleaflet/src/control/Control.JSDialogBuilder.js |    4 +++-
 loleaflet/src/control/Control.LokDialog.js       |   21 +++++++++++++++++++--
 loleaflet/src/control/Control.MobileWizard.js    |   11 +++++++++++
 3 files changed, 33 insertions(+), 3 deletions(-)

New commits:
commit e55892b997337c0a122b0fe4809983742c753036
Author:     Szymon Kłos <[email protected]>
AuthorDate: Fri Feb 21 09:54:33 2020 +0100
Commit:     Szymon Kłos <[email protected]>
CommitDate: Tue May 19 12:56:27 2020 +0200

    jsdialog: handle events for dialogs in mobilewizard
    
    - remember window id
    - close mobile wizard on dialog close
    - close dialog on mobile wizard close
    - don't show dialogs on mobile devices
    
    Change-Id: I585c5b92192655684eedd62d88817a92fc1fc0a8
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93005
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Szymon Kłos <[email protected]>

diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js 
b/loleaflet/src/control/Control.JSDialogBuilder.js
index 4ecbc0ad9..ab0996c22 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -228,7 +228,9 @@ L.Control.JSDialogBuilder = L.Control.extend({
                        builder.map.sendUnoCommand(encodedCommand);
                } else if (object) {
                        data = typeof data === 'string' ? data.replace('"', 
'\\"') : data;
-                       var message = 'dialogevent ' + (window.sidebarId !== 
undefined ? window.sidebarId : -1) +
+                       var windowId = window.mobileDialogId !== undefined ? 
window.mobileDialogId :
+                                                               
(window.sidebarId !== undefined ? window.sidebarId : -1);
+                       var message = 'dialogevent ' + windowId +
                            ' {\"id\":\"' + object.id + '\", \"cmd\": \"' + 
eventType + '\", \"data\":\"' + data + '\"}';
                        builder.map._socket.sendMessage(message);
                }
diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 43a8ee7f4..a96ae309f 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -59,6 +59,10 @@ L.Control.LokDialog = L.Control.extend({
 
        dialogIdPrefix: 'lokdialog-',
 
+       hasDialogInMobilePanelOpened: function() {
+               return window.mobileDialogId !== undefined;
+       },
+
        onPan: function (ev) {
                if (!draggedObject)
                        return;
@@ -289,7 +293,7 @@ L.Control.LokDialog = L.Control.extend({
                }
 
                if (e.action === 'created') {
-                       if (e.winType === 'dialog') {
+                       if (e.winType === 'dialog' && !window.mode.isMobile()) {
                                // When left/top are invalid, the dialog shows 
in the center.
                                this._launchDialog(e.id, left, top, width, 
height, e.title);
                        } else if (e.winType === 'calc-input-win') {
@@ -335,7 +339,17 @@ L.Control.LokDialog = L.Control.extend({
                }
 
                // All other callbacks doen't make sense without an active 
dialog.
-               if (!(this._isOpen(e.id) || this._getParentId(e.id)))
+               if (!(this._isOpen(e.id) || this._getParentId(e.id))) {
+                       if (e.action == 'close' && window.mobileDialogId == 
e.id) {
+                               window.mobileDialogId = undefined;
+                               this._map.fire('closemobilewizard');
+                       }
+
+                       return;
+               }
+
+               // We don't want dialogs and sidebar on smartphones, only calc 
input window is allowed
+               if (window.mode.isMobile() && e.winType !== 'calc-input-win' && 
!this.isCalcInputBar(e.id))
                        return;
 
                if (e.action === 'invalidate') {
@@ -1401,6 +1415,9 @@ L.Control.LokDialog = L.Control.extend({
                                this._onDialogClose(dialogId, true);
                        }
                }
+               if (this.hasDialogInMobilePanelOpened()) {
+                       this._onDialogClose(window.mobileDialogId, true);
+               }
        },
 
        onCloseCurrentPopUp: function() {
diff --git a/loleaflet/src/control/Control.MobileWizard.js 
b/loleaflet/src/control/Control.MobileWizard.js
index 926f9f707..958eeb985 100644
--- a/loleaflet/src/control/Control.MobileWizard.js
+++ b/loleaflet/src/control/Control.MobileWizard.js
@@ -93,6 +93,12 @@ L.Control.MobileWizard = L.Control.extend({
        },
 
        _hideWizard: function() {
+               // dialog
+               if (this.map.dialog.hasDialogInMobilePanelOpened()) {
+                       this.map.dialog._onDialogClose(window.mobileDialogId, 
true);
+                       window.mobileDialogId = undefined;
+               }
+
                $('#mobile-wizard').hide();
                $('#mobile-wizard-content').empty();
                if (this.map._permission === 'edit') {
@@ -320,6 +326,11 @@ L.Control.MobileWizard = L.Control.extend({
                                return;
                        }
 
+                       if (data.id && !isNaN(data.id) && !isSidebar) {
+                               // id is a number - remember window id for 
interaction
+                               window.mobileDialogId = data.id;
+                       }
+
                        // Sometimes it happens that we get the same sidebar
                        // structure twice. This makes hard to test mobile 
wizard.
                        if (isSidebar && L.Browser.cypressTest) {
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to