From fb19d682260134f14667f9647dd35e14d70316f2 Mon Sep 17 00:00:00 2001 From: Zolnai Tamás Date: Fri, 30 May 2014 13:45:36 +0200 Subject: bnc#870237: wrong text position in grouped list In grouped list text area does not cover the whole shape but just a part of it at the top. To get the same visual effect modify text distance attribute. (cherry picked from commit 53c376d35b7223d53e8c9403390afe53d1f69089) Conflicts: sd/qa/unit/import-tests.cxx Change-Id: I32f30d0afbc1975f940c4562ec65f46596e97060 --- oox/source/drawingml/textbodyproperties.cxx | 6 ++++-- oox/source/drawingml/transform2dcontext.cxx | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'oox') diff --git a/oox/source/drawingml/textbodyproperties.cxx b/oox/source/drawingml/textbodyproperties.cxx index 9e538973201e..3861ebe78a1c 100644 --- a/oox/source/drawingml/textbodyproperties.cxx +++ b/oox/source/drawingml/textbodyproperties.cxx @@ -80,8 +80,10 @@ void TextBodyProperties::pushRotationAdjustments( sal_Int32 nRotation ) // Hack for n#760986 // TODO: Preferred method would be to have a textbox on top // of the shape and the place it according to the (off,ext) - if( nOff == 0 && moTextOffX && mbAnchorCtr ) nVal = *moTextOffX; - if( nOff == 1 && moTextOffY && mbAnchorCtr ) nVal = *moTextOffY; + if( nOff == 0 && moTextOffLeft && mbAnchorCtr ) nVal = *moTextOffLeft; + if( nOff == 1 && moTextOffUpper ) nVal = *moTextOffLeft; + if( nOff == 2 && moTextOffRight && mbAnchorCtr ) nVal = *moTextOffRight; + if( nOff == 3 && moTextOffLower ) nVal = *moTextOffLower; if( nVal < 0 ) nVal = 0; if( moInsets[i] ) diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx index d3a7c4b60b05..92166c494e37 100644 --- a/oox/source/drawingml/transform2dcontext.cxx +++ b/oox/source/drawingml/transform2dcontext.cxx @@ -62,12 +62,29 @@ ContextHandlerRef Transform2DContext::onCreateContext( sal_Int32 aElementToken, OUString sXValue = rAttribs.getString( XML_x ).get(); OUString sYValue = rAttribs.getString( XML_y ).get(); if( !sXValue.isEmpty() ) - mrShape.getTextBody()->getTextProperties().moTextOffX = GetCoordinate( sXValue.toInt32() - mrShape.getPosition().X ); + mrShape.getTextBody()->getTextProperties().moTextOffUpper = GetCoordinate( sXValue.toInt32() - mrShape.getPosition().X ); if( !sYValue.isEmpty() ) - mrShape.getTextBody()->getTextProperties().moTextOffY = GetCoordinate( sYValue.toInt32() - mrShape.getPosition().Y ); + mrShape.getTextBody()->getTextProperties().moTextOffLeft = GetCoordinate( sYValue.toInt32() - mrShape.getPosition().Y ); } break; case A_TOKEN( ext ): + { + const OUString sXValue = rAttribs.getString( XML_cx ).get(); + const OUString sYValue = rAttribs.getString( XML_cy ).get(); + if( !sXValue.isEmpty() ) + { + mrShape.getTextBody()->getTextProperties().moTextOffRight = GetCoordinate(mrShape.getSize().Width - sXValue.toInt32()); + if( mrShape.getTextBody()->getTextProperties().moTextOffLeft ) + *mrShape.getTextBody()->getTextProperties().moTextOffRight -= *mrShape.getTextBody()->getTextProperties().moTextOffLeft; + } + if( !sYValue.isEmpty() ) + { + mrShape.getTextBody()->getTextProperties().moTextOffLower = GetCoordinate(mrShape.getSize().Height - sYValue.toInt32()); + if( mrShape.getTextBody()->getTextProperties().moTextOffUpper ) + *mrShape.getTextBody()->getTextProperties().moTextOffLower -= *mrShape.getTextBody()->getTextProperties().moTextOffUpper; + + } + } break; } return 0; -- cgit v1.2.3