sw/qa/extras/ooxmlexport/data/tdf93676-1.odt |binary
 sw/source/filter/ww8/docxsdrexport.cxx       |   10 ++++++----
 sw/source/filter/ww8/rtfattributeoutput.cxx  |   10 ++++++----
 3 files changed, 12 insertions(+), 8 deletions(-)

New commits:
commit 327fb3ec1df35f2e92e3e18083f746a18201ec71
Author: Caolán McNamara <caol...@redhat.com>
Date:   Thu Sep 3 11:33:36 2015 +0100

    Related: tdf#93676 special 255 Percent Flag should not be exported to docx
    
    as a true percentage value. 255 is a special flag that the value is synced 
to
    the other dimension. Without this word gives the frame in the attached 
example
    a huge height.
    
    (cherry picked from commit b2ad33fd5a1ee0cd9a1e657725aedc90da659f24)
    
    Change-Id: Ida0c15779d4583ca075428d77b8dc03c32f22edb
    Reviewed-on: https://gerrit.libreoffice.org/18303
    Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk>
    Tested-by: Miklos Vajna <vmik...@collabora.co.uk>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf93676-1.odt 
b/sw/qa/extras/ooxmlexport/data/tdf93676-1.odt
new file mode 100644
index 0000000..37d621b
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf93676-1.odt differ
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx 
b/sw/source/filter/ww8/docxsdrexport.cxx
index a7dc475..7c21a11 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -1525,23 +1525,25 @@ void DocxSdrExport::writeDMLTextFrame(sw::Frame* 
pParentFrame, int nAnchorId, bo
         pFS->endElementNS(XML_a, XML_graphic);
 
         // Relative size of the Text Frame.
-        if (rSize.GetWidthPercent())
+        const sal_uInt8 nWidthPercent = rSize.GetWidthPercent();
+        if (nWidthPercent && nWidthPercent != 0xff)
         {
             pFS->startElementNS(XML_wp14, XML_sizeRelH,
                                 XML_relativeFrom, 
(rSize.GetWidthPercentRelation() == text::RelOrientation::PAGE_FRAME ? "page" : 
"margin"),
                                 FSEND);
             pFS->startElementNS(XML_wp14, XML_pctWidth, FSEND);
-            pFS->writeEscaped(OUString::number(rSize.GetWidthPercent() * 
oox::drawingml::PER_PERCENT));
+            pFS->writeEscaped(OUString::number(nWidthPercent * 
oox::drawingml::PER_PERCENT));
             pFS->endElementNS(XML_wp14, XML_pctWidth);
             pFS->endElementNS(XML_wp14, XML_sizeRelH);
         }
-        if (rSize.GetHeightPercent())
+        const sal_uInt8 nHeightPercent = rSize.GetHeightPercent();
+        if (nHeightPercent && nHeightPercent != 0xff)
         {
             pFS->startElementNS(XML_wp14, XML_sizeRelV,
                                 XML_relativeFrom, 
(rSize.GetHeightPercentRelation() == text::RelOrientation::PAGE_FRAME ? "page" 
: "margin"),
                                 FSEND);
             pFS->startElementNS(XML_wp14, XML_pctHeight, FSEND);
-            pFS->writeEscaped(OUString::number(rSize.GetHeightPercent() * 
oox::drawingml::PER_PERCENT));
+            pFS->writeEscaped(OUString::number(nHeightPercent * 
oox::drawingml::PER_PERCENT));
             pFS->endElementNS(XML_wp14, XML_pctHeight);
             pFS->endElementNS(XML_wp14, XML_sizeRelV);
         }
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx 
b/sw/source/filter/ww8/rtfattributeoutput.cxx
index da8f01f..d9550c0 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -1610,9 +1610,10 @@ void lcl_TextFrameRelativeSize(std::vector< 
std::pair<OString, OString> >& rFlyP
     const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize();
 
     // Relative size of the Text Frame.
-    if (rSize.GetWidthPercent())
+    const sal_uInt8 nWidthPercent = rSize.GetWidthPercent();
+    if (nWidthPercent && nWidthPercent != 0xff)
     {
-        rFlyProperties.push_back(std::make_pair<OString, OString>("pctHoriz", 
OString::number(rSize.GetWidthPercent() * 10)));
+        rFlyProperties.push_back(std::make_pair<OString, OString>("pctHoriz", 
OString::number(nWidthPercent * 10)));
 
         OString aRelation;
         switch (rSize.GetWidthPercentRelation())
@@ -1626,9 +1627,10 @@ void lcl_TextFrameRelativeSize(std::vector< 
std::pair<OString, OString> >& rFlyP
         }
         rFlyProperties.push_back(std::make_pair("sizerelh", aRelation));
     }
-    if (rSize.GetHeightPercent())
+    const sal_uInt8 nHeightPercent = rSize.GetHeightPercent();
+    if (nHeightPercent && nHeightPercent != 0xff)
     {
-        rFlyProperties.push_back(std::make_pair<OString, OString>("pctVert", 
OString::number(rSize.GetHeightPercent() * 10)));
+        rFlyProperties.push_back(std::make_pair<OString, OString>("pctVert", 
OString::number(nHeightPercent * 10)));
 
         OString aRelation;
         switch (rSize.GetHeightPercentRelation())
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to