loleaflet/src/control/Control.LokDialog.js |   34 ++++++++---------------------
 1 file changed, 10 insertions(+), 24 deletions(-)

New commits:
commit e48c919fbbbba25fb2f3482e18ddbf72cc7281c9
Author:     Ashod Nakashian <ashod.nakash...@collabora.co.uk>
AuthorDate: Sun Dec 1 13:48:14 2019 -0500
Commit:     Ashod Nakashian <ashnak...@gmail.com>
CommitDate: Mon Dec 2 04:30:23 2019 +0100

    leaflet: safer sidebar and some cleanups
    
    Change-Id: I360e4c106891a2db29b75eb50f07661fe39bea94
    Reviewed-on: https://gerrit.libreoffice.org/84176
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Ashod Nakashian <ashnak...@gmail.com>

diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 0d3c3f420..75b56bf5d 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -191,23 +191,7 @@ L.Control.LokDialog = L.Control.extend({
        },
 
        _sendPaintWindowRect: function(id, x, y, width, height) {
-               if (!width)
-                       width = this._dialogs[id].width;
-               if (width <= 0)
-                       return; // Don't request rendering an empty area.
-               if (!height)
-                       height = this._dialogs[id].height;
-               if (height <= 0)
-                       return; // Don't request rendering an empty area.
-               if (!x)
-                       x = 0;
-               if (!y)
-                       y = 0;
-
-               // pre-multiplied by the scale factor
-               var dpiscale = L.getDpiScaleFactor();
-               var rect = [x * dpiscale, y * dpiscale, width * dpiscale, 
height * dpiscale].join(',');
-               this._sendPaintWindow(id, rect);
+               this._sendPaintWindow(id, this._createRectStr(id, x, y, width, 
height));
        },
 
        _sendPaintWindow: function(id, rectangle) {
@@ -393,9 +377,9 @@ L.Control.LokDialog = L.Control.extend({
        },
 
        focus: function(dlgId) {
-               // In case of the sidebar we should be carefull about
+               // In case of the sidebar we should be careful about
                // grabbing the focus from the main window.
-               if (this._dialogs[dlgId].isSidebar) {
+               if (this._isSidebar(dlgId)) {
                        // On mobile, grab the focus if the sidebar is visible.
                        if (window.mode.isMobile()) {
                                if (!this.mobileSidebarVisible)
@@ -411,7 +395,7 @@ L.Control.LokDialog = L.Control.extend({
 
                this._map.setWinId(dlgId);
                var inputContainer = this._map.getTextInput();
-               if (this._dialogs[dlgId].cursorVisible) {
+               if (dlgId in this._dialogs && 
this._dialogs[dlgId].cursorVisible) {
                        inputContainer.focus();
                } else {
                        inputContainer.blur();
@@ -954,8 +938,7 @@ L.Control.LokDialog = L.Control.extend({
                        }
 
                        // Sidebars find out their size and become visible on 
first paint.
-                       var isSidebar = that._isSidebar(parentId);
-                       if (isSidebar) {
+                       if (that._isSidebar(parentId)) {
                                that._resizeSidebar(strId, 
that._currentDeck.width);
 
                                // Update the underlying canvas.
@@ -975,8 +958,11 @@ L.Control.LokDialog = L.Control.extend({
                        var container = L.DomUtil.get(strId);
                        if (container)
                                $(container).parent().show();
-                       that.focus(parentId);
-                       that._dialogs[parentId].isPainting = false;
+                       if (parentId in that._dialogs) {
+                               // We might have closed the dialog by the time 
we render.
+                               that.focus(parentId);
+                               that._dialogs[parentId].isPainting = false;
+                       }
 
                        if (isCalcInputBar && container && 
that._calcInputBar.width !== container.clientWidth) {
                                console.log('_paintDialog: container width: ' + 
container.clientWidth + ', _calcInputBar width: ' + that._calcInputBar.width);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to