summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2017-05-22 16:42:35 +0300
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-05-29 09:39:44 +0200
commite8714e3451282218e34d2ded472c9a5a44bd0bd2 (patch)
treea5d43c86dabc8815b0dca529d84e5a72da0732e8
parent5e49021b8ed260b97789e40c1e85eb61b3d5e1ed (diff)
related tdf#82173 writerfilter: ignore case when mapping style name
Depends on unit test modifications in commits 71229da3cb05fc8f3e94fe6a6a5d9ad43cdf8702 a9118665637dafddd41ca549d0f73948cf1d332c One known effect is that Word's "footnote reference" formatting in docx will now affect Writer's "Footnote anchor". Change-Id: I84f21dcff86f727869a49fa4b53727c24337f63f Reviewed-on: https://gerrit.libreoffice.org/37936 Reviewed-by: Justin Luth <justin_luth@sil.org> Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf82173_footnoteStyle.docxbin0 -> 14012 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport9.cxx7
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx33
3 files changed, 19 insertions, 21 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf82173_footnoteStyle.docx b/sw/qa/extras/ooxmlexport/data/tdf82173_footnoteStyle.docx
new file mode 100644
index 000000000000..4fa7b0a24d8d
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf82173_footnoteStyle.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index 6ef5dd2db10b..038fb7a510bf 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -464,6 +464,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf99227, "tdf99227.docx")
assertXPath(pXmlDoc, "//w:footnote/w:p/w:r/w:drawing", 1);
}
+DECLARE_OOXMLIMPORT_TEST(testTdf82173_footnoteStyle, "tdf82173_footnoteStyle.docx")
+{
+ uno::Reference<beans::XPropertySet> xPageStyle(getStyles("CharacterStyles")->getByName("Footnote anchor"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(58), getProperty< sal_Int32 >(xPageStyle, "CharEscapementHeight") );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(0x00FF00), getProperty< sal_Int32 >(xPageStyle, "CharColor") );
+}
+
DECLARE_OOXMLEXPORT_TEST(testTdf104162, "tdf104162.docx")
{
// This crashed: the comment field contained a table with a <w:hideMark/>.
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index 1a25933a8dc6..804940d84285 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -46,11 +46,22 @@
using namespace ::com::sun::star;
+namespace {
+
+/** Functor for case-insensitive string comparison, usable in maps etc. */
+struct IgnoreCaseCompare
+{
+ bool operator()( const OUString& rName1, const OUString& rName2 ) const
+ { return rName1.compareToIgnoreAsciiCase( rName2 ) < 0; }
+};
+
+} // namespace
+
namespace writerfilter {
namespace dmapper
{
-typedef ::std::map< OUString, OUString> StringPairMap_t;
+typedef ::std::map< OUString, OUString, IgnoreCaseCompare> StringPairMap_t;
StyleSheetEntry::StyleSheetEntry() :
@@ -1299,15 +1310,6 @@ const StyleSheetEntryPtr StyleSheetTable::FindParentStyleSheet(const OUString& _
static const sal_Char* const aStyleNamePairs[] =
{
"Normal", "Standard",
- "heading 1", "Heading 1",
- "heading 2", "Heading 2",
- "heading 3", "Heading 3",
- "heading 4", "Heading 4",
- "heading 5", "Heading 5",
- "heading 6", "Heading 6",
- "heading 7", "Heading 7",
- "heading 8", "Heading 8",
- "heading 9", "Heading 9",
"Heading1", "Heading 1",
"Heading2", "Heading 2",
"Heading3", "Heading 3",
@@ -1345,15 +1347,6 @@ static const sal_Char* const aStyleNamePairs[] =
"TOC 8", "Contents 8",
"TOC 9", "Contents 9",
"TOCHeading", "Contents Heading",
- "toc 1", "Contents 1",
- "toc 2", "Contents 2",
- "toc 3", "Contents 3",
- "toc 4", "Contents 4",
- "toc 5", "Contents 5",
- "toc 6", "Contents 6",
- "toc 7", "Contents 7",
- "toc 8", "Contents 8",
- "toc 9", "Contents 9",
"TOC1", "Contents 1",
"TOC2", "Contents 2",
"TOC3", "Contents 3",
@@ -1367,9 +1360,7 @@ static const sal_Char* const aStyleNamePairs[] =
"Footnote Text", "Footnote",
"Annotation Text", "",
"Header", "Header",
- "header", "Header",
"Footer", "Footer",
- "footer", "Footer",
"Index Heading", "Index Heading",
"Caption", "",
"Table of Figures", "",