[Libreoffice-commits] core.git: sw/qa writerfilter/source
Miklos Vajna
vmiklos at collabora.co.uk
Fri Apr 8 16:08:15 UTC 2016
sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 6 ++++++
writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 13 +++++++------
2 files changed, 13 insertions(+), 6 deletions(-)
New commits:
commit fd61dee6457a44687f1142dd55bfee6b64fda2ef
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Apr 8 17:18:55 2016 +0200
tdf#99140 DOCX import: fix table horizontal aligment to be 'from left' ...
... when it was 'manual'.
Regression from commit c1e563f6efd09cd3463f1b92a3022ae288c92087
(fdo#76741 [DOCX] Table Alignment and width type, 2014-04-04), DOCX
import code had to deal with two kinds of horizontal alignment when it
came to floating tables: the alignment of the table itself, and the
alignment of the float parameters. The problem is, in general it's
wanted that the table is aligned according to the floating parameters,
but in Writer the "from left" UI setting is described differently for
tables and fly frames: tables use LEFT_AND_WIDTH for that, while fly
frames use NONE.
Fix the problem by touching the default only in case the floating
parameters have something that's different from NONE.
With this, the width of tables is no longer lost when they are described
to be floating ones in the DOCX markup, but FloatingTableConversion()
decides to ignore that.
Change-Id: Idd41c3e03e6ded8552e9d15b6080e4b45eb18d3d
Reviewed-on: https://gerrit.libreoffice.org/23923
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Jenkins <ci at libreoffice.org>
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index da3ccc7d..d838edb 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -3231,6 +3231,12 @@ DECLARE_OOXMLIMPORT_TEST(testTdf99140, "tdf99140.docx")
uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
// This was 1: a multi-page floating table was imported as a TextFrame.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), xDrawPage->getCount());
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(1), uno::UNO_QUERY);
+ // This was text::HoriOrientation::NONE, the second table was too wide due to this.
+ CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::LEFT_AND_WIDTH, getProperty<sal_Int16>(xTableProperties, "HoriOrient"));
}
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 91a797a..c16282e 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -281,20 +281,21 @@ bool lcl_extractTableBorderProperty(PropertyMapPtr pTableProperties, const Prope
return false;
}
-}
-
-bool lcl_extractHoriOrient(std::vector<beans::PropertyValue>& rFrameProperties, sal_Int32& nHoriOrient)
+void lcl_extractHoriOrient(std::vector<beans::PropertyValue>& rFrameProperties, sal_Int32& nHoriOrient)
{
// Shifts the frame left by the given value.
for (size_t i = 0; i < rFrameProperties.size(); ++i)
{
if (rFrameProperties[i].Name == "HoriOrient")
{
- nHoriOrient = rFrameProperties[i].Value.get<sal_Int32>();
- return true;
+ sal_Int32 nValue = rFrameProperties[i].Value.get<sal_Int32>();
+ if (nValue != text::HoriOrientation::NONE)
+ nHoriOrient = nValue;
+ return;
}
}
- return false;
+}
+
}
void lcl_DecrementHoriOrientPosition(std::vector<beans::PropertyValue>& rFrameProperties, sal_Int32 nAmount)
More information about the Libreoffice-commits
mailing list