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

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Fri Oct 18 14:27:42 UTC 2019


 sw/source/filter/ww8/docxsdrexport.cxx |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

New commits:
commit a27039f912fac32261cc6225f21823231eb10745
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Fri Oct 18 13:04:41 2019 +0200
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri Oct 18 16:26:26 2019 +0200

    Properly restore DMLAndVMLDrawingOpen
    
    See other places which also call setDMLAndVMLDrawingOpen in a similar way:
    DocxSdrExport::writeDMLTextFrame and DocxSdrExport::writeVMLTextFrame.
    
    This also slightly optimizes calls to lcl_isLockedCanvas.
    
    Change-Id: I5df71640816883a14ddc86259e7d649f150dc422
    Reviewed-on: https://gerrit.libreoffice.org/81036
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index 5d80a78a9d90..8cc14d097fa0 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -991,17 +991,13 @@ void DocxSdrExport::writeDMLAndVMLDrawing(const SdrObject* sdrObj,
     uno::Reference<drawing::XShape> xShape(const_cast<SdrObject*>(sdrObj)->getUnoShape(),
                                            uno::UNO_QUERY_THROW);
 
-    // Locked canvas is OK inside DML.
-    if (lcl_isLockedCanvas(xShape))
-        bDMLAndVMLDrawingOpen = false;
-
     MSO_SPT eShapeType
         = EscherPropertyContainer::GetCustomShapeType(xShape, nMirrorFlags, sShapeType);
 
     // In case we are already inside a DML block, then write the shape only as VML, turn out that's allowed to do.
     // A common service created in util to check for VML shapes which are allowed to have textbox in content
     if ((msfilter::util::HasTextBoxContent(eShapeType)) && Impl::isSupportedDMLShape(xShape)
-        && !bDMLAndVMLDrawingOpen)
+        && (!bDMLAndVMLDrawingOpen || lcl_isLockedCanvas(xShape))) // Locked canvas is OK inside DML
     {
         m_pImpl->getSerializer()->startElementNS(XML_mc, XML_AlternateContent);
 
@@ -1020,7 +1016,7 @@ void DocxSdrExport::writeDMLAndVMLDrawing(const SdrObject* sdrObj,
     else
         writeVMLDrawing(sdrObj, rFrameFormat);
 
-    m_pImpl->setDMLAndVMLDrawingOpen(false);
+    m_pImpl->setDMLAndVMLDrawingOpen(bDMLAndVMLDrawingOpen);
 }
 
 // Converts ARGB transparency (0..255) to drawingml alpha (opposite, and 0..100000)


More information about the Libreoffice-commits mailing list