[Libreoffice-commits] .: Branch 'libreoffice-3-5' - xmloff/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Fri Jul 20 00:29:08 PDT 2012


 xmloff/source/style/PageMasterImportPropMapper.cxx |   51 +++++++++++++++++++++
 1 file changed, 51 insertions(+)

New commits:
commit bb406ff1ce016c96cc735e0c20ae51f7dac235b5
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jul 19 12:12:14 2012 +0200

    fdo#38056: ODF import: fix page style attributes:
    
    PageMasterImportPropMapper: in the case of a single "fo:border"
    and "style:border-line-width" attribute, it is possible that the border
    is imported wrongly, like this:
    
    1. pAllBorderProperty is set from the imported value, with name "TopBorder"
    2. individual pNewBorder[i] are created as copies from pAllBorderProperty,
       one of which also with name "TopBorder"
    3. pNewBorder[i] is updated with widths from pBorderWidths[i]
    4. the individual pNewBorder[i] are added to the property vector
    5. the property vector is sorted by property name
    6. the properites are applied in order; if the pNewBorder[TOP]
       happens to precede the pAllBorderProperty (which is indeterminate
       as they both have name "TopBorder"), then the pAllBorderProperty
       will overwrite the border widths computed in step 3.
    
    Thus, nerf the various pAllFoo properties so they do not override
    the individual Foo properties later on.
    
    (cherry picked from commit 7f9928bfa561ccb6ed4e2baacc7d6960bc1ce231)
    
    Change-Id: I87755f1184d59da2aa72ac053e6f77d7295d6958
    Signed-off-by: Miklos Vajna <vmiklos at suse.cz>

diff --git a/xmloff/source/style/PageMasterImportPropMapper.cxx b/xmloff/source/style/PageMasterImportPropMapper.cxx
index ad45cdb..005c732 100644
--- a/xmloff/source/style/PageMasterImportPropMapper.cxx
+++ b/xmloff/source/style/PageMasterImportPropMapper.cxx
@@ -408,6 +408,57 @@ void PageMasterImportPropertyMapper::finished(::std::vector< XMLPropertyState >&
         rProperties.push_back(*pFooterDynamic);
         delete pFooterDynamic;
     }
+
+    // fdo#38056: nerf the various AllFoo properties so they do not override
+    // the individual Foo properties later on
+    if (pAllPaddingProperty)
+    {
+        pAllPaddingProperty->mnIndex = -1;
+    }
+    if (pAllBorderProperty)
+    {
+        pAllBorderProperty->mnIndex = -1;
+    }
+    if (pAllBorderWidthProperty)
+    {
+        pAllBorderWidthProperty->mnIndex = -1;
+    }
+    if (pAllHeaderPaddingProperty)
+    {
+        pAllHeaderPaddingProperty->mnIndex = -1;
+    }
+    if (pAllHeaderBorderProperty)
+    {
+        pAllHeaderBorderProperty->mnIndex = -1;
+    }
+    if (pAllHeaderBorderWidthProperty)
+    {
+        pAllHeaderBorderWidthProperty->mnIndex = -1;
+    }
+    if (pAllFooterPaddingProperty)
+    {
+        pAllFooterPaddingProperty->mnIndex = -1;
+    }
+    if (pAllFooterBorderProperty)
+    {
+        pAllFooterBorderProperty->mnIndex = -1;
+    }
+    if (pAllFooterBorderWidthProperty)
+    {
+        pAllFooterBorderWidthProperty->mnIndex = -1;
+    }
+    if (pAllMarginProperty)
+    {
+        pAllMarginProperty->mnIndex = -1;
+    }
+    if (pAllHeaderMarginProperty)
+    {
+        pAllHeaderMarginProperty->mnIndex = -1;
+    }
+    if (pAllFooterMarginProperty)
+    {
+        pAllFooterMarginProperty->mnIndex = -1;
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list