kit/Kit.cpp                                |   11 ++++-------
 loleaflet/dist/loleaflet.css               |    6 +++++-
 loleaflet/src/control/Control.LokDialog.js |   21 +++++++++++++++++----
 loleaflet/src/control/Toolbar.js           |    4 ++--
 wsd/ClientSession.cpp                      |   28 ++--------------------------
 wsd/ClientSession.hpp                      |    2 --
 wsd/DocumentBroker.cpp                     |    8 ++------
 wsd/DocumentBroker.hpp                     |    4 +---
 8 files changed, 33 insertions(+), 51 deletions(-)

New commits:
commit f1d78c7e6268ca43c6a949f61599780a5a8d7d73
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Sun Nov 5 15:57:12 2017 +0530

    lokdialog: send invalidate rectangle in dialog command
    
    Change-Id: Iae00498a0ead1ee65dfce0332721e0d0fd2202fb
    Reviewed-on: https://gerrit.libreoffice.org/44518
    Reviewed-by: pranavk <pran...@collabora.co.uk>
    Tested-by: pranavk <pran...@collabora.co.uk>

diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 2cf541ed..d798ce88 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -846,10 +846,11 @@ public:
         ws->sendFrame(output.data(), output.size(), WebSocket::FRAME_BINARY);
     }
 
