summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorTünde Tóth <toth.tunde@nisz.hu>2020-09-08 16:47:20 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2020-09-29 21:17:40 +0200
commit8bc4125a8dc192a8c4b276bfc45fa08806679531 (patch)
treec88c651ec36bc04364cb7f476d400f12afff7ff9 /chart2
parent8c7bb2d43fefe66f0fed3971a84bcd1ee80ee0c2 (diff)
tdf#136573 chart2: enable arrow keys in data label
moving to custom positions. Follow-up of commit c10d5854b5427ad1bfffc00e77a9306c99c78c63 (tdf#136430 Fix chart crash trying to move data labels with arrow keys.) Change-Id: I8833e14a7c9c8f7bdb758fc0eb97be38aee35b34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102262 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org> (cherry picked from commit db7a5861b2c42a56aa56af0bee1e9c5b06faee99) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103650 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/controller/main/ChartController_Window.cxx32
1 files changed, 24 insertions, 8 deletions
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 1678168b0e00..cdf7e02aa100 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -1512,8 +1512,29 @@ bool ChartController::execute_KeyInput( const KeyEvent& rKEvt )
if( !m_aSelection.getSelectedCID().isEmpty() )
{
//move chart objects
- bReturn = impl_moveOrResizeObject(
- m_aSelection.getSelectedCID(), MOVE_OBJECT, fShiftAmountX, fShiftAmountY );
+ if (eObjectType == OBJECTTYPE_DATA_LABEL)
+ {
+ SdrObject* pObj = pDrawViewWrapper->getSelectedObject();
+ if (pObj)
+ {
+ tools::Rectangle aRect = pObj->GetSnapRect();
+ awt::Size aPageSize(ChartModelHelper::getPageSize(getModel()));
+ if ((fShiftAmountX > 0.0 && (aRect.getX() + fShiftAmountX + aRect.getWidth() > aPageSize.Width)) ||
+ (fShiftAmountX < 0.0 && (aRect.getX() + fShiftAmountX < 0)) ||
+ (fShiftAmountY > 0.0 && (aRect.getY() + fShiftAmountY + aRect.getHeight() > aPageSize.Height)) ||
+ (fShiftAmountY < 0.0 && (aRect.getY() + fShiftAmountY < 0)))
+ bReturn = false;
+ else
+ bReturn = PositionAndSizeHelper::moveObject(
+ m_aSelection.getSelectedCID(), getModel(),
+ awt::Rectangle(aRect.getX() + fShiftAmountX, aRect.getY() + fShiftAmountY, aRect.getWidth(), aRect.getHeight()),
+ awt::Rectangle(aRect.getX(), aRect.getY(), 0, 0),
+ awt::Rectangle(0, 0, aPageSize.Width, aPageSize.Height));
+ }
+ }
+ else
+ bReturn = impl_moveOrResizeObject(
+ m_aSelection.getSelectedCID(), MOVE_OBJECT, fShiftAmountX, fShiftAmountY );
}
else
{
@@ -1765,12 +1786,6 @@ bool ChartController::impl_moveOrResizeObject(
{
bool bResult = false;
bool bNeedResize = ( eType == CENTERED_RESIZE_OBJECT );
- ObjectType eObjectType = ObjectIdentifier::getObjectType(rCID);
-
- /*TODO: Move data label objects with arrow-keys,
- in that case we have to use CustomLabelPosition instead of RelativePosition!*/
- if( eObjectType == OBJECTTYPE_DATA_LABEL )
- return bResult;
uno::Reference< frame::XModel > xChartModel( getModel() );
uno::Reference< beans::XPropertySet > xObjProp(
@@ -1830,6 +1845,7 @@ bool ChartController::impl_moveOrResizeObject(
if( bNeedResize )
eActionType = ActionDescriptionProvider::ActionType::Resize;
+ ObjectType eObjectType = ObjectIdentifier::getObjectType( rCID );
UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription(
eActionType, ObjectNameProvider::getName( eObjectType )), m_xUndoManager );
{