[Libreoffice-commits] core.git: Branch 'aoo/trunk' - svx/inc svx/source
Armin Le Grand
alg at apache.org
Mon Sep 2 09:07:43 PDT 2013
svx/inc/svx/svdoedge.hxx | 4 ++++
svx/source/svdraw/svdoedge.cxx | 36 ++++++++++++++++++++++--------------
2 files changed, 26 insertions(+), 14 deletions(-)
New commits:
commit c7d96eed93415894c5ca4522bd32ca06acd88233
Author: Armin Le Grand <alg at apache.org>
Date: Mon Sep 2 14:30:09 2013 +0000
i123048 Corrected connector layout after reload
diff --git a/svx/inc/svx/svdoedge.hxx b/svx/inc/svx/svdoedge.hxx
index 45d1c9f..2b03aaa 100644
--- a/svx/inc/svx/svdoedge.hxx
+++ b/svx/inc/svx/svdoedge.hxx
@@ -186,6 +186,10 @@ protected:
// is running, the flag is set, else it is always sal_False.
unsigned mbBoundRectCalculationRunning : 1;
+ // #123048# need to remember if layouting was suppressed before to get
+ // to a correct state for first real layouting
+ unsigned mbSuppressed : 1;
+
public:
// #109007#
// Interface to default connect suppression
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
index 9756023..67f3573 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -179,7 +179,8 @@ SdrEdgeObj::SdrEdgeObj()
// #109007# Default is to allow default connects
mbSuppressDefaultConnect(sal_False),
// #110649#
- mbBoundRectCalculationRunning(sal_False)
+ mbBoundRectCalculationRunning(sal_False),
+ mbSuppressed(false)
{
bClosedObj=sal_False;
bIsEdge=sal_True;
@@ -552,12 +553,19 @@ void SdrEdgeObj::ImpUndirtyEdgeTrack()
void SdrEdgeObj::ImpRecalcEdgeTrack()
{
- // #120437# if bEdgeTrackUserDefined, do not recalculate. Also not when model locked
- if(bEdgeTrackUserDefined || !GetModel() || GetModel()->isLocked())
+ // #120437# if bEdgeTrackUserDefined, do not recalculate
+ if(bEdgeTrackUserDefined)
{
return;
}
+ // #120437# also not when model locked during import, but remember
+ if(!GetModel() || GetModel()->isLocked())
+ {
+ mbSuppressed = true;
+ return;
+ }
+
// #110649#
if(IsBoundRectCalculationRunning())
{
@@ -566,19 +574,19 @@ 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 calc EdgeTrack and secure properties there
- mbBoundRectCalculationRunning = sal_True;
- *pEdgeTrack=ImpCalcEdgeTrack(*pEdgeTrack,aCon1,aCon2,&aEdgeInfo);
- ImpSetAttrToEdgeInfo();
- bEdgeTrackDirty=sal_False;
- mbBoundRectCalculationRunning = sal_False;
- }
else
{
+ if(mbSuppressed)
+ {
+ // #123048# 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;
More information about the Libreoffice-commits
mailing list