|
 |
ebc4bd |
From bb21f53e6c9b6b3f4a2d8c5e55ebc3a08caa69ba Mon Sep 17 00:00:00 2001
|
|
 |
ebc4bd |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
ebc4bd |
Date: Thu, 18 Sep 2014 15:47:59 +0200
|
|
 |
ebc4bd |
Subject: [PATCH] DOCX import: fix handling of dropdown SDT around cell
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
There were two problems here:
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
1) The CT_SdtContentCell handlers didn't emit the usual
|
|
 |
ebc4bd |
NS_ooxml::LN_CT_SdtBlock_sdtContent /
|
|
 |
ebc4bd |
NS_ooxml::LN_CT_SdtBlock_sdtEndContent tokens, so the dropdown control
|
|
 |
ebc4bd |
was not created (and then was created with the wrong anchor).
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
2) In case the SDT was around the cell, the newline character was also
|
|
 |
ebc4bd |
added to the text of the currently selected entry, resulting in an
|
|
 |
ebc4bd |
invalid argument of SwXText::convertToTable(), so no table was created.
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
(cherry picked from commit 419054c0f19acb323a0e51c7ef49a1a2d9f42ac8)
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
Conflicts:
|
|
 |
ebc4bd |
sw/qa/extras/ooxmlexport/ooxmlexport.cxx
|
|
 |
ebc4bd |
writerfilter/source/dmapper/DomainMapper.cxx
|
|
 |
ebc4bd |
writerfilter/source/ooxml/model.xml
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
Change-Id: I4806626181f40c6d26ff7b25f5dbb863967d8077
|
|
 |
ebc4bd |
---
|
|
 |
ebc4bd |
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 9 ---------
|
|
 |
ebc4bd |
writerfilter/source/dmapper/DomainMapper.cxx | 14 +++++++++++---
|
|
 |
ebc4bd |
writerfilter/source/ooxml/model.xml | 5 ++++-
|
|
 |
ebc4bd |
3 files changed, 15 insertions(+), 13 deletions(-)
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
|
|
 |
ebc4bd |
index a443d58..24459d1 100644
|
|
 |
ebc4bd |
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
|
|
 |
ebc4bd |
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
|
|
 |
ebc4bd |
@@ -3566,15 +3566,6 @@ DECLARE_OOXMLEXPORT_TEST(testfdo79822, "fdo79822.docx")
|
|
 |
ebc4bd |
return;
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
-DECLARE_OOXMLEXPORT_TEST(testfdo79817,"fdo79817.docx")
|
|
 |
ebc4bd |
-{
|
|
 |
ebc4bd |
- xmlDocPtr pXmlDoc = parseExport("word/document.xml");
|
|
 |
ebc4bd |
- if (!pXmlDoc)
|
|
 |
ebc4bd |
- return;
|
|
 |
ebc4bd |
- assertXPath ( pXmlDoc, "/w:document/w:body/w:p[3]/w:sdt/w:sdtPr/w:dataBinding", "storeItemID","{9222E47B-A68B-4AEB-9855-21C912B9D3D2}");
|
|
 |
ebc4bd |
- assertXPath ( pXmlDoc, "/w:document/w:body/w:p[3]/w:sdt/w:sdtPr/w:dataBinding", "xpath","/ns0:properties[1]/documentManagement[1]/ns2:Responsible_x0020_Officer_x0020_Title[1]");
|
|
 |
ebc4bd |
-}
|
|
 |
ebc4bd |
-
|
|
 |
ebc4bd |
DECLARE_OOXMLEXPORT_TEST(testfdo80522,"fdo80522.docx")
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
xmlDocPtr pXmlDoc = parseExport("[Content_Types].xml");
|
|
 |
ebc4bd |
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
|
|
 |
ebc4bd |
index 44efb59..baf91d9 100644
|
|
 |
ebc4bd |
--- a/writerfilter/source/dmapper/DomainMapper.cxx
|
|
 |
ebc4bd |
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
|
|
 |
ebc4bd |
@@ -2768,10 +2768,18 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
|
|
 |
ebc4bd |
aBuffer.append( (const sal_Unicode *) data_, len);
|
|
 |
ebc4bd |
sText = aBuffer.makeStringAndClear();
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
+
|
|
 |
ebc4bd |
+ bool bNewLine = len == 1 && (sText[0] == 0x0d || sText[0] == 0x07);
|
|
 |
ebc4bd |
if (!m_pImpl->m_pSdtHelper->getDropDownItems().empty())
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
- m_pImpl->m_pSdtHelper->getSdtTexts().append(sText);
|
|
 |
ebc4bd |
- return;
|
|
 |
ebc4bd |
+ if (bNewLine)
|
|
 |
ebc4bd |
+ // Dropdown control has single-line texts, so in case of newline, create the control.
|
|
 |
ebc4bd |
+ m_pImpl->m_pSdtHelper->createDropDownControl();
|
|
 |
ebc4bd |
+ else
|
|
 |
ebc4bd |
+ {
|
|
 |
ebc4bd |
+ m_pImpl->m_pSdtHelper->getSdtTexts().append(sText);
|
|
 |
ebc4bd |
+ return;
|
|
 |
ebc4bd |
+ }
|
|
 |
ebc4bd |
}
|
|
 |
ebc4bd |
else if (!m_pImpl->m_pSdtHelper->getDateFormat().isEmpty())
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
@@ -2814,7 +2822,7 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
m_pImpl->getTableManager().utext(data_, len);
|
|
 |
ebc4bd |
|
|
 |
ebc4bd |
- if(len == 1 && (sText[0] == 0x0d || sText[0] == 0x07))
|
|
 |
ebc4bd |
+ if (bNewLine)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
if (m_pImpl->m_bIgnoreNextPara)
|
|
 |
ebc4bd |
{
|
|
 |
ebc4bd |
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
|
|
 |
ebc4bd |
index 69ac296..3f4e71c 100644
|
|
 |
ebc4bd |
--- a/writerfilter/source/ooxml/model.xml
|
|
 |
ebc4bd |
+++ b/writerfilter/source/ooxml/model.xml
|
|
 |
ebc4bd |
@@ -25033,7 +25033,10 @@
|
|
 |
ebc4bd |
<resource name="CT_SdtContentRun" resource="Stream" tag="field"/>
|
|
 |
ebc4bd |
<resource name="CT_SdtContentBlock" resource="Stream" tag="field"/>
|
|
 |
ebc4bd |
<resource name="CT_SdtContentRow" resource="Stream" tag="field"/>
|
|
 |
ebc4bd |
- <resource name="CT_SdtContentCell" resource="Stream" tag="field"/>
|
|
 |
ebc4bd |
+ <resource name="CT_SdtContentCell" resource="Stream" tag="field">
|
|
 |
ebc4bd |
+ <action name="start" action="startSdt"/>
|
|
 |
ebc4bd |
+ <action name="end" action="endSdt"/>
|
|
 |
ebc4bd |
+ </resource>
|
|
 |
ebc4bd |
<resource name="CT_SdtBlock" resource="Stream" tag="field">
|
|
 |
ebc4bd |
<element name="sdtPr" tokenid="ooxml:CT_SdtBlock_sdtPr"/>
|
|
 |
ebc4bd |
<element name="sdtEndPr" tokenid="ooxml:CT_SdtBlock_sdtEndPr"/>
|
|
 |
ebc4bd |
--
|
|
 |
ebc4bd |
2.1.0
|
|
 |
ebc4bd |
|