diff options
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf135595_HFtableWrap.odt | bin | 0 -> 97647 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport14.cxx | 9 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 5 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.hxx | 2 | ||||
-rw-r--r-- | writerfilter/source/dmapper/GraphicImport.cxx | 4 |
5 files changed, 19 insertions, 1 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf135595_HFtableWrap.odt b/sw/qa/extras/ooxmlexport/data/tdf135595_HFtableWrap.odt Binary files differnew file mode 100644 index 000000000000..145a6af8da34 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf135595_HFtableWrap.odt diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index 129b93882c68..3e415e25da18 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -102,6 +102,15 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf128197) CPPUNIT_ASSERT_LESS(nHeight15, nHeight14); } +DECLARE_OOXMLEXPORT_TEST(testTdf135595_HFtableWrap, "tdf135595_HFtableWrap.odt") +{ + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nRowHeight = getXPath(pXmlDoc, "//page[1]/header/tab/row/infos/bounds", "height").toInt32(); + // tdf#77794: always force bLayoutInCell from false to true for MSO2013+ + // The fly is supposed to be inside the cell. Before, height was 998. Now it is 2839. + CPPUNIT_ASSERT_MESSAGE("Image must be contained inside the table cell", nRowHeight > 2000); +} + DECLARE_OOXMLIMPORT_TEST(testTdf123622, "tdf123622.docx") { uno::Reference<beans::XPropertySet> XPropsRight(getShape(1),uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 1fa3d39a9b9b..b3cae27dd228 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3901,6 +3901,11 @@ StyleSheetTablePtr const & DomainMapper::GetStyleSheetTable( ) return m_pImpl->GetStyleSheetTable( ); } +SettingsTablePtr const & DomainMapper::GetSettingsTable() +{ + return m_pImpl->GetSettingsTable(); +} + GraphicZOrderHelper* DomainMapper::graphicZOrderHelper() { if (zOrderHelper == nullptr) diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx index d84638f75840..34066b95cff1 100644 --- a/writerfilter/source/dmapper/DomainMapper.hxx +++ b/writerfilter/source/dmapper/DomainMapper.hxx @@ -22,6 +22,7 @@ #include <dmapper/DomainMapperFactory.hxx> #include "LoggedResources.hxx" #include "PropertyMap.hxx" +#include "SettingsTable.hxx" #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/style/TabAlign.hpp> @@ -103,6 +104,7 @@ public: OUString getOrCreateCharStyle( PropertyValueVector_t& rCharProperties, bool bAlwaysCreate ); StyleSheetTablePtr const & GetStyleSheetTable( ); + SettingsTablePtr const & GetSettingsTable(); GraphicZOrderHelper* graphicZOrderHelper(); GraphicNamingHelper& GetGraphicNamingHelper(); diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx index cf27a30c49f3..dde3e1adb3b7 100644 --- a/writerfilter/source/dmapper/GraphicImport.cxx +++ b/writerfilter/source/dmapper/GraphicImport.cxx @@ -625,7 +625,9 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) case NS_ooxml::LN_CT_Anchor_locked: // 90990; - ignored break; case NS_ooxml::LN_CT_Anchor_layoutInCell: // 90991; - ignored - m_pImpl->bLayoutInCell = nIntValue != 0; + // Starting in MSO 2013, anchors are ALWAYS considered to be laid out in table cell. + m_pImpl->bLayoutInCell = nIntValue != 0 || + (m_pImpl->rDomainMapper.GetSettingsTable()->GetWordCompatibilityMode() > 14 && m_pImpl->rDomainMapper.IsInTable()); break; case NS_ooxml::LN_CT_Anchor_hidden: // 90992; - ignored break; |