summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinaya Mandke <vinaya.mandke@synerzip.com>2014-03-03 16:31:00 +0530
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-03-05 11:07:19 +0100
commit7691532a89a94120c220f77e8cc6c42615e3d7c4 (patch)
tree97077eadd7ff224b59f8b6a2afaed0fb7b58c11b
parentaad35298c43795e60605e0ea71290642687c8fc4 (diff)
fdo#73596 [DOCX] Index:distance between columns
Import the "w:space" or the distance between multiple columns of an Index Modifies existing UT for the same Reviewed on: https://gerrit.libreoffice.org/8444 Change-Id: I6d38e106208524cb22d0b98b0071360865e64bc0
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport.cxx2
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx23
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx1
4 files changed, 29 insertions, 3 deletions
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 4c1ba4ff24fe..920f33a7c516 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2755,6 +2755,8 @@ DECLARE_OOXMLEXPORT_TEST(testAlphabeticalIndex_MultipleColumns,"alphabeticalInde
// check for section breaks after and before the Index Section
assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:sectPr/w:type","val","continuous");
assertXPath(pXmlDoc, "/w:document/w:body/w:p[9]/w:pPr/w:sectPr/w:type","val","continuous");
+ // check for "w:space" attribute for the columns in Section Properties
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[9]/w:pPr/w:sectPr/w:cols/w:col[1]","space","720");
}
DECLARE_OOXMLEXPORT_TEST(testPageref, "testPageref.docx")
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index ccc6a859bca6..6e0f4e3ebfd9 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -57,6 +57,7 @@
#include <com/sun/star/text/WritingMode.hpp>
#include <com/sun/star/text/WritingMode2.hpp>
#include <com/sun/star/text/XFootnote.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <comphelper/types.hxx>
#include <comphelper/storagehelper.hxx>
@@ -1912,6 +1913,24 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() );
}
}
+
+ else if ( pSectionContext )
+ {
+ FieldContextPtr pContext = m_pImpl->GetTopFieldContext();
+ uno::Reference< beans::XPropertySet > xTOC = pContext->GetTOC();
+ if( xTOC.is() )
+ {
+ uno::Reference<text::XTextColumns> xTextColumns;
+ xTOC->getPropertyValue(rPropNameSupplier.GetName( PROP_TEXT_COLUMNS )) >>= xTextColumns;
+ if (xTextColumns.is())
+ {
+ uno::Reference< beans::XPropertySet > xColumnPropSet( xTextColumns, uno::UNO_QUERY_THROW );
+ if ( xColumnPropSet.is() )
+ xColumnPropSet->setPropertyValue( rPropNameSupplier.GetName( PROP_AUTOMATIC_DISTANCE ), uno::makeAny( pSectHdl->GetSpace() ));
+ xTOC->setPropertyValue( rPropNameSupplier.GetName( PROP_TEXT_COLUMNS ), uno::makeAny( xTextColumns ) );
+ }
+ }
+ }
}
}
break;
@@ -2405,7 +2424,7 @@ void DomainMapper::data(const sal_uInt8* /*buf*/, size_t /*len*/,
void DomainMapper::lcl_startSectionGroup()
{
- if (!m_pImpl->isInIndexContext() || !m_pImpl->isInBibliographyContext())
+ if (!m_pImpl->isInIndexContext() && !m_pImpl->isInBibliographyContext())
{
m_pImpl->PushProperties(CONTEXT_SECTION);
}
@@ -2413,7 +2432,7 @@ void DomainMapper::lcl_startSectionGroup()
void DomainMapper::lcl_endSectionGroup()
{
- if (!m_pImpl->isInIndexContext() || !m_pImpl->isInBibliographyContext())
+ if (!m_pImpl->isInIndexContext() && !m_pImpl->isInBibliographyContext())
{
m_pImpl->CheckUnregisteredFrameConversion();
m_pImpl->ExecuteFrameConversion();
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 35010980a67a..0d08a38296f6 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -464,7 +464,11 @@ uno::Reference< text::XTextAppend > DomainMapper_Impl::GetTopTextAppend()
return m_aTextAppendStack.top().xTextAppend;
}
-
+FieldContextPtr DomainMapper_Impl::GetTopFieldContext()
+{
+ SAL_WARN_IF(m_aFieldStack.empty(), "writerfilter", "Field stack is empty");
+ return m_aFieldStack.top();
+}
void DomainMapper_Impl::InitTabStopFromStyle( const uno::Sequence< style::TabStop >& rInitTabStops )
{
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index ddd77750db28..6c7cac57cdfc 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -487,6 +487,7 @@ public:
PropertyMapPtr GetTopContextOfType(ContextType eId);
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextAppend > GetTopTextAppend();
+ FieldContextPtr GetTopFieldContext();
FontTablePtr GetFontTable()
{