summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-04-11 21:37:16 +0200
committerMiklos Vajna <vmiklos@collabora.com>2019-04-12 12:07:50 +0200
commit0013f21ecd918e0541f165c3526a58f42dd75481 (patch)
tree52b2578ce1c6734863bc57ec4b7009568bc0c223
parent4e7e3670c31329d60f5cc782abc4568c2aba33a7 (diff)
tdf#124344 sw btlr writing mode, DOCX import: fix vertical alignment
The hack added in commit 3325e0f206ce864730468c3556ce06760042c157 (bnc#865381 DOCX import: handle w:jc=center inside w:textDirection=btLr, 2014-07-02) is no longer needed, actually just reverting it fixes the problem, as then layout does the right thing. No need to center paragraph adjustment to any kind of vertical orientation, now that we have proper layout support. Change-Id: I6aa74f5289a014c148fbd7c7ab03ec885d931daf Reviewed-on: https://gerrit.libreoffice.org/70610 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport10.cxx12
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx17
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx7
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx1
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx1
5 files changed, 10 insertions, 28 deletions
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index 768ab16c8a48..dbe64afdc1dd 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -694,11 +694,19 @@ DECLARE_OOXMLEXPORT_TEST(testFootnote, "footnote.docx")
DECLARE_OOXMLEXPORT_TEST(testTableBtlrCenter, "table-btlr-center.docx")
{
+ // Note that this is btLr text, so layout and doc model horizontal/vertical is the opposite of
+ // each other.
uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // Cell vertical alignment was NONE, should be CENTER.
- CPPUNIT_ASSERT_EQUAL(text::VertOrientation::CENTER, getProperty<sal_Int16>(xTable->getCellByName("A2"), "VertOrient"));
+ uno::Reference<table::XCell> xCell = xTable->getCellByName("A2");
+ // Cell vertical alignment was CENTER, should be NONE.
+ CPPUNIT_ASSERT_EQUAL(text::VertOrientation::NONE, getProperty<sal_Int16>(xCell, "VertOrient"));
+
+ // Cell horizontal alignment should be CENTER.
+ uno::Reference<text::XText> xCellText(xCell, uno::UNO_QUERY);
+ auto nActual = getProperty<sal_Int32>(getParagraphOfText(1, xCellText), "ParaAdjust");
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(style::ParagraphAdjust_CENTER), nActual);
}
DECLARE_OOXMLEXPORT_TEST(testFdo80555, "fdo80555.docx")
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 15a7c558820a..6d4e4c86537b 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -29,9 +29,7 @@
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
#include <com/sun/star/text/SizeType.hpp>
-#include <com/sun/star/text/VertOrientation.hpp>
#include <com/sun/star/text/XTextRangeCompare.hpp>
-#include <com/sun/star/style/ParagraphAdjust.hpp>
#include "TablePositionHandler.hxx"
#include "ConversionHelper.hxx"
#include "util.hxx"
@@ -848,21 +846,6 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl
}
(*aCellIterator)->Erase(PROP_HORIZONTAL_MERGE);
}
-
- // Cell direction is not an UNO Property, either.
- const boost::optional<PropertyMap::Property> aCellDirectionVal = (*aCellIterator)->getProperty(PROP_CELL_DIRECTION);
- if (aCellDirectionVal)
- {
- if (aCellDirectionVal->second.get<sal_Int32>() == static_cast<sal_Int32>(NS_ooxml::LN_Value_ST_TextDirection_btLr))
- {
- // btLr, so map ParagraphAdjust_CENTER to VertOrientation::CENTER.
- uno::Reference<beans::XPropertySet> xPropertySet(m_aTableRanges[nRow][nCell][0], uno::UNO_QUERY);
- if (xPropertySet.is() && xPropertySet->getPropertyValue("ParaAdjust").get<sal_Int16>() == sal_Int16(style::ParagraphAdjust_CENTER))
- (*aCellIterator)->Insert(PROP_VERT_ORIENT, uno::makeAny(text::VertOrientation::CENTER));
- }
- (*aCellIterator)->Erase(PROP_CELL_DIRECTION);
- }
-
pSingleCellProperties[nCell] = (*aCellIterator)->GetPropertyValues();
#ifdef DBG_UTIL
TagLogger::getInstance().endElement();
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index df7db6e93f26..2c33628615be 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -279,13 +279,6 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
case NS_ooxml::LN_CT_TcPrBase_textDirection:
{
TablePropertyMapPtr pPropMap( new TablePropertyMap );
-
- // Remember the cell direction, so later in
- // DomainMapperTableHandler::endTableGetCellProperties() can we
- // handle the combination of the cell direction and paragraph
- // alignment as necessary.
- pPropMap->Insert(PROP_CELL_DIRECTION, uno::Any(nIntValue));
-
bool bInsertCellProps = true;
switch ( nIntValue )
{
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index d47fec1613d0..e51062541d47 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -333,7 +333,6 @@ OUString getPropertyName( PropertyIds eId )
case PROP_CELL_INTEROP_GRAB_BAG : sName = "CellInteropGrabBag"; break;
case PROP_TABLE_INTEROP_GRAB_BAG : sName = "TableInteropGrabBag"; break;
case PROP_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING : sName = "ApplyParagraphMarkFormatToNumbering"; break;
- case PROP_CELL_DIRECTION: sName = "CellDirection"; break;
case PROP_SDT_END_BEFORE: sName = "SdtEndBefore"; break;
case PROP_PARA_SDT_END_BEFORE: sName = "ParaSdtEndBefore"; break;
case META_PROP_TABLE_LOOK: sName = "TableStyleLook"; break;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index f8047b0aa76c..331a978d0d42 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -331,7 +331,6 @@ enum PropertyIds
,PROP_TABLE_INTEROP_GRAB_BAG
,PROP_INDEX_ENTRY_TYPE
,PROP_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING
- ,PROP_CELL_DIRECTION
,PROP_SDT_END_BEFORE
,PROP_PARA_SDT_END_BEFORE
,META_PROP_TABLE_LOOK