loleaflet/src/control/Control.LokDialog.js | 46 ++++++++++++++++++----------- 1 file changed, 29 insertions(+), 17 deletions(-)
New commits: commit 25501927dc81811a6414b7df3c79412328223fe2 Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Sat May 2 15:13:58 2020 +0200 Commit: Marco Cecchetti <marco.cecche...@collabora.com> CommitDate: Tue May 5 11:53:49 2020 +0200 leaflet: calc: handle calc formula bar offset position Change-Id: I5c48c51aa49247a4452580e9619a0f2db8d740ec Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93404 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Marco Cecchetti <marco.cecche...@collabora.com> diff --git a/loleaflet/src/control/Control.LokDialog.js b/loleaflet/src/control/Control.LokDialog.js index 9c92895b2..6841c5087 100644 --- a/loleaflet/src/control/Control.LokDialog.js +++ b/loleaflet/src/control/Control.LokDialog.js @@ -294,7 +294,7 @@ L.Control.LokDialog = L.Control.extend({ this._launchDialog(e.id, left, top, width, height, e.title); } else if (e.winType === 'calc-input-win') { lines = parseInt(e.lines); - this._launchCalcInputBar(e.id, width, height, lines); + this._launchCalcInputBar(e.id, left, top, width, height, lines); } else if (e.winType === 'deck') { if (!window.mode.isMobile()) { this._launchSidebar(e.id, width, height); @@ -368,7 +368,9 @@ L.Control.LokDialog = L.Control.extend({ this._launchSidebar(e.id, width, height); } else if (e.winType === 'calc-input-win' || this.isCalcInputBar(e.id)) { lines = parseInt(e.lines); - this._launchCalcInputBar(e.id, width, height, lines); + left = left | this._calcInputBar.left; + top = top | this._calcInputBar.top; + this._launchCalcInputBar(e.id, left, top, width, height, lines); } else { $('#' + strId).remove(); @@ -804,21 +806,22 @@ L.Control.LokDialog = L.Control.extend({ this._sendPaintWindow(id, this._createRectStr(id)); }, - _launchCalcInputBar: function(id, width, height, textLines) { - console.log('_launchCalcInputBar: start: id: ' + id + ', width: ' + width + ', height: ' + height + ', textLines: ' + textLines); + _launchCalcInputBar: function(id, left, top, width, height, textLines) { + console.log('_launchCalcInputBar: start: id: ' + id + ', left: ' + left + ', top: ' + top + + ', width: ' + width + ', height: ' + height + ', textLines: ' + textLines); if (!this._calcInputBar || this._calcInputBar.id !== id) { if (this._calcInputBar) $('#' + this._calcInputBar.strId).remove(); - this._createCalcInputbar(id, width, height, textLines); + this._createCalcInputbar(id, left, top, width, height, textLines); } else { // Update in-place. We will resize during rendering. - this._adjustCalcInputBar(id, width, height, textLines); + this._adjustCalcInputBar(id, left, top, width, height, textLines); } console.log('_launchCalcInputBar: end'); }, - _adjustCalcInputBar: function(id, width, height, textLines) { + _adjustCalcInputBar: function(id, left, top, width, height, textLines) { if (this._calcInputBar) { var oldHeight = this._calcInputBar.height; var delta = height - oldHeight; @@ -827,17 +830,17 @@ L.Control.LokDialog = L.Control.extend({ // Recreate the input-bar. $('#' + this._calcInputBar.strId).remove(); - this._createCalcInputbar(id, width, height, textLines); + this._createCalcInputbar(id, left, top, width, height, textLines); // Resize the container. var documentContainer = L.DomUtil.get('document-container'); if (documentContainer) { - var top = documentContainer.offsetTop; + var offsetTop = documentContainer.offsetTop; var noTopProp = true; var props = documentContainer.style.cssText.split(';'); for (var i = 0; i < props.length; ++i) { if (props[i].startsWith('top')) { - props[i] = 'top: ' + (top + delta).toString() + 'px !important'; + props[i] = 'top: ' + (offsetTop + delta).toString() + 'px !important'; documentContainer.setAttribute('style', props.join(';')); noTopProp = false; break; @@ -845,19 +848,19 @@ L.Control.LokDialog = L.Control.extend({ } if (noTopProp) { var styleAttr = documentContainer.style.cssText; - styleAttr += '; top: ' + (top + delta).toString() + 'px !important'; + styleAttr += '; top: ' + (offsetTop + delta).toString() + 'px !important'; documentContainer.setAttribute('style', styleAttr); } } var spreadsheetRowColumnFrame = L.DomUtil.get('spreadsheet-row-column-frame'); if (spreadsheetRowColumnFrame) { - top = spreadsheetRowColumnFrame.offsetTop; + offsetTop = spreadsheetRowColumnFrame.offsetTop; noTopProp = true; props = spreadsheetRowColumnFrame.style.cssText.split(';'); for (i = 0; i < props.length; ++i) { if (props[i].startsWith('top')) { - props[i] = 'top: ' + (top + delta).toString() + 'px !important'; + props[i] = 'top: ' + (offsetTop + delta).toString() + 'px !important'; spreadsheetRowColumnFrame.setAttribute('style', props.join(';')); noTopProp = false; break; @@ -865,7 +868,7 @@ L.Control.LokDialog = L.Control.extend({ } if (noTopProp) { styleAttr = spreadsheetRowColumnFrame.style.cssText; - styleAttr += '; top: ' + (top + delta).toString() + 'px !important'; + styleAttr += '; top: ' + (offsetTop + delta).toString() + 'px !important'; spreadsheetRowColumnFrame.setAttribute('style', styleAttr); } } @@ -891,7 +894,7 @@ L.Control.LokDialog = L.Control.extend({ } }, - _createCalcInputbar: function(id, width, height, textLines) { + _createCalcInputbar: function(id, left, top, width, height, textLines) { console.log('_createCalcInputBar: start: id: ' + id + ', width: ' + width + ', height: ' + height + ', textLines: ' + textLines); var strId = this._toStrId(id); @@ -949,8 +952,8 @@ L.Control.LokDialog = L.Control.extend({ strId: strId, isSidebar: false, isCalcInputBar: true, - left: 0, - top: 0, + left: left, + top: top, width: width, height: height, textLines: textLines, @@ -1111,7 +1114,12 @@ L.Control.LokDialog = L.Control.extend({ this._onSelectionHandleDrag(e); return; } + var pos = this._isSelectionHandle(e.target) ? L.DomEvent.getMousePosition(e, canvas) : {x: e.offsetX, y: e.offsetY}; + if (this.isCalcInputBar(id)) { + pos.x += this._calcInputBar.left; + pos.y += this._calcInputBar.top; + } this._postWindowMouseEvent('move', id, pos.x, pos.y, 1, 0, 0); }, this); @@ -1150,6 +1158,10 @@ L.Control.LokDialog = L.Control.extend({ // 'mousedown' -> 'buttondown' var lokEventType = e.type.replace('mouse', 'button'); var pos = this._isSelectionHandle(e.target) ? L.DomEvent.getMousePosition(e, canvas) : {x: e.offsetX, y: e.offsetY}; + if (this.isCalcInputBar(id)) { + pos.x += this._calcInputBar.left; + pos.y += this._calcInputBar.top; + } this._postWindowMouseEvent(lokEventType, id, pos.x, pos.y, 1, buttons, modifier); this._map.setWinId(id); //dlgInput.focus(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits