loleaflet/src/control/Control.LokDialog.js | 56 +++++++++++++++++------------ 1 file changed, 34 insertions(+), 22 deletions(-)
New commits: commit 192a1f87024c97d4dda031a45cce4d4900416217 Author: Pranav Kant <pran...@collabora.co.uk> Date: Fri Dec 15 20:05:27 2017 +0530 lokdialog: Handle 'title' field in the 'created' cb While at it, move the title, width, height properties to this._dialogs object as they are dialog specific. Change-Id: Ibffcc57b0af210150690b2baf45d627baf5897fb Reviewed-on: https://gerrit.libreoffice.org/46560 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/loleaflet/src/control/Control.LokDialog.js b/loleaflet/src/control/Control.LokDialog.js index 20fb5bf0..2e1e80b1 100644 --- a/loleaflet/src/control/Control.LokDialog.js +++ b/loleaflet/src/control/Control.LokDialog.js @@ -24,6 +24,7 @@ L.Control.LokDialog = L.Control.extend({ }, _getParentDialog: function(id) { + id = parseInt(id); for (var winId in this._dialogs) { if (this._dialogs[winId].childid && this._dialogs[winId].childid === id) { return winId; @@ -39,7 +40,9 @@ L.Control.LokDialog = L.Control.extend({ }, _toRawDlgId: function(dialogId) { - return dialogId.replace(this.dialogIdPrefix, ''); + if (typeof(dialogId) === 'string') + return parseInt(dialogId.replace(this.dialogIdPrefix, '')); + return dialogId; }, _toDlgPrefix: function(id) { @@ -48,11 +51,11 @@ L.Control.LokDialog = L.Control.extend({ // Create a rectangle string of form "x,y,width,height" // if params are missing, assumes 0,0,dialog width, dialog height - _createRectStr: function(x, y, width, height) { + _createRectStr: function(id, x, y, width, height) { if (!width) - width = this._width; + width = this._dialogs[parseInt(id)].width; if (!height) - height = this._height; + height = this._dialogs[parseInt(id)].height; if (!x) x = 0; if (!y) @@ -80,15 +83,18 @@ L.Control.LokDialog = L.Control.extend({ }, _onDialogMsg: function(e) { + e.id = parseInt(e.id); var strDlgId = this._toDlgPrefix(e.id); if (e.action === 'created') { var width = parseInt(e.size.split(',')[0]); var height = parseInt(e.size.split(',')[1]); if (e.winType === 'dialog') { - this._width = width; - this._height = height; - this._launchDialog(this._toDlgPrefix(e.id)); - this._sendPaintWindow(e.id, this._createRectStr()); + this._launchDialog(this._toDlgPrefix(e.id), width, height, e.title); + this._sendPaintWindow(e.id, this._createRectStr(e.id)); + if (e.title) { + this._dialogs[e.id].title = e.title; + $('#' + strDlgId).dialog('option', 'title', e.title); + } } else if (e.winType === 'child') { if (!this._isOpen(e.parentId)) return; @@ -104,7 +110,7 @@ L.Control.LokDialog = L.Control.extend({ this._dialogs[parentId].childx = left; this._dialogs[parentId].childy = top; this._createDialogChild(e.id, parentId, top, left); - this._sendPaintWindow(e.id, this._createRectStr(0, 0, width, height)); + this._sendPaintWindow(e.id, this._createRectStr(null, 0, 0, width, height)); } } else if (e.action === 'invalidate') { var parent = this._getParentDialog(e.id); @@ -116,20 +122,19 @@ L.Control.LokDialog = L.Control.extend({ return; if (!rectangle) - rectangle = '0,0,' + this._width + ',' + this._height; + rectangle = '0,0,' + this._dialogs[e.id].width + ',' + this._dialogs[e.id].height; } this._sendPaintWindow(e.id, rectangle); } else if (e.action === 'size_changed') { - this._width = parseInt(e.size.split(',')[0]); - this._height = parseInt(e.size.split(',')[1]); + width = parseInt(e.size.split(',')[0]); + height = parseInt(e.size.split(',')[1]); strDlgId = this._toDlgPrefix(e.id); // FIXME: we don't really have to destroy and launch the dialog again but do it for // now because the size sent to us previously in 'created' cb is not correct $('#' + strDlgId).remove(); - this._launchDialog(strDlgId); - $('#' + strDlgId).dialog('option', 'title', this._title); - this._sendPaintWindow(e.id, this._createRectStr()); + this._launchDialog(strDlgId, width, height, this._dialogs[parseInt(e.id)].title); + this._sendPaintWindow(e.id, this._createRectStr(e.id)); } else if (e.action === 'cursor_invalidate') { if (this._isOpen(e.id) && !!e.rectangle) { var rectangle = e.rectangle.split(','); @@ -143,8 +148,10 @@ L.Control.LokDialog = L.Control.extend({ $('#' + strDlgId + '-cursor').css({display: this._dialogs[e.id].cursorVisible ? 'block' : 'none'}); } } else if (e.action === 'title_changed') { - this._title = e.title; - $('#' + strDlgId).dialog('option', 'title', e.title); + if (e.title && this._dialogs[parseInt(e.id)]) { + this._dialogs[parseInt(e.id)].title = e.title; + $('#' + strDlgId).dialog('option', 'title', e.title); + } } else if (e.action === 'cursor_visible') { this._dialogs[e.id].cursorVisible = e.visible === 'true'; if (this._dialogs[e.id].cursorVisible) @@ -172,15 +179,15 @@ L.Control.LokDialog = L.Control.extend({ L.DomUtil.addClass(cursor, 'blinking-cursor'); }, - _launchDialog: function(strDlgId) { + _launchDialog: function(strDlgId, width, height, title) { var canvas = '<div class="lokdialog" style="padding: 0px; margin: 0px; overflow: hidden;" id="' + strDlgId + '">' + - '<canvas class="lokdialog_canvas" tabindex="0" id="' + strDlgId + '-canvas" width="' + this._width + 'px" height="' + this._height + 'px"></canvas>' + + '<canvas class="lokdialog_canvas" tabindex="0" id="' + strDlgId + '-canvas" width="' + width + 'px" height="' + height + 'px"></canvas>' + '</div>'; $(document.body).append(canvas); var that = this; $('#' + strDlgId).dialog({ - width: this._width, - title: 'LOK Dialog', // TODO: Get the 'real' dialog title from the backend + width: width, + title: title ? title : '', modal: false, closeOnEscape: true, resizable: false, @@ -190,7 +197,12 @@ L.Control.LokDialog = L.Control.extend({ } }); - this._dialogs[this._toRawDlgId(strDlgId)] = { open: true }; + this._dialogs[this._toRawDlgId(strDlgId)] = { + open: true, + width: width, + height: height, + title: title + }; // don't make 'TAB' focus on this button; we want to cycle focus in the lok dialog with each TAB $('.lokdialog_container button.ui-dialog-titlebar-close').attr('tabindex', '-1').blur(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits