loleaflet/src/control/Control.LokDialog.js |   26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

New commits:
commit 70fc23d570fe8b6522cff8b950200bb1e7299765
Author: Jan Holesovsky <ke...@collabora.com>
Date:   Mon Mar 26 23:01:00 2018 +0200

    lokdialog: Position the tunneled context menus correctly.
    
    Change-Id: Iae8e6819ffd46cab64bf99ef5c793810949644c4
    Reviewed-on: https://gerrit.libreoffice.org/51954
    Reviewed-by: pranavk <pran...@collabora.co.uk>
    Tested-by: pranavk <pran...@collabora.co.uk>

diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index da71dada5..930655d2f 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -91,8 +91,12 @@ L.Control.LokDialog = L.Control.extend({
                if (e.action === 'created') {
                        var width = parseInt(e.size.split(',')[0]);
                        var height = parseInt(e.size.split(',')[1]);
+
                        if (e.winType === 'dialog') {
-                               this._launchDialog(this._toDlgPrefix(e.id), 
width, height, e.title);
+                               var left = (e.position != null)? 
parseInt(e.position.split(',')[0]): null;
+                               var top = (e.position != null)? 
parseInt(e.position.split(',')[1]): null;
+
+                               this._launchDialog(this._toDlgPrefix(e.id), 
left, top, width, height, e.title);
                                this._sendPaintWindow(e.id, 
this._createRectStr(e.id));
                        } else if (e.winType === 'child') {
                                if (!this._isOpen(e.parentId))
@@ -136,7 +140,7 @@ L.Control.LokDialog = L.Control.extend({
                        // 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, width, height, 
this._dialogs[parseInt(e.id)].title);
+                       this._launchDialog(strDlgId, null, null, 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) {
@@ -223,7 +227,7 @@ L.Control.LokDialog = L.Control.extend({
                this._dialogs[dlgId].input.focus();
        },
 
-       _launchDialog: function(strDlgId, width, height, title) {
+       _launchDialog: function(strDlgId, leftTwips, topTwips, width, height, 
title) {
                var dialogContainer = L.DomUtil.create('div', 'lokdialog', 
document.body);
                L.DomUtil.setStyle(dialogContainer, 'padding', '0px');
                L.DomUtil.setStyle(dialogContainer, 'margin', '0px');
@@ -249,6 +253,22 @@ L.Control.LokDialog = L.Control.extend({
                                that._onDialogClose(that._toRawDlgId(strDlgId), 
true);
                        }
                });
+
+               if (leftTwips != null && topTwips != null) {
+                       // magic to re-calculate the position in twips to 
absolute pixel
+                       // position inside the #document-container
+                       var pixels = this._map._docLayer._twipsToPixels(new 
L.Point(leftTwips, topTwips));
+                       var origin = this._map.getPixelOrigin();
+                       var panePos = this._map._getMapPanePos();
+
+                       var left = pixels.x + panePos.x - origin.x;
+                       var top = pixels.y + panePos.y - origin.y;
+
+                       if (left >= 0 && top >= 0) {
+                               $(dialogContainer).dialog('option', 'position', 
{ my: 'left top', at: 'left+' + left + ' top+' + top, of: '#document-container' 
});
+                       }
+               }
+
                // don't show the dialog surround until we have the dialog 
content
                $(dialogContainer).parent().hide();
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to