[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - desktop/qa desktop/source include/LibreOfficeKit include/vcl sc/inc sc/source

Marco Cecchetti marco.cecchetti at collabora.com
Thu Feb 22 11:17:45 UTC 2018


 desktop/qa/desktop_lib/test_desktop_lib.cxx |    3 ++-
 desktop/source/lib/init.cxx                 |   22 ++++++++++++++++++++++
 include/LibreOfficeKit/LibreOfficeKit.h     |    3 +++
 include/vcl/ITiledRenderable.hxx            |    9 +++++++++
 sc/inc/docuno.hxx                           |    3 +++
 sc/source/ui/unoobj/docuno.cxx              |   12 ++++++++++++
 6 files changed, 51 insertions(+), 1 deletion(-)

New commits:
commit 0a25b404359ff28ef21603c47a8e0acdb9d8b3fb
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Thu Feb 1 12:17:45 2018 +0100

    lok - calc: add support for show/hide tabs in online
    
    Change-Id: Ibd061414a0c3a5fad83d03f7047831cef62076d2
    Reviewed-on: https://gerrit.libreoffice.org/49978
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 7524c34637d5..145bf0928067 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -2212,10 +2212,11 @@ void DesktopLOKTest::testABI()
     CPPUNIT_ASSERT_EQUAL(documentClassOffset(38), offsetof(struct _LibreOfficeKitDocumentClass, postWindowMouseEvent));
     CPPUNIT_ASSERT_EQUAL(documentClassOffset(39), offsetof(struct _LibreOfficeKitDocumentClass, setViewLanguage));
     CPPUNIT_ASSERT_EQUAL(documentClassOffset(40), offsetof(struct _LibreOfficeKitDocumentClass, postExtTextInputEvent));
+    CPPUNIT_ASSERT_EQUAL(documentClassOffset(41), offsetof(struct _LibreOfficeKitDocumentClass, getPartInfo));
 
     // Extending is fine, update this, and add new assert for the offsetof the
     // new method
-    CPPUNIT_ASSERT_EQUAL(documentClassOffset(41), sizeof(struct _LibreOfficeKitDocumentClass));
+    CPPUNIT_ASSERT_EQUAL(documentClassOffset(42), sizeof(struct _LibreOfficeKitDocumentClass));
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 6309802f6971..1bf6d00674a8 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -640,6 +640,8 @@ static void doc_paintWindow(LibreOfficeKitDocument* pThis, unsigned nLOKWindowId
 
 static void doc_postWindow(LibreOfficeKitDocument* pThis, unsigned nLOKWindowId, int nAction);
 
+static char* doc_getPartInfo(LibreOfficeKitDocument* pThis, int nPart);
+
 LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent)
     : mxComponent(xComponent)
 {
@@ -695,6 +697,8 @@ LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XCompone
 
         m_pDocumentClass->setViewLanguage = doc_setViewLanguage;
 
+        m_pDocumentClass->getPartInfo = doc_getPartInfo;
+
         gDocumentClass = m_pDocumentClass;
     }
     pClass = m_pDocumentClass.get();
@@ -1903,6 +1907,24 @@ static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart)
     pDoc->setPart( nPart );
 }
 
+static char* doc_getPartInfo(LibreOfficeKitDocument* pThis, int nPart)
+{
+    SolarMutexGuard aGuard;
+    ITiledRenderable* pDoc = getTiledRenderable(pThis);
+    if (!pDoc)
+    {
+        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        return nullptr;
+    }
+
+    OUString aPartInfo = pDoc->getPartInfo( nPart );
+    OString aString = OUStringToOString(aPartInfo, RTL_TEXTENCODING_UTF8);
+
+    char* pMemory = static_cast<char*>(malloc(aString.getLength() + 1));
+    strcpy(pMemory, aString.getStr());
+    return pMemory;
+}
+
 static char* doc_getPartPageRectangles(LibreOfficeKitDocument* pThis)
 {
     SolarMutexGuard aGuard;
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
index 2af965e4a45d..e58e690242c7 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -295,6 +295,9 @@ struct _LibreOfficeKitDocumentClass
                                    int nType,
                                    const char* pText);
 
+    /// @see lok::Document::getPartInfo().
+    char* (*getPartInfo) (LibreOfficeKitDocument* pThis, int nPart);
+
 #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
 };
 
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index b91a67fdc0a3..f6da97484bdc 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -259,6 +259,15 @@ public:
     {
         return OUString();
     }
+
+    /*
+     * Used for sheets in spreadsheet documents.
+     */
+    virtual OUString getPartInfo(int /*nPart*/)
+    {
+        return OUString();
+    }
+
 };
 } // namespace vcl
 
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 0b91ec3ddcfc..1d2ab0e1d966 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -373,6 +373,9 @@ public:
     /// @see vcl::ITiledRenderable::getParts().
     virtual int getParts() override;
 
+    /// @see vcl::ITiledRenderable::getPartInfo().
+    virtual OUString getPartInfo( int nPart ) override;
+
     /// @see vcl::ITiledRenderable::getPartName().
     virtual OUString getPartName(int nPart) override;
 
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 7df255a31ebd..f415a7b5cd4c 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -531,6 +531,18 @@ int ScModelObj::getPart()
     return pViewData->GetViewShell()->getPart();
 }
 
+OUString ScModelObj::getPartInfo( int nPart )
+{
+    OUString aPartInfo;
+    ScViewData* pViewData = ScDocShell::GetViewData();
+    bool bIsVisible = pViewData->GetDocument()->IsVisible(nPart);
+
+    aPartInfo += "{ \"visible\": \"";
+    aPartInfo += OUString::number(bIsVisible);
+    aPartInfo += "\" }";
+    return aPartInfo;
+}
+
 OUString ScModelObj::getPartName( int nPart )
 {
     OUString sTabName;


More information about the Libreoffice-commits mailing list