[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - sw/qa sw/source writerfilter/source
Szymon Kłos
szymon.klos at collabora.com
Fri Aug 25 14:23:29 UTC 2017
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.klos at 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 <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/41557
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at 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;
More information about the Libreoffice-commits
mailing list