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
