summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-06-05 15:49:13 (GMT)
committerMiklos Vajna <vmiklos@suse.cz>2013-06-06 07:45:55 (GMT)
commitf06cc552a0699f7c2c34db981e77d4c8efe5e9e7 (patch)
tree9aae289fab35bec1f5ec24ff08e490e2612d58b4
parent11c00f1fdd63a4c9a011f1f2d0ca66945013f39b (diff)
wwSectionManager: fix import of page borders
Regression from 1e113cb7604e1509e7d598a9be329f1f7b6e9322. According to the spec (see 2.9.181), the first bit disables border of "all but first" pages, the second bit disables the border of first pages. Change-Id: Ie49c9b7b76d34c2a93350481965790976f49d7df
-rwxr-xr-xsw/qa/extras/ww8import/data/page-border.docbin0 -> 22016 bytes
-rw-r--r--sw/qa/extras/ww8import/ww8import.cxx11
-rw-r--r--sw/source/filter/ww8/ww8par.cxx6
3 files changed, 14 insertions, 3 deletions
diff --git a/sw/qa/extras/ww8import/data/page-border.doc b/sw/qa/extras/ww8import/data/page-border.doc
new file mode 100755
index 0000000..c2dec4f
--- /dev/null
+++ b/sw/qa/extras/ww8import/data/page-border.doc
Binary files differ
diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx
index d924ef3..0ded9f7 100644
--- a/sw/qa/extras/ww8import/ww8import.cxx
+++ b/sw/qa/extras/ww8import/ww8import.cxx
@@ -18,6 +18,8 @@
#include <swmodeltestbase.hxx>
#include <bordertest.hxx>
+#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
+
class Test : public SwModelTestBase
{
public:
@@ -32,6 +34,7 @@ public:
void testI120158();
void testN816603();
void testN816593();
+ void testPageBorder();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -57,6 +60,7 @@ void Test::run()
{"i120158.doc", &Test::testI120158},
{"n816603.doc", &Test::testN816603},
{"n816593.doc", &Test::testN816593},
+ {"page-border.doc", &Test::testPageBorder},
};
header();
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
@@ -271,6 +275,13 @@ void Test::testN816593()
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
}
+void Test::testPageBorder()
+{
+ // Page border was missing (LineWidth was 0), due to wrong interpretation of pgbApplyTo.
+ table::BorderLine2 aBorder = getProperty<table::BorderLine2>(getStyles("PageStyles")->getByName(DEFAULT_STYLE), "TopBorder");
+ CPPUNIT_ASSERT_EQUAL(sal_uInt32(TWIP_TO_MM100(6 * 20)), aBorder.LineWidth);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 598385a..907454f 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -3848,10 +3848,10 @@ void wwSectionManager::SetSegmentToPageDesc(const wwSection &rSection,
SetPage(rPage, rFmt, rSection, bIgnoreCols);
- if (rSection.maSep.pgbApplyTo & 1)
- mrReader.SetPageBorder(rPage.GetFirst(), rSection);
- if (rSection.maSep.pgbApplyTo & 2)
+ if (!(rSection.maSep.pgbApplyTo & 1))
mrReader.SetPageBorder(rFmt, rSection);
+ if (!(rSection.maSep.pgbApplyTo & 2))
+ mrReader.SetPageBorder(rPage.GetFirst(), rSection);
mrReader.SetDocumentGrid(rFmt, rSection);
}