Accepting request 881333 from home:scarabeus_iv:branches:LibreOffice:Factory
- Version update to 7.1.2.2: * 7.1.2 final release - Drop merged patches: * bsc1174465.diff * bsc1181644.diff * bsc1176547_1.diff * bsc1176547_2.diff OBS-URL: https://build.opensuse.org/request/show/881333 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=951
This commit is contained in:
parent
4c0d2b49a4
commit
b128299196
117
bsc1174465.diff
117
bsc1174465.diff
@ -1,117 +0,0 @@
|
||||
From f767b83d1c5493815708135f0f2aec03e47615ac Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Vajna <vmiklos@collabora.com>
|
||||
Date: Fri, 12 Feb 2021 17:22:57 +0100
|
||||
Subject: [PATCH] svx: fix import of multiple paragraphs into title shapes
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Title shapes try hard to have a single paragraph only, the Impress UI
|
||||
inserts linebreaks instead of paragraphs breaks in
|
||||
sd::FuText::KeyInput(), ever since commit
|
||||
f47a9d9db3d06927380bb79b04bb6d4721a92d2b (initial import, 2000-09-18).
|
||||
This matches the PowerPoint behavior. This is most visible when the
|
||||
paragraph has a bullet associated with it.
|
||||
|
||||
Interestingly you can still put multiple paragraphs into title shapes
|
||||
using paste special -> plain text.
|
||||
|
||||
In that case, it was inconsistent that we exported these multiple
|
||||
paragraphs to ODP, but merged them to a single paragraph on import since
|
||||
commit 0a783c1a041e2b74b7bf238d11ee2c303f6708f4 (#100190# don't allow
|
||||
more then one paragraph on title text objects, 2002-06-25).
|
||||
|
||||
This results in loosing your bullets on save + open, both in the ODP and
|
||||
PPTX cases, since removeActionLock() on the XShape triggers this tweak.
|
||||
Also, PowerPoint does not do this merging on import. So fix the problem
|
||||
by removing the import-time tweak but leave the UI unchanged.
|
||||
|
||||
(cherry picked from commit 043690eff82d5798774452a8364e1566b866a320)
|
||||
|
||||
Change-Id: I6796f83c40e83f65cfb0f6c7e66069c3e08c1e2d
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110900
|
||||
Tested-by: Jenkins
|
||||
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
|
||||
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
||||
---
|
||||
svx/qa/unit/unodraw.cxx | 33 +++++++++++++++++++++++++++++++++
|
||||
svx/source/unodraw/unoshtxt.cxx | 12 ------------
|
||||
2 files changed, 33 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/svx/qa/unit/unodraw.cxx b/svx/qa/unit/unodraw.cxx
|
||||
index 938e44f9ca21..d8e7c03183d1 100644
|
||||
--- a/svx/qa/unit/unodraw.cxx
|
||||
+++ b/svx/qa/unit/unodraw.cxx
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <com/sun/star/graphic/XGraphic.hpp>
|
||||
#include <com/sun/star/table/XCellRange.hpp>
|
||||
#include <com/sun/star/text/XTextRange.hpp>
|
||||
+#include <com/sun/star/text/ControlCharacter.hpp>
|
||||
|
||||
#include <comphelper/processfactory.hxx>
|
||||
#include <comphelper/propertysequence.hxx>
|
||||
@@ -175,6 +176,38 @@ CPPUNIT_TEST_FIXTURE(UnodrawTest, testTableShadowDirect)
|
||||
// which has no shadow for cell text (only for cell borders and cell background).
|
||||
assertXPath(pDocument, "//shadow//sdrblocktext", /*nNumberOfNodes=*/0);
|
||||
}
|
||||
+
|
||||
+CPPUNIT_TEST_FIXTURE(UnodrawTest, testTitleShapeBullets)
|
||||
+{
|
||||
+ // Create a title shape with 2 paragraphs in it.
|
||||
+ mxComponent = loadFromDesktop("private:factory/simpress",
|
||||
+ "com.sun.star.presentation.PresentationDocument");
|
||||
+ uno::Reference<drawing::XDrawPagesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
|
||||
+ uno::Reference<drawing::XDrawPages> xDrawPages = xSupplier->getDrawPages();
|
||||
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPages->getByIndex(0), uno::UNO_QUERY);
|
||||
+ // A default document contains a title shape and a text shape on the first slide.
|
||||
+ uno::Reference<drawing::XShape> xTitleShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
|
||||
+ uno::Reference<lang::XServiceInfo> xTitleShapeInfo(xTitleShape, uno::UNO_QUERY);
|
||||
+ CPPUNIT_ASSERT(xTitleShapeInfo->supportsService("com.sun.star.presentation.TitleTextShape"));
|
||||
+ uno::Reference<text::XTextRange> xTitleShapeText(xTitleShape, uno::UNO_QUERY);
|
||||
+ uno::Reference<text::XText> xText = xTitleShapeText->getText();
|
||||
+ uno::Reference<text::XTextRange> xCursor = xText->createTextCursor();
|
||||
+ xText->insertString(xCursor, "foo", /*bAbsorb=*/false);
|
||||
+ xText->insertControlCharacter(xCursor, text::ControlCharacter::APPEND_PARAGRAPH,
|
||||
+ /*bAbsorb=*/false);
|
||||
+ xText->insertString(xCursor, "bar", /*bAbsorb=*/false);
|
||||
+
|
||||
+ // Check that the title shape has 2 paragraphs.
|
||||
+ uno::Reference<container::XEnumerationAccess> xTextEA(xText, uno::UNO_QUERY);
|
||||
+ uno::Reference<container::XEnumeration> xTextE = xTextEA->createEnumeration();
|
||||
+ // Has a first paragraph.
|
||||
+ CPPUNIT_ASSERT(xTextE->hasMoreElements());
|
||||
+ xTextE->nextElement();
|
||||
+ // Has a second paragraph.
|
||||
+ // Without the accompanying fix in place, this test would have failed, because the 2 paragraphs
|
||||
+ // were merged together (e.g. 1 bullet instead of 2 bullets for bulleted paragraphs).
|
||||
+ CPPUNIT_ASSERT(xTextE->hasMoreElements());
|
||||
+}
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx
|
||||
index 7f2a8af49606..39cad52c073b 100644
|
||||
--- a/svx/source/unodraw/unoshtxt.cxx
|
||||
+++ b/svx/source/unodraw/unoshtxt.cxx
|
||||
@@ -780,18 +780,6 @@ void SvxTextEditSourceImpl::UpdateData()
|
||||
{
|
||||
if( mpOutliner->GetParagraphCount() != 1 || mpOutliner->GetEditEngine().GetTextLen( 0 ) )
|
||||
{
|
||||
- if( mpOutliner->GetParagraphCount() > 1 )
|
||||
- {
|
||||
- if (pTextObj->IsTextFrame() && pTextObj->GetTextKind() == OBJ_TITLETEXT)
|
||||
- {
|
||||
- while( mpOutliner->GetParagraphCount() > 1 )
|
||||
- {
|
||||
- ESelection aSel( 0,mpOutliner->GetEditEngine().GetTextLen( 0 ), 1,0 );
|
||||
- mpOutliner->QuickInsertLineBreak( aSel );
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
pTextObj->NbcSetOutlinerParaObjectForText( mpOutliner->CreateParaObject(), mpText );
|
||||
}
|
||||
else
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,153 +0,0 @@
|
||||
From 5f4808d7536a4c551c8764ac2ac6be30ad975f69 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?G=C3=BCl=C5=9Fah=20K=C3=B6se?= <gulsah.kose@collabora.com>
|
||||
Date: Thu, 28 Jan 2021 09:37:58 +0300
|
||||
Subject: [PATCH] tdf#134210 Apply mirror property to custom cropped graphic.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Change-Id: I5bf2ba8fa432af8b6a560cc60c18bef799834fd0
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110039
|
||||
Tested-by: Jenkins
|
||||
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
|
||||
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110972
|
||||
---
|
||||
oox/inc/drawingml/graphicproperties.hxx | 4 ++-
|
||||
oox/source/drawingml/fillproperties.cxx | 29 ++++++++++++++++++++-
|
||||
oox/source/drawingml/shape.cxx | 9 +++++--
|
||||
sd/qa/unit/data/pptx/mirrored-graphic.pptx | Bin 0 -> 173805 bytes
|
||||
sd/qa/unit/import-tests.cxx | 16 ++++++++++++
|
||||
5 files changed, 54 insertions(+), 4 deletions(-)
|
||||
create mode 100644 sd/qa/unit/data/pptx/mirrored-graphic.pptx
|
||||
|
||||
diff --git a/oox/inc/drawingml/graphicproperties.hxx b/oox/inc/drawingml/graphicproperties.hxx
|
||||
index 85b47dbff593..48d1acf61931 100644
|
||||
--- a/oox/inc/drawingml/graphicproperties.hxx
|
||||
+++ b/oox/inc/drawingml/graphicproperties.hxx
|
||||
@@ -43,7 +43,9 @@ struct GraphicProperties
|
||||
/** Writes the properties to the passed property map. */
|
||||
void pushToPropMap(
|
||||
PropertyMap& rPropMap,
|
||||
- const GraphicHelper& rGraphicHelper) const;
|
||||
+ const GraphicHelper& rGraphicHelper,
|
||||
+ bool bFlipH = false,
|
||||
+ bool bFlipV = false) const;
|
||||
};
|
||||
|
||||
} // namespace oox::drawingml
|
||||
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
|
||||
index 837578ebc807..78ebff7e2122 100644
|
||||
--- a/oox/source/drawingml/fillproperties.cxx
|
||||
+++ b/oox/source/drawingml/fillproperties.cxx
|
||||
@@ -112,6 +112,28 @@ Reference< XGraphic > lclCropGraphic(uno::Reference<graphic::XGraphic> const & x
|
||||
return aReturnGraphic.GetXGraphic();
|
||||
}
|
||||
|
||||
+Reference< XGraphic > lclMirrorGraphic(uno::Reference<graphic::XGraphic> const & xGraphic, bool bFlipH, bool bFlipV)
|
||||
+{
|
||||
+ ::Graphic aGraphic(xGraphic);
|
||||
+ ::Graphic aReturnGraphic;
|
||||
+
|
||||
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
|
||||
+
|
||||
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
|
||||
+ BmpMirrorFlags nMirrorFlags = BmpMirrorFlags::NONE;
|
||||
+
|
||||
+ if(bFlipH)
|
||||
+ nMirrorFlags |= BmpMirrorFlags::Horizontal;
|
||||
+ if(bFlipV)
|
||||
+ nMirrorFlags |= BmpMirrorFlags::Vertical;
|
||||
+
|
||||
+ aBitmapEx.Mirror(nMirrorFlags);
|
||||
+
|
||||
+ aReturnGraphic = ::Graphic(aBitmapEx);
|
||||
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
|
||||
+
|
||||
+ return aReturnGraphic.GetXGraphic();
|
||||
+}
|
||||
|
||||
Reference< XGraphic > lclCheckAndApplyChangeColorTransform(const BlipFillProperties &aBlipProps, uno::Reference<graphic::XGraphic> const & xGraphic,
|
||||
const GraphicHelper& rGraphicHelper, const ::Color nPhClr)
|
||||
@@ -755,7 +777,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
|
||||
rPropMap.setProperty( ShapeProperty::FillStyle, eFillStyle );
|
||||
}
|
||||
|
||||
-void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper) const
|
||||
+void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper, bool bFlipH, bool bFlipV) const
|
||||
{
|
||||
sal_Int16 nBrightness = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moBrightness.get( 0 ) / PER_PERCENT, -100, 100 );
|
||||
sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.get( 0 ) / PER_PERCENT, -100, 100 );
|
||||
@@ -805,6 +827,11 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
|
||||
xGraphic = lclRotateGraphic(xGraphic, Degree10(nAngle/10) );
|
||||
}
|
||||
|
||||
+ // We have not core feature that flips graphic in the shape.
|
||||
+ // Here we are applying flip property to bitmap directly.
|
||||
+ if(bFlipH || bFlipV)
|
||||
+ xGraphic = lclMirrorGraphic(xGraphic, bFlipH, bFlipV );
|
||||
+
|
||||
rPropMap.setProperty(PROP_FillBitmap, xGraphic);
|
||||
}
|
||||
else
|
||||
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
|
||||
index 4ec4c425c9ce..e711a3261bb3 100644
|
||||
--- a/oox/source/drawingml/shape.cxx
|
||||
+++ b/oox/source/drawingml/shape.cxx
|
||||
@@ -1049,8 +1049,13 @@ Reference< XShape > const & Shape::createAndInsert(
|
||||
aShapeProps.assignUsed( maDefaultShapeProperties );
|
||||
if(mnRotation != 0 && bIsCustomShape)
|
||||
aShapeProps.setProperty( PROP_RotateAngle, sal_Int32( NormAngle36000( mnRotation / -600 ) ));
|
||||
- if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" || bIsCustomShape )
|
||||
- mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper );
|
||||
+ if( bIsEmbMedia ||
|
||||
+ bIsCustomShape ||
|
||||
+ aServiceName == "com.sun.star.drawing.GraphicObjectShape" ||
|
||||
+ aServiceName == "com.sun.star.drawing.OLE2Shape")
|
||||
+ {
|
||||
+ mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper, mbFlipH, mbFlipV );
|
||||
+ }
|
||||
if ( mpTablePropertiesPtr && aServiceName == "com.sun.star.drawing.TableShape" )
|
||||
mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle );
|
||||
|
||||
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
|
||||
index ee75e62a849b..eff937566383 100644
|
||||
--- a/sd/qa/unit/import-tests.cxx
|
||||
+++ b/sd/qa/unit/import-tests.cxx
|
||||
@@ -216,6 +216,7 @@ class SdImportTest : public SdModelTestBase
|
||||
void testTdf128684();
|
||||
void testShapeGlowEffectPPTXImpoer();
|
||||
void testShapeBlurPPTXImport();
|
||||
+ void testMirroredGraphic();
|
||||
|
||||
bool checkPattern(sd::DrawDocShellRef const & rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected);
|
||||
void testPatternImport();
|
||||
@@ -344,6 +345,7 @@ class SdImportTest : public SdModelTestBase
|
||||
CPPUNIT_TEST(testTdf49856);
|
||||
CPPUNIT_TEST(testShapeGlowEffectPPTXImpoer);
|
||||
CPPUNIT_TEST(testShapeBlurPPTXImport);
|
||||
+ CPPUNIT_TEST(testMirroredGraphic);
|
||||
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
};
|
||||
@@ -3308,6 +3310,20 @@ void SdImportTest::testShapeBlurPPTXImport()
|
||||
|
||||
}
|
||||
|
||||
+void SdImportTest::testMirroredGraphic()
|
||||
+{
|
||||
+ sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/mirrored-graphic.pptx"), PPTX);
|
||||
+ uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0, xDocShRef), uno::UNO_SET_THROW);
|
||||
+ CPPUNIT_ASSERT(xShape.is());
|
||||
+ uno::Reference<graphic::XGraphic> xGraphic;
|
||||
+ xShape->getPropertyValue("FillBitmap") >>= xGraphic;
|
||||
+ CPPUNIT_ASSERT(xGraphic.is());
|
||||
+ Graphic aGraphic(xGraphic);
|
||||
+ BitmapEx aBitmap(aGraphic.GetBitmapEx());
|
||||
+ CPPUNIT_ASSERT_EQUAL( Color(5196117), aBitmap.GetPixelColor( 0, 0 ));
|
||||
+ xDocShRef->DoClose();
|
||||
+}
|
||||
+
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
@ -1,284 +0,0 @@
|
||||
From 33e69fb9ef450169e7d85ae3215fd9a4fc8082c2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?G=C3=BCl=C5=9Fah=20K=C3=B6se?= <gulsah.kose@collabora.com>
|
||||
Date: Mon, 1 Feb 2021 17:03:33 +0300
|
||||
Subject: [PATCH] tdf#134210 Import crop position of bitmap filled shape.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Change-Id: I6a62d68cd0f57e53934851a2f53dae05bf7d3730
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110262
|
||||
Tested-by: Jenkins
|
||||
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
|
||||
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110973
|
||||
---
|
||||
oox/source/drawingml/fillproperties.cxx | 84 ++++++++++++++++++------
|
||||
oox/source/export/drawingml.cxx | 39 +++++++----
|
||||
sd/qa/unit/data/pptx/crop-position.pptx | Bin 0 -> 175724 bytes
|
||||
sd/qa/unit/export-tests-ooxml1.cxx | 29 ++++++--
|
||||
sd/qa/unit/import-tests.cxx | 16 +++++
|
||||
5 files changed, 129 insertions(+), 39 deletions(-)
|
||||
create mode 100644 sd/qa/unit/data/pptx/crop-position.pptx
|
||||
|
||||
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
|
||||
index 78ebff7e2122..3439d28a4f22 100644
|
||||
--- a/oox/source/drawingml/fillproperties.cxx
|
||||
+++ b/oox/source/drawingml/fillproperties.cxx
|
||||
@@ -87,6 +87,30 @@ Reference< XGraphic > lclRotateGraphic(uno::Reference<graphic::XGraphic> const &
|
||||
return aReturnGraphic.GetXGraphic();
|
||||
}
|
||||
|
||||
+void lclCalculateCropPercentage(uno::Reference<graphic::XGraphic> const & xGraphic, geometry::IntegerRectangle2D &aFillRect)
|
||||
+{
|
||||
+ ::Graphic aGraphic(xGraphic);
|
||||
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
|
||||
+
|
||||
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
|
||||
+
|
||||
+ sal_Int32 nScaledWidth = aBitmapEx.GetSizePixel().Width();
|
||||
+ sal_Int32 nScaledHeight = aBitmapEx.GetSizePixel().Height();
|
||||
+
|
||||
+ sal_Int32 nOrigWidth = (nScaledWidth * (100000 - aFillRect.X1 - aFillRect.X2)) / 100000;
|
||||
+ sal_Int32 nOrigHeight = (nScaledHeight * (100000 - aFillRect.Y1 - aFillRect.Y2)) / 100000;
|
||||
+
|
||||
+ sal_Int32 nLeftPercentage = nScaledWidth * aFillRect.X1 / nOrigWidth;
|
||||
+ sal_Int32 nRightPercentage = nScaledWidth * aFillRect.X2 / nOrigWidth;
|
||||
+ sal_Int32 nTopPercentage = nScaledHeight * aFillRect.Y1 / nOrigHeight;
|
||||
+ sal_Int32 nBottomPercentage = nScaledHeight * aFillRect.Y2 / nOrigHeight;
|
||||
+
|
||||
+ aFillRect.X1 = -nLeftPercentage;
|
||||
+ aFillRect.X2 = -nRightPercentage;
|
||||
+ aFillRect.Y1 = -nTopPercentage;
|
||||
+ aFillRect.Y2 = -nBottomPercentage;
|
||||
+}
|
||||
+
|
||||
Reference< XGraphic > lclCropGraphic(uno::Reference<graphic::XGraphic> const & xGraphic, geometry::IntegerRectangle2D aFillRect)
|
||||
{
|
||||
::Graphic aGraphic(xGraphic);
|
||||
@@ -103,8 +127,15 @@ Reference< XGraphic > lclCropGraphic(uno::Reference<graphic::XGraphic> const & x
|
||||
sal_Int32 nBottomCorr = nOrigHeight * -1 * static_cast<double>(aFillRect.Y2) / 100000;
|
||||
nHeight += nBottomCorr;
|
||||
|
||||
- aBitmapEx.Scale(Size(aBitmapEx.GetSizePixel().Width(), nHeight));
|
||||
- aBitmapEx.Crop(tools::Rectangle(Point(0, nTopCorr), Size(aBitmapEx.GetSizePixel().Width(), nOrigHeight)));
|
||||
+ sal_Int32 nOrigWidth = aBitmapEx.GetSizePixel().Width();
|
||||
+ sal_Int32 nWidth = nOrigWidth;
|
||||
+ sal_Int32 nLeftCorr = nOrigWidth * -1 * static_cast<double>(aFillRect.X1) / 100000;
|
||||
+ nWidth += nLeftCorr;
|
||||
+ sal_Int32 nRightCorr = nOrigWidth * -1 * static_cast<double>(aFillRect.X2) / 100000;
|
||||
+ nWidth += nRightCorr;
|
||||
+
|
||||
+ aBitmapEx.Scale(Size(nWidth, nHeight));
|
||||
+ aBitmapEx.Crop(tools::Rectangle(Point(nLeftCorr, nTopCorr), Size(nOrigWidth, nOrigHeight)));
|
||||
|
||||
aReturnGraphic = ::Graphic(aBitmapEx);
|
||||
aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
|
||||
@@ -813,6 +844,36 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
|
||||
nContrast = 0;
|
||||
}
|
||||
|
||||
+ // cropping
|
||||
+ if ( maBlipProps.moClipRect.has() )
|
||||
+ {
|
||||
+ geometry::IntegerRectangle2D oClipRect( maBlipProps.moClipRect.get() );
|
||||
+ awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) );
|
||||
+ if ( aOriginalSize.Width && aOriginalSize.Height )
|
||||
+ {
|
||||
+ text::GraphicCrop aGraphCrop( 0, 0, 0, 0 );
|
||||
+ if ( oClipRect.X1 )
|
||||
+ aGraphCrop.Left = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X1 ) / 100000 );
|
||||
+ if ( oClipRect.Y1 )
|
||||
+ aGraphCrop.Top = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y1 ) / 100000 );
|
||||
+ if ( oClipRect.X2 )
|
||||
+ aGraphCrop.Right = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X2 ) / 100000 );
|
||||
+ if ( oClipRect.Y2 )
|
||||
+ aGraphCrop.Bottom = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y2 ) / 100000 );
|
||||
+ rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop);
|
||||
+ }
|
||||
+
|
||||
+ if(mbIsCustomShape)
|
||||
+ {
|
||||
+ geometry::IntegerRectangle2D aCropRect = oClipRect;
|
||||
+ lclCalculateCropPercentage(xGraphic, aCropRect);
|
||||
+ xGraphic = lclCropGraphic(xGraphic, aCropRect);
|
||||
+
|
||||
+ rPropMap.setProperty(PROP_FillBitmap, xGraphic);
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
if(mbIsCustomShape)
|
||||
{
|
||||
// it is a cropped graphic.
|
||||
@@ -837,25 +898,6 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
|
||||
else
|
||||
rPropMap.setProperty(PROP_Graphic, xGraphic);
|
||||
|
||||
- // cropping
|
||||
- if ( maBlipProps.moClipRect.has() )
|
||||
- {
|
||||
- geometry::IntegerRectangle2D oClipRect( maBlipProps.moClipRect.get() );
|
||||
- awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) );
|
||||
- if ( aOriginalSize.Width && aOriginalSize.Height )
|
||||
- {
|
||||
- text::GraphicCrop aGraphCrop( 0, 0, 0, 0 );
|
||||
- if ( oClipRect.X1 )
|
||||
- aGraphCrop.Left = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X1 ) / 100000 );
|
||||
- if ( oClipRect.Y1 )
|
||||
- aGraphCrop.Top = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y1 ) / 100000 );
|
||||
- if ( oClipRect.X2 )
|
||||
- aGraphCrop.Right = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X2 ) / 100000 );
|
||||
- if ( oClipRect.Y2 )
|
||||
- aGraphCrop.Bottom = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y2 ) / 100000 );
|
||||
- rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop);
|
||||
- }
|
||||
- }
|
||||
|
||||
if ( maBlipProps.moAlphaModFix.has() )
|
||||
{
|
||||
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
|
||||
index 21394acc80da..94b67cb379f2 100644
|
||||
--- a/oox/source/export/drawingml.cxx
|
||||
+++ b/oox/source/export/drawingml.cxx
|
||||
@@ -1598,27 +1598,40 @@ void DrawingML::WritePattFill(const Reference<XPropertySet>& rXPropSet, const cs
|
||||
mpFS->endElementNS( XML_a , XML_pattFill );
|
||||
}
|
||||
|
||||
-void DrawingML::WriteGraphicCropProperties(uno::Reference<beans::XPropertySet> const & rXPropSet, Size const & rOriginalSize, MapMode const & rMapMode)
|
||||
+void DrawingML::WriteGraphicCropProperties(uno::Reference<beans::XPropertySet> const & rXPropSet,
|
||||
+ Size const & rOriginalSize,
|
||||
+ MapMode const & rMapMode)
|
||||
{
|
||||
if (!GetProperty(rXPropSet, "GraphicCrop"))
|
||||
return;
|
||||
|
||||
- Size aOriginalSize(rOriginalSize);
|
||||
-
|
||||
- // GraphicCrop is in mm100, so in case the original size is in pixels, convert it over.
|
||||
- if (rMapMode.GetMapUnit() == MapUnit::MapPixel)
|
||||
- aOriginalSize = Application::GetDefaultDevice()->PixelToLogic(aOriginalSize, MapMode(MapUnit::Map100thMM));
|
||||
-
|
||||
css::text::GraphicCrop aGraphicCropStruct;
|
||||
mAny >>= aGraphicCropStruct;
|
||||
|
||||
- if ( (0 != aGraphicCropStruct.Left) || (0 != aGraphicCropStruct.Top) || (0 != aGraphicCropStruct.Right) || (0 != aGraphicCropStruct.Bottom) )
|
||||
+ if(GetProperty(rXPropSet, "CustomShapeGeometry"))
|
||||
+ {
|
||||
+ // tdf#134210 GraphicCrop property is handled in import filter because of LibreOffice has not core
|
||||
+ // feature. We croped the bitmap physically and MSO shouldn't crop bitmap one more time. When we
|
||||
+ // have core feature for graphic cropping in custom shapes, we should uncomment the code anymore.
|
||||
+
|
||||
+ mpFS->singleElementNS( XML_a, XML_srcRect);
|
||||
+ }
|
||||
+ else
|
||||
{
|
||||
- mpFS->singleElementNS( XML_a, XML_srcRect,
|
||||
- XML_l, OString::number(rtl::math::round(aGraphicCropStruct.Left * 100000.0 / aOriginalSize.Width())),
|
||||
- XML_t, OString::number(rtl::math::round(aGraphicCropStruct.Top * 100000.0 / aOriginalSize.Height())),
|
||||
- XML_r, OString::number(rtl::math::round(aGraphicCropStruct.Right * 100000.0 / aOriginalSize.Width())),
|
||||
- XML_b, OString::number(rtl::math::round(aGraphicCropStruct.Bottom * 100000.0 / aOriginalSize.Height())) );
|
||||
+ Size aOriginalSize(rOriginalSize);
|
||||
+
|
||||
+ // GraphicCrop is in mm100, so in case the original size is in pixels, convert it over.
|
||||
+ if (rMapMode.GetMapUnit() == MapUnit::MapPixel)
|
||||
+ aOriginalSize = Application::GetDefaultDevice()->PixelToLogic(aOriginalSize, MapMode(MapUnit::Map100thMM));
|
||||
+
|
||||
+ if ( (0 != aGraphicCropStruct.Left) || (0 != aGraphicCropStruct.Top) || (0 != aGraphicCropStruct.Right) || (0 != aGraphicCropStruct.Bottom) )
|
||||
+ {
|
||||
+ mpFS->singleElementNS( XML_a, XML_srcRect,
|
||||
+ XML_l, OString::number(rtl::math::round(aGraphicCropStruct.Left * 100000.0 / aOriginalSize.Width())),
|
||||
+ XML_t, OString::number(rtl::math::round(aGraphicCropStruct.Top * 100000.0 / aOriginalSize.Height())),
|
||||
+ XML_r, OString::number(rtl::math::round(aGraphicCropStruct.Right * 100000.0 / aOriginalSize.Width())),
|
||||
+ XML_b, OString::number(rtl::math::round(aGraphicCropStruct.Bottom * 100000.0 / aOriginalSize.Height())) );
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx
|
||||
index 0e938e05e9c7..a1e752834f1a 100644
|
||||
--- a/sd/qa/unit/export-tests-ooxml1.cxx
|
||||
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
|
||||
@@ -1145,17 +1145,36 @@ void SdOOXMLExportTest1::testCustomshapeBitmapfillSrcrect()
|
||||
xDocShRef->DoClose();
|
||||
|
||||
xmlDocUniquePtr pXmlDoc = parseExport(tempFile, "ppt/slides/slide1.xml");
|
||||
- const OString sXmlPath = "//a:blipFill/a:srcRect";
|
||||
+
|
||||
+ // tdf#132680
|
||||
+ // We are preventing the side effect of DOCX improvement to PPTX case.
|
||||
// Without the accompanying fix in place, this test would have failed with:
|
||||
// - Expected: 1
|
||||
// - Actual : 0
|
||||
// - XPath '//a:blipFill/a:srcRect' number of nodes is incorrect
|
||||
// i.e. <a:srcRect> was exported as <a:fillRect> in <a:stretch>, which made part of the image
|
||||
// invisible.
|
||||
- double fLeftPercent = std::round(getXPath(pXmlDoc, sXmlPath, "l").toDouble() / 1000);
|
||||
- CPPUNIT_ASSERT_EQUAL(4.0, fLeftPercent);
|
||||
- double fRightPercent = std::round(getXPath(pXmlDoc, sXmlPath, "r").toDouble() / 1000);
|
||||
- CPPUNIT_ASSERT_EQUAL(4.0, fRightPercent);
|
||||
+
|
||||
+ // tdf#134210
|
||||
+ // Original values of attribute of l and r in xml files: <a:srcRect l="4393" r="4393"/>
|
||||
+ // Because of we have not core feature for cropping bitmap in custom shapes, we added cropping
|
||||
+ // support to import filter. We modified the bitmap during import. As result the original
|
||||
+ // image is cropped anymore (if we had the core feature for that, the original image would
|
||||
+ // remain same, just we would see like cropped in the shape) To see the image in correct
|
||||
+ // position in Microsoft Office too, we have to remove left right top bottom percentages
|
||||
+ // anymore. In the future if we add core feature to LibreOffice, this test will failed with
|
||||
+ // When we add the core feature, we should change the control value with 4393 as following.
|
||||
+
|
||||
+ //const OString sXmlPath = "//a:blipFill/a:srcRect";
|
||||
+ //sal_Int32 nLeftPercent = getXPath(pXmlDoc, sXmlPath, "l").toInt32();
|
||||
+ //CPPUNIT_ASSERT_EQUAL(sal_Int32(4393), nLeftPercent);
|
||||
+ //sal_Int32 nRightPercent = getXPath(pXmlDoc, sXmlPath, "r").toInt32();
|
||||
+ //CPPUNIT_ASSERT_EQUAL(sal_Int32(4393), nRightPercent);
|
||||
+
|
||||
+ assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "l");
|
||||
+ assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "r");
|
||||
+ assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "t");
|
||||
+ assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "b");
|
||||
}
|
||||
|
||||
void SdOOXMLExportTest1::testTdf100348FontworkBitmapFill()
|
||||
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
|
||||
index eff937566383..9aefdd4ecc7b 100644
|
||||
--- a/sd/qa/unit/import-tests.cxx
|
||||
+++ b/sd/qa/unit/import-tests.cxx
|
||||
@@ -217,6 +217,7 @@ class SdImportTest : public SdModelTestBase
|
||||
void testShapeGlowEffectPPTXImpoer();
|
||||
void testShapeBlurPPTXImport();
|
||||
void testMirroredGraphic();
|
||||
+ void testCropPositionGraphic();
|
||||
|
||||
bool checkPattern(sd::DrawDocShellRef const & rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected);
|
||||
void testPatternImport();
|
||||
@@ -346,6 +347,7 @@ class SdImportTest : public SdModelTestBase
|
||||
CPPUNIT_TEST(testShapeGlowEffectPPTXImpoer);
|
||||
CPPUNIT_TEST(testShapeBlurPPTXImport);
|
||||
CPPUNIT_TEST(testMirroredGraphic);
|
||||
+ CPPUNIT_TEST(testCropPositionGraphic);
|
||||
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
};
|
||||
@@ -3324,6 +3326,20 @@ void SdImportTest::testMirroredGraphic()
|
||||
xDocShRef->DoClose();
|
||||
}
|
||||
|
||||
+void SdImportTest::testCropPositionGraphic()
|
||||
+{
|
||||
+ sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/crop-position.pptx"), PPTX);
|
||||
+ uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0, xDocShRef), uno::UNO_SET_THROW);
|
||||
+ CPPUNIT_ASSERT(xShape.is());
|
||||
+ uno::Reference<graphic::XGraphic> xGraphic;
|
||||
+ xShape->getPropertyValue("FillBitmap") >>= xGraphic;
|
||||
+ CPPUNIT_ASSERT(xGraphic.is());
|
||||
+ Graphic aGraphic(xGraphic);
|
||||
+ BitmapEx aBitmap(aGraphic.GetBitmapEx());
|
||||
+ CPPUNIT_ASSERT_EQUAL( Color(8682893), aBitmap.GetPixelColor( 0, 0 ));
|
||||
+ xDocShRef->DoClose();
|
||||
+}
|
||||
+
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
149
bsc1181644.diff
149
bsc1181644.diff
@ -1,149 +0,0 @@
|
||||
From 54ad2128db5d324f530cb15ee56e6512d9093872 Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Vajna <vmiklos@collabora.com>
|
||||
Date: Thu, 25 Feb 2021 18:04:19 +0100
|
||||
Subject: [PATCH] tdf#132368 svx: empty the interop grab-bag on ending text
|
||||
edit
|
||||
|
||||
Regression from commit aafaf1f55fa413ad49d4556cf7c0a713dd206ae4 (PPTX
|
||||
export: save SmartArt as diagram instead of group of shapes,
|
||||
2019-03-13), the idea of interop grab-bag was to carry additional
|
||||
information around as long as the object is not changed.
|
||||
|
||||
However, actual clearing of the grab-bag was never implemented, do this
|
||||
when editing shape text.
|
||||
|
||||
An alternative would be to do this in SdrObject::SetChanged(), but
|
||||
Writer sets the layer of SdrObjects during layout (when the import
|
||||
filter is already finished and undo is enabled), so that would mean loss
|
||||
of the smartart metadata for DOCX.
|
||||
|
||||
Change-Id: I9ab205b4ef84169f4b5a16b86fe9a152e3370a6c
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111560
|
||||
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
||||
Tested-by: Jenkins
|
||||
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
||||
---
|
||||
svx/CppunitTest_svx_unit.mk | 1 +
|
||||
svx/qa/unit/svdraw.cxx | 55 ++++++++++++++++++++++++++++++++++++
|
||||
svx/source/svdraw/svdobj.cxx | 20 +++++++++++++
|
||||
3 files changed, 76 insertions(+)
|
||||
|
||||
diff --git a/svx/CppunitTest_svx_unit.mk b/svx/CppunitTest_svx_unit.mk
|
||||
index ac9f3e4531ad..892490265261 100644
|
||||
--- a/svx/CppunitTest_svx_unit.mk
|
||||
+++ b/svx/CppunitTest_svx_unit.mk
|
||||
@@ -36,6 +36,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,svx_unit, \
|
||||
$(eval $(call gb_CppunitTest_use_libraries,svx_unit, \
|
||||
basegfx \
|
||||
drawinglayer \
|
||||
+ editeng \
|
||||
sal \
|
||||
sfx \
|
||||
svxcore \
|
||||
diff --git a/svx/qa/unit/svdraw.cxx b/svx/qa/unit/svdraw.cxx
|
||||
index c96ccbb7aa97..783420d56fea 100644
|
||||
--- a/svx/qa/unit/svdraw.cxx
|
||||
+++ b/svx/qa/unit/svdraw.cxx
|
||||
@@ -25,6 +25,12 @@
|
||||
#include <svx/svdpage.hxx>
|
||||
#include <svx/unopage.hxx>
|
||||
#include <vcl/virdev.hxx>
|
||||
+#include <comphelper/propertyvalue.hxx>
|
||||
+#include <sfx2/viewsh.hxx>
|
||||
+#include <svx/svdview.hxx>
|
||||
+#include <svx/unoapi.hxx>
|
||||
+#include <sal/log.hxx>
|
||||
+
|
||||
#include <sdr/contact/objectcontactofobjlistpainter.hxx>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
@@ -105,6 +111,55 @@ CPPUNIT_TEST_FIXTURE(SvdrawTest, testSemiTransparentText)
|
||||
CPPUNIT_ASSERT_EQUAL(nTransparence,
|
||||
static_cast<sal_Int16>(basegfx::fround(fTransparence * 100)));
|
||||
}
|
||||
+
|
||||
+CPPUNIT_TEST_FIXTURE(SvdrawTest, testTextEditEmptyGrabBag)
|
||||
+{
|
||||
+ // Given a document with a groupshape, which has 2 children.
|
||||
+ getComponent() = loadFromDesktop("private:factory/sdraw");
|
||||
+ uno::Reference<lang::XMultiServiceFactory> xFactory(getComponent(), uno::UNO_QUERY);
|
||||
+ uno::Reference<drawing::XShape> xRect1(
|
||||
+ xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY);
|
||||
+ xRect1->setPosition(awt::Point(1000, 1000));
|
||||
+ xRect1->setSize(awt::Size(10000, 10000));
|
||||
+ uno::Reference<drawing::XShape> xRect2(
|
||||
+ xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY);
|
||||
+ xRect2->setPosition(awt::Point(1000, 1000));
|
||||
+ xRect2->setSize(awt::Size(10000, 10000));
|
||||
+ uno::Reference<drawing::XShapes> xGroup(
|
||||
+ xFactory->createInstance("com.sun.star.drawing.GroupShape"), uno::UNO_QUERY);
|
||||
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY);
|
||||
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0),
|
||||
+ uno::UNO_QUERY);
|
||||
+ uno::Reference<drawing::XShape> xGroupShape(xGroup, uno::UNO_QUERY);
|
||||
+ xDrawPage->add(xGroupShape);
|
||||
+ xGroup->add(xRect1);
|
||||
+ xGroup->add(xRect2);
|
||||
+ uno::Reference<text::XTextRange> xRect2Text(xRect2, uno::UNO_QUERY);
|
||||
+ xRect2Text->setString("x");
|
||||
+ uno::Sequence<beans::PropertyValue> aGrabBag = {
|
||||
+ comphelper::makePropertyValue("OOXLayout", true),
|
||||
+ };
|
||||
+ uno::Reference<beans::XPropertySet> xGroupProps(xGroup, uno::UNO_QUERY);
|
||||
+ xGroupProps->setPropertyValue("InteropGrabBag", uno::makeAny(aGrabBag));
|
||||
+
|
||||
+ // When editing the shape text of the 2nd rectangle (insert a char at the start).
|
||||
+ SfxViewShell* pViewShell = SfxViewShell::Current();
|
||||
+ SdrView* pSdrView = pViewShell->GetDrawView();
|
||||
+ SdrObject* pObject = GetSdrObjectFromXShape(xRect2);
|
||||
+ pSdrView->SdrBeginTextEdit(pObject);
|
||||
+ EditView& rEditView = pSdrView->GetTextEditOutlinerView()->GetEditView();
|
||||
+ rEditView.InsertText("y");
|
||||
+ pSdrView->SdrEndTextEdit();
|
||||
+
|
||||
+ // Then make sure that grab-bag is empty to avoid loosing the new text.
|
||||
+ xGroupProps->getPropertyValue("InteropGrabBag") >>= aGrabBag;
|
||||
+ // Without the accompanying fix in place, this test would have failed with:
|
||||
+ // assertion failed
|
||||
+ // - Expression: !aGrabBag.hasElements()
|
||||
+ // i.e. the grab-bag was still around after modifying the shape, and that grab-bag contained the
|
||||
+ // old text.
|
||||
+ CPPUNIT_ASSERT(!aGrabBag.hasElements());
|
||||
+}
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
|
||||
index 638c590a52cd..5480ac1d86ce 100644
|
||||
--- a/svx/source/svdraw/svdobj.cxx
|
||||
+++ b/svx/source/svdraw/svdobj.cxx
|
||||
@@ -1740,6 +1740,26 @@ void SdrObject::SetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> pTextO
|
||||
if (GetCurrentBoundRect()!=aBoundRect0) {
|
||||
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
|
||||
}
|
||||
+
|
||||
+ if (getSdrModelFromSdrObject().IsUndoEnabled())
|
||||
+ {
|
||||
+ // Don't do this during import.
|
||||
+ SdrObject* pTopGroupObj = nullptr;
|
||||
+ if (getParentSdrObjectFromSdrObject())
|
||||
+ {
|
||||
+ pTopGroupObj = getParentSdrObjectFromSdrObject();
|
||||
+ while (pTopGroupObj->getParentSdrObjectFromSdrObject())
|
||||
+ {
|
||||
+ pTopGroupObj = pTopGroupObj->getParentSdrObjectFromSdrObject();
|
||||
+ }
|
||||
+ }
|
||||
+ if (pTopGroupObj)
|
||||
+ {
|
||||
+ // A shape was modified, which is in a group shape. Empty the group shape's grab-bag,
|
||||
+ // which potentially contains the old text of the shapes in case of diagrams.
|
||||
+ pTopGroupObj->SetGrabBagItem(uno::makeAny(uno::Sequence<beans::PropertyValue>()));
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
void SdrObject::NbcSetOutlinerParaObject(std::unique_ptr<OutlinerParaObject> /*pTextObject*/)
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6e570c59eec2f61eaccf93623c8dde153ff7c0a44bf68bf4496b0f52112e0ef
|
||||
size 243478248
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmA3mwAACgkQ9DSh76/u
|
||||
rqO5YBAAzlTwFHXI74/NibyoEv43DR2Lcsdc5hNxtEN81/sdRmjS4Na+DnECtapD
|
||||
b3W8ZOoHRdVWoXsgSXn7dT+ikZ9UDTTqYXRZoUsVTOSMqTI0/9yHwNmNPLACNOcN
|
||||
1smsTVIVOyQ2w6ezYRA8YMAqY5YuwGAHCcx1ZEbwNL4Lkr8p5OeeD09L7HgC1Fjw
|
||||
3FcsPPn/07ESOCaKqFPQM8D2+R4lio7gOLHKgyN8V5Dn3dP/+WlKk9fDeXjZXLPB
|
||||
/bIiBgfa4Z/ig77KS3KyAhbqPwu3CA28hbktQovgVUgRyK4v8/5UdWcI4js+WxGO
|
||||
0JBrLZ7ajDSNdpu8Aa8Tj+G2Osmvxct02ueYOSHXRiLzE2Ey37XF4/kN5tlh9YO2
|
||||
W53y35osciA7W07XCFP+sCjs5nGUDbTuTi3yGHHn94VH9h1MmYW+j5qnjzVm4vlS
|
||||
U95J0XFFU3EmBc3RizOA8R4H38kZqTVYMIRSHnNTS40YAakfo45HGxvIn3r7Rmxv
|
||||
AanujetGmzhzrfgja4G4PEcQkcIPSs14pgiCvH0FSwNRCZdZxyqTqlvgvXSd8AK6
|
||||
5AtMmDGTA0z5qBPjOBne1iRwEA4PTFrXAQf1wtn6Yl+VR3i1wGVq49JdWkQiUHJW
|
||||
uh3s+tgg6DkSKB88gwt9gAp6ZR+2nc0y3PH93ksRPlyCU2jfDsI=
|
||||
=4LjS
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-7.1.2.2.tar.xz
Normal file
3
libreoffice-7.1.2.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6ba58991f626dc42c75ca2c28f91915ffabae18ba5a5fba5344ed7004eba29f8
|
||||
size 243806936
|
16
libreoffice-7.1.2.2.tar.xz.asc
Normal file
16
libreoffice-7.1.2.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmBbbf4ACgkQ9DSh76/u
|
||||
rqOjMw/+OMIJPkPgTvvSlUIiRGeUV7I08mB3jN1yH11wkJ39FFJ7jWDSWtVzXegq
|
||||
v8E5ZmvCTSa//erR5vX5LK/5tjSJkxX9O44MThBcY0mzafi0H3PQk1WRteXCf2K9
|
||||
Q1CNzGoi7Wyj6iRV34uvwYs9PapcHLj21BuiVOIJ3s8m7CaRizMmppQuFb4/BUsQ
|
||||
eMryFc/c5j7MOk00Uwrxq8W4AlN4typmarCAwIx5KRzOpsWcwxOFbDaHXUWfNje/
|
||||
jTdbWUdbdMmxBUjkCbNI9P5W0JoI47LATUa9PKN8eHWK+AXda6oiFxwawpmb5295
|
||||
cpFF3V9wkag3VOidq/YjEvfRzBGmlYGuV2A6ziAfAGpQwDFy0i3Bzwkm5U0zAQtC
|
||||
GXsFhhDoMlJSHB4uG0iyKswvGeuPdz3RseRwoZk1I+2aQr89oTcHhCw4XMeSHyji
|
||||
s3B5V1Yu9W2OcKQL16RnMb3hb1WXAQV9PQETKfljT7AVZ9ayVxNbLjmwnefkADwd
|
||||
ZpnRA3r4LdAKXL53fqlTm5EH2ot6H60NB1mWt/pwlbeMGaD4OE8eG7fAcfxExFCU
|
||||
ul/27bShl0PnUab/SfVpuaj5KHocCb7Dh5u+x5cO4f9K+jU+7RoftXxz84DpVtrD
|
||||
8rwuzPRwTl3YuZD30Hj1/iOmBE5PlkTi4lvjzo9Xh/P0MxIbRZI=
|
||||
=D3Ax
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4774ec743f5463b65ba34e2e542b594d81de090a1be326490a52d3bb37059693
|
||||
size 111786544
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmA3mwYACgkQ9DSh76/u
|
||||
rqOcEg/8DpmO1JOAlMwf4Oeqgl/8FSTU0pxakBeOUgNlpn/EqMZhVqW593pxjpYZ
|
||||
0+iBLZ7Kj5kmM/9mNUcqOAzgjUADL3LRII04XviW6Q3vhe1ckaKaGMQzN7oJHVz+
|
||||
Ee9QKO8KJ1DwkiAUi139FfmaxzAi1j/ZdKhkuuB9kcCSUK0yRkTM84+ETEr9ESSg
|
||||
zeSgg2cyNSBQ/3YBhl7gUrNJevqs1BMpnG6TqDj4+hultYgEbc4HX2H1kc8pYnrk
|
||||
UOnMVOGZk3ZEHyCRUPVkRhovwnEN4NTn6uZ4MDqEK9e8OnWZA0B/Z6wyZbAPtN1e
|
||||
ALfvP8JF5Ve4Ou7ZSz9+HzzGzziLuDtUw7RbHujWK/6EMMYtx4wFYmRmNupUBijd
|
||||
Xzy3YYHmuO+hEhKuRZRK8zHTk0EILIAr92FeZgHImaShIEmWEAt2rfabF1a97DEU
|
||||
Wx3u0ajPJ2isBG1ivspV2RxD+fZ5VhtupRSBSXEbb2+yz3iAn6/IRNt7yc4r1h/s
|
||||
vapvmM99ANwmkr+L/Iq1nqtfwmOGVXOlwY0hjG1gIMYu9EdUf8LHK6NoCks3pm+s
|
||||
kmIof+VLza2rygQsIyuMLNKmtnScqhr14oD85r1N6PFvC1q55/N+JVejMjTKKbSI
|
||||
35TcrDi8iiPHCF7AC58TGf54E6+ZGEi5iA17HtM95F5cuXSAKVQ=
|
||||
=QcRA
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-help-7.1.2.2.tar.xz
Normal file
3
libreoffice-help-7.1.2.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6e5b980d453793308b49e9ab9100738394f5c9dfaed5a94eacd95f087f9d59af
|
||||
size 111784492
|
16
libreoffice-help-7.1.2.2.tar.xz.asc
Normal file
16
libreoffice-help-7.1.2.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmBbbgQACgkQ9DSh76/u
|
||||
rqMXlg/+Irv/C0ybdtJqYYlp2JaOTFQ6x5cFjV4pym30VhPWJgblyibKBI4dWuvh
|
||||
GB827C+ZNaMwYNdBgVj08oyRAe4PiL1VagfybiwI1hR4KMNVzVolG+5RqdacAwqN
|
||||
OiY93qL7pJG5izoWecT1KwmabmQ1llmgyp3shalPLBmyT/VqwlVYyq2khPaAmgFy
|
||||
hWHjKbFdwXOLYGXapd7IQsFjvX6CgSKeSIqzDmGV9a9Z1bMTjUQ3DOHoak05eyfl
|
||||
0JF/q+Kr6xX/EVM+2fu0UZbaFk5/T1ERkH+phLye258R0ioyneIPE51TIubNjUz/
|
||||
dY8v8BwmyZ+seicWdTRyBKTJYDTZegP/FjePD9770g2GjZerClsF646TbJiv+0FD
|
||||
nqo3iQ+ANqSkJznbdrQlxE1UAF8G+ji/WnJqDttP01L2hjvvILWV7m6ZDiBhPB/v
|
||||
fqQpgI/PynT5pf7V4hz5a4Gcj4BNEHsfQIv8V3efSMcX42vwyJ+bWIK8bggVVpWN
|
||||
Wyi6nzAc5B42yQI3zNvNFdqo9kcPjHlqTofnIbUFkfClHTiNuMCgVuhGh8sL+9jM
|
||||
+xJVK3oQ9VkPrkipah1YcNHLc3nLwcZHKbIetD7azTGHU8YEETcpN2D++eZ98ykJ
|
||||
DziTj/7dn/DL9+lvMfvcYeEgQHOBiI/Pisl+uydxr6EsA32QWcQ=
|
||||
=f/cB
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:702bca8e3e3359d065a5e986f5437e1034aa617856ac83ec2769b87300da2dee
|
||||
size 184669284
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmA3mwcACgkQ9DSh76/u
|
||||
rqPk7hAApDQBCuJlM4Nt+dsl66the7jhu4e3cWFJqXpeM0GrynOQx0ckWXSZwaN4
|
||||
Z1RViBC+WiaQHSghiJDBGxMJy/0iIl1Eh+o5H4JVgnOBSHF3Hgm23/UVhJ0WdtrT
|
||||
H00xvDUxufoZBkYTNffJ0w6nAfnscTEo03VR5+HLgej7958YF5vNO3SCrR/8dluY
|
||||
efe/d4dm9SCHnkRi6fEA1FA50el6mRIE62gG4PCjw+9xRzhCt1SSw+WKjUi0dCwT
|
||||
SZR1TZXkWh71t5PaVcuG8R/5bzFlIGu8XxLDFh0bmnCqI3mKZ5445if82R0Sj4bb
|
||||
1oDDTYEXC1UWoY5RlBv7h/5mTcOkEz2+Lc7pQ0i4w1LBEKKYm4IAs5wcTz8FzSjJ
|
||||
cSWkWvUjh6qYdnEVl+Kz9/Xg2rrdTGTFKS8MOfJXrPZVii9NGIxX3HPL8+KO6MGM
|
||||
0hXSupQngAMi2a0UNPJee2wk7Yh2DquD6UZookqjTPuWdiAPX264LZQ3uLLfAzQW
|
||||
uBzsTtcr996dP68VpbMugtFAtQruk6/sSIaj12wlbMK0zZwvDAEsZOyee24dK+6/
|
||||
zMMzxUutVvtGph2lXYTDJqqXsDY+wnL9jf7npIJW/+d362RLFujVXHdkjhmMVauA
|
||||
TX2fR4OZO5gg+1RT3KjZ8gVIMzstXPoVBDelqXjFjePp1YJqtNY=
|
||||
=e67E
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-translations-7.1.2.2.tar.xz
Normal file
3
libreoffice-translations-7.1.2.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a724be1fb8895ad14d1e1e6558d1bb65037d1f15858bd48228ad0cb66828a2c8
|
||||
size 184782132
|
16
libreoffice-translations-7.1.2.2.tar.xz.asc
Normal file
16
libreoffice-translations-7.1.2.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmBbbgUACgkQ9DSh76/u
|
||||
rqPjiRAAxr6Lay7Q5dQyX2B7uzzMEtooorqsxoq81txdsiCgE2M28ZD30jDaRxRr
|
||||
KE2jB73qtDfNqMTZPCNC8x6xgWVbAdyb9jbpWZoKrfXy5G8I0FGRHLWB/AQL4L06
|
||||
9ExlOyp5OayaXXzosPv9destPlBFlncK1B/BZ5slZtd8EaKUGWQRgWfvL4nUQfcz
|
||||
RJTeO6tuPeQaRVB4YhA+sL23QyS5JJG4K1YetaLd1Cj8BVXj+X58cTI8OIXhKhF8
|
||||
VPC4yLZuSbsCuvbvJBUoVSu7xGtMXBAleCO3UbwpAZqiE8harKx18nj3itmKLAOX
|
||||
hot6BuabIRqCQnowejjPzPs1GUhbQUTEJzTXzMC7PkL9+BCMjOs7yHbk3TMGejO9
|
||||
RuWQ2xUgufSls2hwTLt0ghA5FBrV/1XYBYtseolFHiE3cZGIOnt1mc/CYL1dtdF5
|
||||
79e2VrClyfflRp950fXtRsm4iilDPbT4AY1qdXAJOcpUGMfkysaQ6FbK9cyX+Ha4
|
||||
PFK8NC43rBGSI4w5nU8SSoxQnTbq48DLDG0rYgI5mO5PMdHrXpajKj6b9FUvyYNo
|
||||
nt5K0DkTymE8fioSs+eiuPb6s9/8FboF1qhhsT3rUwynUU907+/1Tf50fkbHwrn/
|
||||
v1za2dNljbHRFYKFMHH07QbCWFD0rYT450OL7a58uHddU9j/9f4=
|
||||
=nvIA
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +1,14 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 25 14:25:20 UTC 2021 - Tomáš Chvátal <tomas.chvatal@gmail.com>
|
||||
|
||||
- Version update to 7.1.2.2:
|
||||
* 7.1.2 final release
|
||||
- Drop merged patches:
|
||||
* bsc1174465.diff
|
||||
* bsc1181644.diff
|
||||
* bsc1176547_1.diff
|
||||
* bsc1176547_2.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 1 11:04:00 UTC 2021 - Markéta Machová <mmachova@suse.com>
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
||||
%bcond_with system_gpgme
|
||||
%endif
|
||||
Name: libreoffice
|
||||
Version: 7.1.1.2
|
||||
Version: 7.1.2.2
|
||||
Release: 0
|
||||
Summary: A Free Office Suite (Framework)
|
||||
License: LGPL-3.0-or-later AND MPL-2.0+
|
||||
@ -101,13 +101,6 @@ Patch2: nlpsolver-no-broken-help.diff
|
||||
Patch3: mediawiki-no-broken-help.diff
|
||||
# PATCH-FIX-UPSTREAM https://github.com/LibreOffice/core/commit/f14b83b38d35a585976ef5d422754d8e0d0266a6 ucp: fix call to getComponentContext
|
||||
Patch4: use-comphelper.patch
|
||||
# Bug 1174465 - LO-L3: Impress in TW (7.0.0.0-beta2) messes up bullet points
|
||||
Patch11: bsc1174465.diff
|
||||
# Bug 1181644 - LO-L3: Text changes are reproducibly lost (PPTX, SmartArt)
|
||||
Patch12: bsc1181644.diff
|
||||
# Bug 1176547 - Image shown with different aspect ratio (and different clipping), some colored instead of grey, one horizontally mirrored
|
||||
Patch13: bsc1176547_1.diff
|
||||
Patch14: bsc1176547_2.diff
|
||||
# try to save space by using hardlinks
|
||||
Patch990: install-with-hardlinks.diff
|
||||
# save time by relying on rpm check rather than doing stupid find+grep
|
||||
@ -967,10 +960,6 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
||||
%patch2
|
||||
%patch3
|
||||
%patch4 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch990 -p1
|
||||
%patch991 -p1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user