summaryrefslogtreecommitdiff
path: root/svx/source
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2013-09-02 14:30:09 +0000
committerAndras Timar <andras.timar@collabora.com>2013-11-30 11:29:55 +0100
commitaf75342373348f8a28ba57cfbd56fbe3a29ca365 (patch)
treedde7576bd8a6965ae1cd3735a219ab5ac7c48bcc /svx/source
parente4056b6b8194d89f617286a52652dd12584eeebc (diff)
Related: #i123048# Corrected connector layout after reload
(cherry picked from commit c7d96eed93415894c5ca4522bd32ca06acd88233) Signed-off-by: Andras Timar <andras.timar@collabora.com> Conflicts: svx/inc/svx/svdoedge.hxx svx/source/svdraw/svdoedge.cxx Change-Id: Id388fa7396751a2e8b5908373ca57eceee1a1af1 Signed-off-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'svx/source')
-rw-r--r--svx/source/svdraw/svdoedge.cxx39
1 files changed, 24 insertions, 15 deletions
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
index d30350b89bdc..98c57f9516ca 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -171,7 +171,8 @@ SdrEdgeObj::SdrEdgeObj()
bEdgeTrackUserDefined(sal_False),
// Default is to allow default connects
mbSuppressDefaultConnect(sal_False),
- mbBoundRectCalculationRunning(sal_False)
+ mbBoundRectCalculationRunning(sal_False),
+ mbSuppressed(false)
{
bClosedObj=sal_False;
bIsEdge=sal_True;
@@ -543,12 +544,20 @@ void SdrEdgeObj::ImpUndirtyEdgeTrack()
void SdrEdgeObj::ImpRecalcEdgeTrack()
{
- // #i120437# if bEdgeTrackUserDefined, do not recalculate. Also not when model locked
- if(bEdgeTrackUserDefined || !GetModel() || GetModel()->isLocked())
+ // #i120437# if bEdgeTrackUserDefined, do not recalculate
+ if(bEdgeTrackUserDefined)
{
return;
}
+ // #i120437# also not when model locked during import, but remember
+ if(!GetModel() || GetModel()->isLocked())
+ {
+ mbSuppressed = true;
+ return;
+ }
+
+ // #i110649#
if(IsBoundRectCalculationRunning())
{
// This object is involved into another ImpRecalcEdgeTrack() call
@@ -556,20 +565,20 @@ void SdrEdgeObj::ImpRecalcEdgeTrack()
// Also, do not change bEdgeTrackDirty so that it gets recalculated
// later at the first non-looping call.
}
- // #i43068#
- else if(GetModel() && GetModel()->isLocked())
- {
- // avoid re-layout during imports/API call sequences
- // #i45294# but calculate EdgeTrack and secure properties there
- mbBoundRectCalculationRunning = sal_True;
- *pEdgeTrack=ImpCalcEdgeTrack(*pEdgeTrack,aCon1,aCon2,&aEdgeInfo);
- ImpSetAttrToEdgeInfo();
- bEdgeTrackDirty=sal_False;
- mbBoundRectCalculationRunning = sal_False;
- }
else
{
- // To not run in a depth loop, use a coloring algorithm on
+ if(mbSuppressed)
+ {
+ // #i123048# If layouting was ever suppressed, it needs to be done once
+ // and the attr need to be set at EdgeInfo, else these attr *will be lost*
+ // in the following call to ImpSetEdgeInfoToAttr() sice they were never
+ // set before (!)
+ *pEdgeTrack=ImpCalcEdgeTrack(*pEdgeTrack,aCon1,aCon2,&aEdgeInfo);
+ ImpSetAttrToEdgeInfo();
+ mbSuppressed = false;
+ }
+
+ // To not run in a depth loop, use a coloring algorythm on
// SdrEdgeObj BoundRect calculations
mbBoundRectCalculationRunning = sal_True;