summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-03-12 11:42:34 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-03-12 15:47:59 +0100
commit48b5b7641d0df960558082e8948da8598f801264 (patch)
treea80f51c83cb8930d41fb99acf0e63667b74502c0
parente5cb1989520baf321961dbb82437d1b00a2a499c (diff)
bnc#865381 DOCX import: fix btLr cell direction when having vertical merge
Change-Id: I527955671e1100f05da717bffe002131baaf0291
-rwxr-xr-xsw/qa/extras/ooxmlimport/data/bnc865381.docxbin0 -> 19510 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/ooxmlimport.cxx10
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx12
3 files changed, 18 insertions, 4 deletions
diff --git a/sw/qa/extras/ooxmlimport/data/bnc865381.docx b/sw/qa/extras/ooxmlimport/data/bnc865381.docx
new file mode 100755
index 000000000000..bb125cc73095
--- /dev/null
+++ b/sw/qa/extras/ooxmlimport/data/bnc865381.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index bff4e1ee6f74..809e7639cfa9 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1100,6 +1100,16 @@ DECLARE_OOXMLIMPORT_TEST(testTbLrHeight, "tblr-height.docx")
CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
}
+DECLARE_OOXMLIMPORT_TEST(testBnc865381, "bnc865381.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // Second row has a vertically merged cell, make sure size type is MIN in that case (otherwise B2 is not readable).
+ CPPUNIT_ASSERT_EQUAL(text::SizeType::MIN, getProperty<sal_Int16>(xTableRows->getByIndex(1), "SizeType"));
+}
+
DECLARE_OOXMLIMPORT_TEST(testFdo53985, "fdo53985.docx")
{
// Unhandled excetion prevented import of the rest of the document.
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index 103befa5fbea..773da178d9f4 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -346,10 +346,14 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
SAL_INFO( "writerfilter", "Have inserted textDirection " << nIntValue );
// We're faking a text direction, so don't allow multiple lines.
- TablePropertyMapPtr pRowPropMap( new TablePropertyMap );
- pRowPropMap->Insert(PROP_SIZE_TYPE, uno::makeAny(text::SizeType::FIX));
- m_bRowSizeTypeInserted = true;
- insertRowProps(pRowPropMap);
+ if (!getCellProps() || getCellProps()->find(PROP_VERTICAL_MERGE) == getCellProps()->end())
+ {
+ // Though in case there will be a vertical merge, don't do this, it hides text that is supposed to be visible.
+ TablePropertyMapPtr pRowPropMap( new TablePropertyMap );
+ pRowPropMap->Insert(PROP_SIZE_TYPE, uno::makeAny(text::SizeType::FIX));
+ m_bRowSizeTypeInserted = true;
+ insertRowProps(pRowPropMap);
+ }
}
break;
case 4: // lrTbV