[Libreoffice-commits] core.git: sw/qa sw/source writerfilter/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Mar 4 11:15:34 UTC 2019


 sw/qa/extras/ooxmlexport/data/tdf119201.docx  |binary
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx    |   14 ++++++++++++++
 sw/source/filter/ww8/docxsdrexport.cxx        |    4 ++++
 writerfilter/source/dmapper/GraphicImport.cxx |   12 +++++++++++-
 4 files changed, 29 insertions(+), 1 deletion(-)

New commits:
commit 0b9e4f6085d147c43a86d107303eea9b86e7f34c
Author:     Aron Budea <aron.budea at collabora.com>
AuthorDate: Sat Feb 23 02:01:54 2019 +0100
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Mon Mar 4 12:15:11 2019 +0100

    tdf#119201 Don't show/print hidden shapes in DOCX
    
    Similar fix to b38065ea941375bf4f78f13314e84f4a875545d9
    
    Only rely visibility setting for now, but properly:
    visible means also printed, hidden means not printed.
    Ie. import visible property also as printable, and only
    output visible property in DOCX format (DOC shapes have no
    such property).
    
    Change-Id: Ifc3c36f90aa16ded1a9f31197612a5c85fde5d87
    Reviewed-on: https://gerrit.libreoffice.org/68239
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf119201.docx b/sw/qa/extras/ooxmlexport/data/tdf119201.docx
new file mode 100644
index 000000000000..d454d6731bb1
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf119201.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index d52f546790c9..01e13fee05c7 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -147,6 +147,20 @@ DECLARE_OOXMLEXPORT_TEST(testFrameSizeExport, "floating-tables-anchor.docx")
     assertXPath(pXmlDoc, "/w:document/w:body/w:tbl[1]/w:tblPr/w:tblW", "w", "4000");
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf119201, "tdf119201.docx")
+{
+    // Visibility of shapes wasn't imported/exported, for now base printable property on that, too
+    auto xShape(getShape(1));
+    CPPUNIT_ASSERT_MESSAGE("First shape should be visible.", getProperty<bool>(xShape, "Visible"));
+    CPPUNIT_ASSERT_MESSAGE("First shape should be printable.", getProperty<bool>(xShape, "Printable"));
+    xShape = getShape(2);
+    CPPUNIT_ASSERT_MESSAGE("Second shape should not be visible.", !getProperty<bool>(xShape, "Visible"));
+    CPPUNIT_ASSERT_MESSAGE("Second shape should not be printable.", !getProperty<bool>(xShape, "Printable"));
+    xShape = getShape(3);
+    CPPUNIT_ASSERT_MESSAGE("Third shape should be visible.", getProperty<bool>(xShape, "Visible"));
+    CPPUNIT_ASSERT_MESSAGE("Third shape should be printable.", getProperty<bool>(xShape, "Printable"));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index 425f9bd5fa0a..dc902a9b93ef 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -892,6 +892,10 @@ void DocxSdrExport::writeDMLDrawing(const SdrObject* pSdrObject, const SwFrameFo
     if (!pSdrObject->GetDescription().isEmpty())
         pDocPrAttrList->add(XML_descr,
                             OUStringToOString(pSdrObject->GetDescription(), RTL_TEXTENCODING_UTF8));
+    if (!pSdrObject->IsVisible()
+        && pFrameFormat->GetAnchor().GetAnchorId() != RndStdIds::FLY_AS_CHAR)
+
+        pDocPrAttrList->add(XML_hidden, OString::number(1).getStr());
     sax_fastparser::XFastAttributeListRef xDocPrAttrListRef(pDocPrAttrList);
     pFS->singleElementNS(XML_wp, XML_docPr, xDocPrAttrListRef);
 
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 76b7797c161a..ea0058752f74 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -225,6 +225,7 @@ public:
 
     bool            bSizeProtected;
     bool            bPositionProtected;
+    bool            bHidden;
 
     sal_Int32       nShapeOptionType;
 
@@ -277,6 +278,7 @@ public:
         ,bIsGraphic(false)
         ,bSizeProtected(false)
         ,bPositionProtected(false)
+        ,bHidden(false)
         ,nShapeOptionType(0)
         ,m_rPositionOffsets(rPositionOffsets)
         ,m_rAligns(rAligns)
@@ -559,6 +561,9 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
             //alternative text
             m_pImpl->title = rValue.getString();
         break;
+        case NS_ooxml::LN_CT_NonVisualDrawingProps_hidden:
+            m_pImpl->bHidden = (nIntValue == 1);
+        break;
         case NS_ooxml::LN_CT_GraphicalObjectFrameLocking_noChangeAspect://90644;
             //disallow aspect ratio change - ignored
         break;
@@ -717,7 +722,6 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                     if ( bUseShape )
                         m_xShape = xShape;
 
-
                     if ( m_xShape.is( ) )
                     {
                         uno::Reference< beans::XPropertySet > xShapeProps
@@ -785,6 +789,12 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                         // This needs to be AT_PARAGRAPH by default and not AT_CHARACTER, otherwise shape will move when the user inserts a new paragraph.
                         text::TextContentAnchorType eAnchorType = text::TextContentAnchorType_AT_PARAGRAPH;
 
+                        if (m_pImpl->bHidden)
+                        {
+                            xShapeProps->setPropertyValue("Visible", uno::makeAny(false));
+                            xShapeProps->setPropertyValue("Printable", uno::makeAny(false));
+                        }
+
                         // Avoid setting AnchorType for TextBoxes till SwTextBoxHelper::syncProperty() doesn't handle transition.
                         bool bTextBox = false;
                         xShapeProps->getPropertyValue("TextBox") >>= bTextBox;


More information about the Libreoffice-commits mailing list