[Libreoffice-commits] online.git: loolwsd/ChildProcessSession.cpp loolwsd/LOKitHelper.hpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Tue May 10 13:00:16 UTC 2016


 loolwsd/ChildProcessSession.cpp |   11 +++++------
 loolwsd/LOKitHelper.hpp         |    9 +++++++++
 2 files changed, 14 insertions(+), 6 deletions(-)

New commits:
commit a58ffaef71263166ac0b8f8c9f22efc449f92adb
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Tue May 10 08:52:11 2016 -0400

    loolwsd: always get and remember the doc-type on loading
    
    Change-Id: I6ba49ecd8343ff6d08ff437d6dc9d664a4becc1d
    Reviewed-on: https://gerrit.libreoffice.org/24849
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/ChildProcessSession.cpp b/loolwsd/ChildProcessSession.cpp
index 5050dde..5ea3da6 100644
--- a/loolwsd/ChildProcessSession.cpp
+++ b/loolwsd/ChildProcessSession.cpp
@@ -121,12 +121,10 @@ public:
                 assert(lokitDoc->pClass);
                 assert(lokitDoc->pClass->getPart);
 
-                int curPart = lokitDoc->pClass->getPart(lokitDoc);
-                if (_session.getDocType() == "text")
-                {
-                    // Text docs have a single coordinate system.
-                    curPart = 0;
-                }
+                // Text docs have a single coordinate system.
+                const auto curPart = (_session.getDocType() == "text")
+                                   ? 0
+                                   : lokitDoc->pClass->getPart(lokitDoc);
 
                 StringTokenizer tokens(rPayload, " ", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
                 if (tokens.count() == 4)
@@ -605,6 +603,7 @@ bool ChildProcessSession::loadDocument(const char * /*buffer*/, int /*length*/,
         _loKitDocument->pClass->initializeForRendering(_loKitDocument, (renderOpts.empty() ? nullptr : renderOpts.c_str()));
     }
 
+    _docType = LOKitHelper::getDocumentTypeAsString(_loKitDocument);
     if (_docType != "text" && part != -1)
     {
         _loKitDocument->pClass->setPart(_loKitDocument, part);
diff --git a/loolwsd/LOKitHelper.hpp b/loolwsd/LOKitHelper.hpp
index 62d89e9..cfc3fec 100644
--- a/loolwsd/LOKitHelper.hpp
+++ b/loolwsd/LOKitHelper.hpp
@@ -38,6 +38,14 @@ namespace LOKitHelper
     }
 
     inline
+    std::string getDocumentTypeAsString(LibreOfficeKitDocument *loKitDocument)
+    {
+        assert(loKitDocument && "null loKitDocument");
+        const auto type = static_cast<LibreOfficeKitDocumentType>(loKitDocument->pClass->getDocumentType(loKitDocument));
+        return documentTypeToString(type);
+    }
+
+    inline
     std::string kitCallbackTypeToString(const int nType)
     {
         // Keep in the same order as in LibreOfficeKitEnums.h
@@ -99,6 +107,7 @@ namespace LOKitHelper
     inline
     std::string documentStatus(LibreOfficeKitDocument *loKitDocument)
     {
+        assert(loKitDocument && "null loKitDocument");
         const auto type = static_cast<LibreOfficeKitDocumentType>(loKitDocument->pClass->getDocumentType(loKitDocument));
 
         const auto parts = loKitDocument->pClass->getParts(loKitDocument);


More information about the Libreoffice-commits mailing list