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