sw/qa/extras/ooxmlexport/data/watermark-layer.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 15 +++++++++++++++ sw/source/core/edit/edfcol.cxx | 15 ++++++++++----- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 10 +++++++++- 4 files changed, 34 insertions(+), 6 deletions(-)
New commits: commit 7deade09127367cc0345033062f689db92b08d19 Author: Szymon KÅos <szymon.k...@collabora.com> Date: Fri Aug 18 15:13:52 2017 +0200 Watermark: not visible if page background was set Watermark was drawn under the page background. It has to be placed on the upper layer to be visible. Change-Id: I132a313eed6fb712aafdca14a38fe559aa4231c8 Reviewed-on: https://gerrit.libreoffice.org/41289 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Szymon KÅos <szymon.k...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/41557 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sw/qa/extras/ooxmlexport/data/watermark-layer.docx b/sw/qa/extras/ooxmlexport/data/watermark-layer.docx new file mode 100755 index 000000000000..9428686c1bad Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/watermark-layer.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 9b98417a361b..a9db27e9bd85 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -27,8 +27,11 @@ #include <com/sun/star/drawing/XControlShape.hpp> #include <com/sun/star/text/TextContentAnchorType.hpp> +#include <ftninfo.hxx> +#include <drawdoc.hxx> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> +#include <svx/svdpage.hxx> class Test : public SwModelTestBase { @@ -546,6 +549,18 @@ DECLARE_OOXMLEXPORT_TEST(testTdf109184, "tdf109184.docx") CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xff0000), getProperty<sal_Int32>(xCell3, "BackColor")); } +DECLARE_OOXMLEXPORT_TEST(testWatermarkLayer, "watermark-layer.docx") +{ + // Watermark was not visible if page background was set. + + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SdrPage* pPage = pTextDoc->GetDocShell()->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + SdrObject* pObject = pPage->GetObj(0); + + CPPUNIT_ASSERT(pObject); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt8>(1), pObject->GetLayer()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx index 06a33461430f..1dadb1bdb8f4 100644 --- a/sw/source/core/edit/edfcol.cxx +++ b/sw/source/core/edit/edfcol.cxx @@ -59,6 +59,7 @@ #include <rootfrm.hxx> #include <pagefrm.hxx> #include <sfx2/watermarkitem.hxx> +#include <DocumentDrawModelManager.hxx> #define WATERMARK_NAME "PowerPlusWaterMarkObject" @@ -347,7 +348,8 @@ SfxWatermarkItem SwEditShell::GetWatermark() void lcl_placeWatermarkInHeader(const SfxWatermarkItem& rWatermark, const uno::Reference<frame::XModel>& xModel, const uno::Reference<beans::XPropertySet>& xPageStyle, - const uno::Reference<text::XText>& xHeaderText) + const uno::Reference<text::XText>& xHeaderText, + sal_Int16 nLayer) { uno::Reference<lang::XMultiServiceFactory> xMultiServiceFactory(xModel, uno::UNO_QUERY); OUString aShapeServiceName = "com.sun.star.drawing.CustomShape"; @@ -469,6 +471,7 @@ void lcl_placeWatermarkInHeader(const SfxWatermarkItem& rWatermark, xPropertySet->setPropertyValue("Transformation", uno::makeAny(aMatrix)); xPropertySet->setPropertyValue(UNO_NAME_HORI_ORIENT, uno::makeAny(static_cast<sal_Int16>(text::HoriOrientation::CENTER))); xPropertySet->setPropertyValue(UNO_NAME_VERT_ORIENT, uno::makeAny(static_cast<sal_Int16>(text::VertOrientation::CENTER))); + xPropertySet->setPropertyValue(UNO_NAME_MISC_OBJ_LAYERID, uno::makeAny(nLayer)); uno::Reference<text::XTextRange> xTextRange(xShape, uno::UNO_QUERY); xTextRange->setString(rWatermark.GetText()); @@ -514,6 +517,8 @@ void SwEditShell::SetWatermark(const SfxWatermarkItem& rWatermark) uno::Reference<container::XNameAccess> xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); uno::Reference<container::XNameAccess> xStyleFamily(xStyleFamilies->getByName("PageStyles"), uno::UNO_QUERY); + sal_Int16 nHeavenId = GetDoc()->getIDocumentDrawModelAccess().GetHeavenId(); + std::set<OUString> aUsedPageStyles = lcl_getUsedPageStyles(this); for (const OUString& rPageStyleName : aUsedPageStyles) { @@ -539,16 +544,16 @@ void SwEditShell::SetWatermark(const SfxWatermarkItem& rWatermark) uno::Reference<text::XText> xHeaderTextRight; xPageStyle->getPropertyValue(UNO_NAME_HEADER_TEXT) >>= xHeaderText; - lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderText); + lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderText, nHeavenId); xPageStyle->getPropertyValue(UNO_NAME_HEADER_TEXT_FIRST) >>= xHeaderTextFirst; - lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextFirst); + lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextFirst, nHeavenId); xPageStyle->getPropertyValue(UNO_NAME_HEADER_TEXT_LEFT) >>= xHeaderTextLeft; - lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextLeft); + lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextLeft, nHeavenId); xPageStyle->getPropertyValue(UNO_NAME_HEADER_TEXT_RIGHT) >>= xHeaderTextRight; - lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextRight); + lcl_placeWatermarkInHeader(rWatermark, xModel, xPageStyle, xHeaderTextRight, nHeavenId); // tdf#108494 the header height was switched to height of a watermark // and shape was moved to the lower part of a page diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 25751c12be4e..34b9f6b1601f 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -85,7 +85,7 @@ #include <comphelper/sequence.hxx> #include <comphelper/propertyvalue.hxx> #include <unotools/mediadescriptor.hxx> - +#include <editeng/unoprnms.hxx> @@ -2138,6 +2138,14 @@ void DomainMapper_Impl::PopShapeContext() { } } + // Move Watermark upper to be visible if page background is set + uno::Reference<drawing::XShape> xShape( xObj, uno::UNO_QUERY_THROW ); + uno::Reference<container::XNamed> xNamed( xShape, uno::UNO_QUERY ); + if ( xNamed.is() && xNamed->getName().match( "PowerPlusWaterMarkObject" ) ) + { + uno::Reference<beans::XPropertySet> xShapePropertySet( xShape, uno::UNO_QUERY ); + xShapePropertySet->setPropertyValue( UNO_NAME_MISC_OBJ_LAYERID, uno::makeAny( sal_Int16(1) ) ); + } m_aAnchoredStack.pop(); } m_bFrameBtLr = false;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits