summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-07-31 15:19:23 +0200
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-07-31 15:22:23 +0200
commitae126d43e4737ab39e53827d9ad3bd6983577b1f (patch)
treeed0bfbcda515e8a0cd78e05c10604d1ecf6c1735 /writerfilter
parentda53c44d7074499db2d0ba57eee09bde6152e7ea (diff)
n#772094: writerfilter, pictures anchored in header/footer won't be opaque
This dark magic is needed to have a behavior similar to the one of Word for images anchored in headers/footers. Writer can't have pictures laid over the header/footer but below the body text. Change-Id: I2c001d4f696c1623370c531059b74e3d5fa4f5b7
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/inc/dmapper/DomainMapper.hxx2
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx2
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx6
5 files changed, 19 insertions, 2 deletions
diff --git a/writerfilter/inc/dmapper/DomainMapper.hxx b/writerfilter/inc/dmapper/DomainMapper.hxx
index b781418ad463..c22eebe69857 100644
--- a/writerfilter/inc/dmapper/DomainMapper.hxx
+++ b/writerfilter/inc/dmapper/DomainMapper.hxx
@@ -108,6 +108,8 @@ public:
boost::shared_ptr< StyleSheetTable > GetStyleSheetTable( );
GraphicZOrderHelper* graphicZOrderHelper();
+ bool IsInHeaderFooter() const;
+
private:
// Stream
virtual void lcl_startSectionGroup();
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 1bc0737be32a..4aa843c70b8b 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3839,6 +3839,11 @@ GraphicZOrderHelper* DomainMapper::graphicZOrderHelper()
return zOrderHelper.get();
}
+bool DomainMapper::IsInHeaderFooter() const
+{
+ return m_pImpl->IsInHeaderFooter();
+}
+
} //namespace dmapper
} //namespace writerfilter
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 73a084a2e24c..ebee085b2759 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -192,6 +192,7 @@ DomainMapper_Impl::DomainMapper_Impl(
m_sCurrentParaStyleId(),
m_bInStyleSheetImport( false ),
m_bInAnyTableImport( false ),
+ m_bInHeaderFooterImport( false ),
m_bLineNumberingSet( false ),
m_bIsInFootnoteProperties( true ),
m_bIsCustomFtnMark( false ),
@@ -1268,6 +1269,8 @@ uno::Reference< beans::XPropertySet > DomainMapper_Impl::appendTextSectionAfter(
void DomainMapper_Impl::PushPageHeader(SectionPropertyMap::PageType eType)
{
+ m_bInHeaderFooterImport = true;
+
//get the section context
PropertyMapPtr pContext = DomainMapper_Impl::GetTopContextOfType(CONTEXT_SECTION);
//ask for the header name of the given type
@@ -1307,6 +1310,8 @@ void DomainMapper_Impl::PushPageHeader(SectionPropertyMap::PageType eType)
void DomainMapper_Impl::PushPageFooter(SectionPropertyMap::PageType eType)
{
+ m_bInHeaderFooterImport = true;
+
//get the section context
PropertyMapPtr pContext = DomainMapper_Impl::GetTopContextOfType(CONTEXT_SECTION);
//ask for the footer name of the given type
@@ -1350,6 +1355,7 @@ void DomainMapper_Impl::PopPageHeaderFooter()
RemoveLastParagraph( );
if (!m_aTextAppendStack.empty())
m_aTextAppendStack.pop();
+ m_bInHeaderFooterImport = false;
}
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 3e28f2262357..2622cb70c3ee 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -332,6 +332,7 @@ private:
OUString m_sCurrentParaStyleId;
bool m_bInStyleSheetImport; //in import of fonts, styles, lists or lfos
bool m_bInAnyTableImport; //in import of fonts, styles, lists or lfos
+ bool m_bInHeaderFooterImport;
bool m_bLineNumberingSet;
bool m_bIsInFootnoteProperties;
@@ -499,6 +500,7 @@ public:
void PushPageFooter(SectionPropertyMap::PageType eType);
void PopPageHeaderFooter();
+ bool IsInHeaderFooter() const { return m_bInHeaderFooterImport; }
void PushFootOrEndnote( bool bIsFootnote );
void PopFootOrEndnote();
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 415fa41a26d8..fb0d6fa4cd51 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -1390,10 +1390,12 @@ uno::Reference< text::XTextContent > GraphicImport::createGraphicObject( const b
uno::makeAny(m_pImpl->nTopPosition));
xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_VERT_ORIENT_RELATION ),
uno::makeAny(m_pImpl->nVertRelation));
- if( !m_pImpl->bOpaque )
+
+ bool bOpaque = m_pImpl->bOpaque && !m_pImpl->rDomainMapper.IsInHeaderFooter( );
+ if( !bOpaque )
{
xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_OPAQUE ),
- uno::makeAny(m_pImpl->bOpaque));
+ uno::makeAny(bOpaque));
}
xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_SURROUND ),
uno::makeAny(m_pImpl->nWrap));