Accepting request 867622 from LibreOffice:7.0
- Fix bsc#1177955 - LO-L3: SmartArt: text wrongly aligned, background boxes not quite right,... * bsc1177955.diff OBS-URL: https://build.opensuse.org/request/show/867622 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=939
This commit is contained in:
parent
81cbc8cd96
commit
52dc6782a0
136
bsc1177955.diff
Normal file
136
bsc1177955.diff
Normal file
@ -0,0 +1,136 @@
|
||||
From e80fb99133a8edf4c0b03319c7296889b0e52d54 Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Vajna <vmiklos@collabora.com>
|
||||
Date: Wed, 20 Jan 2021 11:15:34 +0100
|
||||
Subject: [PATCH] bsc1177955.diff
|
||||
|
||||
This is a combination of 2 commits.
|
||||
This is the 1st commit message:
|
||||
|
||||
loplugin:flatten
|
||||
|
||||
(cherry picked from commit 2d582244680e7f6dec6e4a466e276f93ccb01dc9)
|
||||
|
||||
This is the commit message #2:
|
||||
|
||||
oox smartart: composite algo: handle right constraint when left+width is given
|
||||
|
||||
The bugdoc had this constraint:
|
||||
|
||||
<dgm:constr type="l" for="ch" forName="text" refType="r" refFor="ch" refForName="img"/>
|
||||
|
||||
While img has no "r", it has:
|
||||
|
||||
<dgm:constr type="w" for="ch" forName="img" refType="w" refFor="ch" refForName="box" fact="0.2"/>
|
||||
<dgm:constr type="l" for="ch" forName="img" refType="h" refFor="ch" refForName="box" fact="0.1"/>
|
||||
|
||||
Which is enough to fix the x position of the text to not overlap with
|
||||
img.
|
||||
|
||||
(cherry picked from commit 1359e8c566970fcef860f7ba7f54a07d8e6e0513)
|
||||
|
||||
Change-Id: I80db290bd1695884ffb7b1eabaffa09462e8883d
|
||||
---
|
||||
.../drawingml/diagram/diagramlayoutatoms.cxx | 78 ++++++++++++++-----
|
||||
1 file changed, 60 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
index 24acaf176491..3492ccefaa1a 100644
|
||||
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
@@ -452,6 +452,37 @@ sal_Int32 AlgAtom::getVerticalShapesCount(const ShapePtr& rShape)
|
||||
|
||||
namespace
|
||||
{
|
||||
+/**
|
||||
+ * Decides if a certain reference type (e.g. "right") can be inferred from the available properties
|
||||
+ * in rMap (e.g. left and width). Returns true if rValue is written to.
|
||||
+ */
|
||||
+bool InferFromLayoutProperty(const LayoutProperty& rMap, sal_Int32 nRefType, sal_Int32& rValue)
|
||||
+{
|
||||
+ switch (nRefType)
|
||||
+ {
|
||||
+ case XML_r:
|
||||
+ {
|
||||
+ auto it = rMap.find(XML_l);
|
||||
+ if (it == rMap.end())
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ sal_Int32 nLeft = it->second;
|
||||
+ it = rMap.find(XML_w);
|
||||
+ if (it == rMap.end())
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ rValue = nLeft + it->second;
|
||||
+ return true;
|
||||
+ }
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Apply rConstraint to the rProperties shared layout state.
|
||||
*
|
||||
@@ -468,26 +499,37 @@ void ApplyConstraintToLayout(const Constraint& rConstraint, LayoutPropertyMap& r
|
||||
}
|
||||
|
||||
const LayoutPropertyMap::const_iterator aRef = rProperties.find(rConstraint.msRefForName);
|
||||
- if (aRef != rProperties.end())
|
||||
+ if (aRef == rProperties.end())
|
||||
+ return;
|
||||
+
|
||||
+ const LayoutProperty::const_iterator aRefType = aRef->second.find(rConstraint.mnRefType);
|
||||
+ sal_Int32 nInferredValue = 0;
|
||||
+ if (aRefType != aRef->second.end())
|
||||
+ {
|
||||
+ // Reference is found directly.
|
||||
+ rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
+ = aRefType->second * rConstraint.mfFactor;
|
||||
+ }
|
||||
+ else if (InferFromLayoutProperty(aRef->second, rConstraint.mnRefType, nInferredValue))
|
||||
+ {
|
||||
+ // Reference can be inferred.
|
||||
+ rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
+ = nInferredValue * rConstraint.mfFactor;
|
||||
+ }
|
||||
+ else
|
||||
{
|
||||
- const LayoutProperty::const_iterator aRefType = aRef->second.find(rConstraint.mnRefType);
|
||||
- if (aRefType != aRef->second.end())
|
||||
- rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
- = aRefType->second * rConstraint.mfFactor;
|
||||
+ // Reference not found, assume a fixed value.
|
||||
+ // Values are never in EMU, while oox::drawingml::Shape position and size are always in
|
||||
+ // EMU.
|
||||
+ double fUnitFactor = 0;
|
||||
+ if (isFontUnit(rConstraint.mnRefType))
|
||||
+ // Points -> EMU.
|
||||
+ fUnitFactor = EMU_PER_PT;
|
||||
else
|
||||
- {
|
||||
- // Values are never in EMU, while oox::drawingml::Shape position and size are always in
|
||||
- // EMU.
|
||||
- double fUnitFactor = 0;
|
||||
- if (isFontUnit(rConstraint.mnRefType))
|
||||
- // Points -> EMU.
|
||||
- fUnitFactor = EMU_PER_PT;
|
||||
- else
|
||||
- // Millimeters -> EMU.
|
||||
- fUnitFactor = EMU_PER_HMM * 100;
|
||||
- rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
- = rConstraint.mfValue * fUnitFactor;
|
||||
- }
|
||||
+ // Millimeters -> EMU.
|
||||
+ fUnitFactor = EMU_PER_HMM * 100;
|
||||
+ rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
+ = rConstraint.mfValue * fUnitFactor;
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 28 21:17:13 UTC 2021 - Andras Timar <andras.timar@collabora.com>
|
||||
|
||||
- Fix bsc#1177955 - LO-L3: SmartArt: text wrongly aligned, background boxes not quite right,...
|
||||
* bsc1177955.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 23 22:55:19 UTC 2021 - Andras Timar <andras.timar@collabora.com>
|
||||
|
||||
|
@ -107,6 +107,8 @@ Patch6: bsc1178943.diff
|
||||
Patch8: bsc1178807.diff
|
||||
# Bug 1179025 - LO-L3: LibreOffice crashes opening a PPTX
|
||||
Patch9: bsc1179025.diff
|
||||
# Bug 1177955 - LO-L3: SmartArt: text wrongly aligned, background boxes not quite right,...
|
||||
Patch10: bsc1177955.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
|
||||
@ -969,6 +971,7 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
||||
%patch6 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch990 -p1
|
||||
%patch991 -p1
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user