-    void renderDialog(const std::vector<std::string>& tokens, const 
std::shared_ptr<LOOLWebSocket>& ws, bool child)
+    void renderDialog(const std::vector<std::string>& tokens, const 
std::shared_ptr<LOOLWebSocket>& ws)
     {
         assert(ws && "Expected a non-null websocket.");
 
+        const bool child = tokens[0] == "dialogchild";
         const int nCanvasWidth = 800;
         const int nCanvasHeight = 600;
         size_t pixmapDataSize = 4 * nCanvasWidth * nCanvasHeight;
@@ -1733,13 +1734,9 @@ private:
                 {
                     renderCombinedTiles(tokens, _ws);
                 }
-                else if (tokens[0] == "dialog")
+                else if (tokens[0] == "dialog" || tokens[0] == "dialogchild")
                 {
-                    renderDialog(tokens, _ws, false);
-                }
-                else if (tokens[0] == "dialogchild")
-                {
-                    renderDialog(tokens, _ws, true);
+                    renderDialog(tokens, _ws);
                 }
                 else if (LOOLProtocol::getFirstToken(tokens[0], '-') == 
"child")
                 {
diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 96e5388f..65ebf07c 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -19,12 +19,17 @@ L.Control.LokDialog = L.Control.extend({
        },
 
        _onDialogMsg: function(e) {
-               // FIXME: core sends a different id for many dialogs in 
callbacks
                e.dialogId = e.dialogId.replace('.uno:', '');
                if (e.action === 'invalidate') {
                        // ignore any invalidate callbacks when we have closed 
the dialog
                        if (this._isOpen(e.dialogId)) {
-                               this._map.sendDialogCommand(e.dialogId);
+                               var rect = e.rectangle.match(/\d+g/);
+                               if (rect != null && rect.length == 4) {
+                                       var json = {
+                                               rectangle: e.rectangle
+                                       };
+                               }
+                               this._map.sendDialogCommand(e.dialogId, json);
                        }
                } else if (e.action === 'close') {
                        this._onDialogClose(e.dialogId);
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index 4ec419e3..960c02d4 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -139,14 +139,14 @@ L.Map.include({
                }
        },
 
-       sendDialogCommand: function (command, json, child) {
+       sendDialogCommand: function (command, rectangle, child) {
                if (this._permission === 'edit') {
                        if (!command.startsWith('.uno:'))
                                command = '.uno:' + command;
                        var dialogCmd = 'dialog';
                        if (child)
                                dialogCmd = 'dialogchild';
-                       this._socket.sendMessage(dialogCmd + ' ' + command + 
(json ? ' ' + JSON.stringify(json) : ''));
+                       this._socket.sendMessage(dialogCmd + ' ' + command + 
(rectangle ? ' rectangle=' + rectangle : ''));
                }
        },
 
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 544b8497..c6b25f8f 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -221,13 +221,9 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
     {
         return sendTile(buffer, length, tokens, docBroker);
     }
-    else if (tokens[0] == "dialog")
+    else if (tokens[0] == "dialog" || tokens[0] == "dialogchild")
     {
-        return sendDialog(buffer, length, tokens, docBroker, false);
-    }
-    else if (tokens[0] == "dialogchild")
-    {
-        return sendDialog(buffer, length, tokens, docBroker, true);
+        docBroker->handleDialogRequest(std::string(buffer, length));
     }
     else if (tokens[0] == "tilecombine")
     {
@@ -428,26 +424,6 @@ bool ClientSession::sendTile(const char * /*buffer*/, int 
/*length*/, const std:
     return true;
 }
 
-bool ClientSession::sendDialog(const char * /*buffer*/, int /*length*/, const 
std::vector<std::string>& tokens,
-                               const std::shared_ptr<DocumentBroker>& 
docBroker, bool child)
-{
-    const std::string dialogCmd = child ? "dialogchild" : "dialog";
-    try
-    {
-        if (child)
-            docBroker->handleDialogRequest(tokens[1], shared_from_this(), 
true);
-        else
-            docBroker->handleDialogRequest(tokens[1], shared_from_this(), 
false);
-    }
-    catch (const std::exception& exc)
-    {
-        LOG_ERR("Failed to process " + dialogCmd + " command: " << exc.what());
-        return sendTextFrame("error: cmd=" + dialogCmd + " kind=invalid");
-    }
-
-    return true;
-}
-
 bool ClientSession::sendCombinedTiles(const char* /*buffer*/, int /*length*/, 
const std::vector<std::string>& tokens,
                                       const std::shared_ptr<DocumentBroker>& 
docBroker)
 {
diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp
index b16fe448..abadb86d 100644
--- a/wsd/ClientSession.hpp
+++ b/wsd/ClientSession.hpp
@@ -124,8 +124,6 @@ private:
                           const std::shared_ptr<DocumentBroker>& docBroker);
     bool sendTile(const char* buffer, int length, const 
std::vector<std::string>& tokens,
                   const std::shared_ptr<DocumentBroker>& docBroker);
-    bool sendDialog(const char* buffer, int length, const 
std::vector<std::string>& tokens,
-                    const std::shared_ptr<DocumentBroker>& docBroker, bool 
child);
     bool sendCombinedTiles(const char* buffer, int length, const 
std::vector<std::string>& tokens,
                            const std::shared_ptr<DocumentBroker>& docBroker);
 
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index c26c2fd5..06a40c99 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1178,15 +1178,11 @@ void DocumentBroker::handleTileRequest(TileDesc& tile,
     _debugRenderedTileCount++;
 }
 
-void DocumentBroker::handleDialogRequest(const std::string& dialogId,
-                                         const std::shared_ptr<ClientSession>& 
/*session*/,
-                                         bool child)
+void DocumentBroker::handleDialogRequest(const std::string& dialogCmd)
 {
     assertCorrectThread();
     std::unique_lock<std::mutex> lock(_mutex);
-    const std::string dialogCmd = child ? "dialogchild" : "dialog";
-    LOG_DBG("Sending " + dialogCmd +  " render request for dialog " << 
dialogId);
-    _childProcess->sendTextFrame(dialogCmd + " " + dialogId);
+    _childProcess->sendTextFrame(dialogCmd);
 }
 
 void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined,
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 0387de20..a56d3332 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -303,9 +303,7 @@ public:
     void invalidateTiles(const std::string& tiles);
     void handleTileRequest(TileDesc& tile,
                            const std::shared_ptr<ClientSession>& session);
-    void handleDialogRequest(const std::string& dialogId,
-                             const std::shared_ptr<ClientSession>& session,
-                             bool child);
+    void handleDialogRequest(const std::string& dialogCmd);
     void handleTileCombinedRequest(TileCombined& tileCombined,
                                    const std::shared_ptr<ClientSession>& 
session);
     void cancelTileRequests(const std::shared_ptr<ClientSession>& session);
commit 83cb6270da47c789e26279617b7fd0b0b32c8908
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Sun Nov 5 14:19:54 2017 +0530

    lokdialog: Strip unnecessary padding from dialog container
    
    No idea yet why there still is a thin padding strip at the bottom of the
    dialog.
    
    Change-Id: Ia1347bafbf647385c1771f7af3e755cbf44dd666
    Reviewed-on: https://gerrit.libreoffice.org/44517
    Reviewed-by: pranavk <pran...@collabora.co.uk>
    Tested-by: pranavk <pran...@collabora.co.uk>

diff --git a/loleaflet/dist/loleaflet.css b/loleaflet/dist/loleaflet.css
index b577cafc..5c64f4dd 100644
--- a/loleaflet/dist/loleaflet.css
+++ b/loleaflet/dist/loleaflet.css
@@ -334,9 +334,13 @@ body {
        text-indent: 1px;
 }
 
-.lokdialog_container.ui-dialog-content.ui-widget-content {
+.lokdialog_container.ui-dialog.ui-widget-content {
         padding: 0px;
        overflow: hidden;
        width: auto;
        height: auto;
 }
+
+.lokdialog.ui-dialog-content.ui-widget-content {
+        padding: 0px;
+}
diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index ba5f949c..96e5388f 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -39,7 +39,7 @@ L.Control.LokDialog = L.Control.extend({
        },
 
        _launchDialog: function(dialogId, width, height) {
-               var canvas = '<div style="padding: 0px; margin: 0px; overflow: 
hidden;" id="' + dialogId + '">' +
+               var canvas = '<div class="lokdialog" style="padding: 0px; 
margin: 0px; overflow: hidden;" id="' + dialogId + '">' +
                    '<canvas tabindex="0" id="' + dialogId + '-canvas" width="' 
+ width + 'px" height="' + height + 'px"></canvas>' +
                    '</div>';
                $(document.body).append(canvas);
@@ -51,6 +51,7 @@ L.Control.LokDialog = L.Control.extend({
                        modal: false,
                        closeOnEscape: true,
                        resizable: false,
+                       dialogClass: 'lokdialog_container',
                        close: function() {
                                that._onDialogClose(dialogId);
                        }
@@ -80,6 +81,10 @@ L.Control.LokDialog = L.Control.extend({
                        that._handleDialogKeyEvent(e);
                });
 
+               $('#' + dialogId + '-canvas').on('contextmenu', function() {
+                       return false;
+               });
+
                this._dialogs[dialogId] = true;
        },
 
@@ -241,7 +246,7 @@ L.Control.LokDialog = L.Control.extend({
 
                // remove any existing floating element if there's any
                $('#' + e.dialogId + '-floating').remove();
-               var floatingCanvas = '<canvas id="' + e.dialogId + 
'-floating"></canvas>';
+               var floatingCanvas = '<canvas class="lokdialogchild-canvas" 
id="' + e.dialogId + '-floating"></canvas>';
                $('#' + e.dialogId).append(floatingCanvas);
                $('#' + e.dialogId + '-floating').css({position: 'absolute', 
left: left, top: top});
 
@@ -270,6 +275,9 @@ L.Control.LokDialog = L.Control.extend({
                        that._postDialogChildMouseEvent('move', dialogId, 
e.offsetX, e.offsetY, 1, 0, 0);
                });
 
+               $('#' + dialogId + '-floating').on('contextmenu', function() {
+                       return false;
+               });
        },
 
        _onDialogChildMsg: function(e) {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to