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:
Fridrich Strba 2021-03-25 21:30:18 +00:00 committed by Git OBS Bridge
parent 4c0d2b49a4
commit b128299196
18 changed files with 69 additions and 772 deletions

View File

@ -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

View File

@ -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();

View File

@ -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();

View File

@ -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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d6e570c59eec2f61eaccf93623c8dde153ff7c0a44bf68bf4496b0f52112e0ef
size 243478248

View File

@ -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-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ba58991f626dc42c75ca2c28f91915ffabae18ba5a5fba5344ed7004eba29f8
size 243806936

View 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-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4774ec743f5463b65ba34e2e542b594d81de090a1be326490a52d3bb37059693
size 111786544

View File

@ -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-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6e5b980d453793308b49e9ab9100738394f5c9dfaed5a94eacd95f087f9d59af
size 111784492

View 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-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:702bca8e3e3359d065a5e986f5437e1034aa617856ac83ec2769b87300da2dee
size 184669284

View File

@ -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-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a724be1fb8895ad14d1e1e6558d1bb65037d1f15858bd48228ad0cb66828a2c8
size 184782132

View 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-----

View File

@ -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>

View File

@ -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