loleaflet/src/layer/tile/TileLayer.js | 9 ++++++--- loolwsd/LOKitHelper.hpp | 15 ++++++++++++--- loolwsd/LOOLSession.cpp | 1 - loolwsd/protocol.txt | 3 ++- 4 files changed, 20 insertions(+), 8 deletions(-)
New commits: commit 370109c6e4d80ffcf166836cfd4d4d87ed726f99 Author: Mihai Varga <mihai.va...@collabora.com> Date: Wed Jul 15 18:37:32 2015 +0300 loleaflet: parse and send part names from the status cmd diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index c991465..0554ed7 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -269,7 +269,7 @@ L.TileLayer = L.GridLayer.extend({ while (index < bytes.length && bytes[index] !== 10) { index++; } - textMsg = String.fromCharCode.apply(null, bytes.subarray(0, index + 1)); + textMsg = String.fromCharCode.apply(null, bytes.subarray(0, index)); } if (textMsg.startsWith('cursorvisible:')) { @@ -397,10 +397,13 @@ L.TileLayer = L.GridLayer.extend({ this._documentInfo = textMsg; this._parts = command.parts; this._currentPart = command.currentPart; + var partNamesStr = bytes === undefined ? textMsg : String.fromCharCode.apply(null, bytes.subarray(index)); + var partNames = partNamesStr.match(/[^\r\n]+/g); this._map.fire('updateparts', { currentPart: this._currentPart, parts: this._parts, - docType: this._docType + docType: this._docType, + partNames: partNames }); this._update(); if (!this._tilesPreFetcher) { @@ -503,7 +506,7 @@ L.TileLayer = L.GridLayer.extend({ this._onUpdateTextSelection(); } else if (textMsg.startsWith('textselectioncontent:')) { - textMsg += String.fromCharCode.apply(null, bytes.subarray(index + 1)); + textMsg += String.fromCharCode.apply(null, bytes.subarray(index)); this._selectionTextContent = textMsg.substr(22); } else if (textMsg.startsWith('setpart:')) { commit 675cfb8c4a424e0970540ab9c72053b1786f8d24 Author: Mihai Varga <mihai.va...@collabora.com> Date: Wed Jul 15 18:31:52 2015 +0300 loolwsd: send part names with the status message Also disabled the status length assertion because part names are separated by new-line characters ('\n') diff --git a/loolwsd/LOKitHelper.hpp b/loolwsd/LOKitHelper.hpp index 7e793f8..a20590a 100644 --- a/loolwsd/LOKitHelper.hpp +++ b/loolwsd/LOKitHelper.hpp @@ -38,13 +38,22 @@ namespace LOKitHelper std::string documentStatus(LibreOfficeKitDocument *loKitDocument) { std::string typeString(documentTypeToString(static_cast<LibreOfficeKitDocumentType>(loKitDocument->pClass->getDocumentType(loKitDocument)))); - long width, height; + long width, height, parts; loKitDocument->pClass->getDocumentSize(loKitDocument, &width, &height); - return ("type=" + typeString + " " - "parts=" + std::to_string(loKitDocument->pClass->getParts(loKitDocument)) + " " + parts = loKitDocument->pClass->getParts(loKitDocument); + std::string status = + ("type=" + typeString + " " + "parts=" + std::to_string(parts) + " " "current=" + std::to_string(loKitDocument->pClass->getPart(loKitDocument)) + " " "width=" + std::to_string(width) + " " "height=" + std::to_string(height)); + if (typeString == "spreadsheet" || typeString == "presentation") { + for (int i = 0; i < parts; i++) { + status += "\n"; + status += loKitDocument->pClass->getPartName(loKitDocument, i); + } + } + return status; } }; diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp index 0e73bf6..448c08e 100644 --- a/loolwsd/LOOLSession.cpp +++ b/loolwsd/LOOLSession.cpp @@ -186,7 +186,6 @@ bool MasterProcessSession::handleInput(const char *buffer, int length) } else if (tokens[0] == "status:") { - assert(firstLine.size() == static_cast<std::string::size_type>(length)); peer->_tileCache->saveStatus(firstLine); } else if (tokens[0] == "invalidatetiles:") diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt index 491dc9d..0db74e0 100644 --- a/loolwsd/protocol.txt +++ b/loolwsd/protocol.txt @@ -100,9 +100,10 @@ nextmessage: size=<byteSize> must be handled by clients that cannot (like those using Poco 1.6.0, like the "loadtest" program in the loolwsd sources). -status: type=<typeName> parts=<numberOfParts> current=<currentPartNumber> width=<width> height=<height> +status: type=<typeName> parts=<numberOfParts> current=<currentPartNumber> width=<width> height=<height> [partNames] <typeName> is 'text, 'spreadsheet', 'presentation', 'drawing' or 'other. Others are numbers. + if the document has multiple parts and those have names, part names follow separated by '\n' textselectioncontent: <content> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits