chart2/source/controller/main/ChartController_Window.cxx |   32 +++++++++++----
 1 file changed, 24 insertions(+), 8 deletions(-)

New commits:
commit 8bc4125a8dc192a8c4b276bfc45fa08806679531
Author:     Tünde Tóth <toth.tu...@nisz.hu>
AuthorDate: Tue Sep 8 16:47:20 2020 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Sep 29 21:17:40 2020 +0200

    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 <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit db7a5861b2c42a56aa56af0bee1e9c5b06faee99)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103650
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

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 );
             {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to