tdf#149141 - Added default object creation when drag size too low

Change-Id: Ibbc0fab14c0bcb18a979d6364b04c236c8c5e29e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134499
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
diff --git a/sd/source/ui/func/fucon3d.cxx b/sd/source/ui/func/fucon3d.cxx
index 111f7b1..fb84454 100644
--- a/sd/source/ui/func/fucon3d.cxx
+++ b/sd/source/ui/func/fucon3d.cxx
@@ -357,10 +357,30 @@ bool FuConstruct3dObject::MouseButtonUp(const MouseEvent& rMEvt)

    if ( mpView->IsCreateObj() && rMEvt.IsLeft() )
    {
        mpView->EndCreateObj(SdrCreateCmd::ForceEnd);
        bReturn = true;
    }
        if( mpView->EndCreateObj( SdrCreateCmd::ForceEnd ) )
        {
            bReturn = true;
        }
        else
        {
            //Drag was too small to create object, so insert default object at click pos
            Point aClickPos(mpWindow->PixelToLogic(rMEvt.GetPosPixel()));
            sal_uInt32 nDefaultObjectSize(1000);
            sal_Int32 nCenterOffset(-sal_Int32(nDefaultObjectSize / 2));
            aClickPos.AdjustX(nCenterOffset);
            aClickPos.AdjustY(nCenterOffset);

            SdrPageView *pPV = mpView->GetSdrPageView();

            if(mpView->IsSnapEnabled())
                aClickPos = mpView->GetSnapPos(aClickPos, pPV);

            ::tools::Rectangle aNewObjectRectangle(aClickPos, Size(nDefaultObjectSize, nDefaultObjectSize));
            SdrObjectUniquePtr pObjDefault = CreateDefaultObject(nSlotId, aNewObjectRectangle);

            bReturn = mpView->InsertObjectAtView(pObjDefault.release(), *pPV);
        }
    }
    bReturn = FuConstruct::MouseButtonUp(rMEvt) || bReturn;

    if (!bPermanent)
diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx
index 964366f..806960d 100644
--- a/sd/source/ui/func/fuconcs.cxx
+++ b/sd/source/ui/func/fuconcs.cxx
@@ -124,6 +124,24 @@ bool FuConstructCustomShape::MouseButtonUp(const MouseEvent& rMEvt)
        {
            bReturn = true;
        }
        else
        {
            //Drag was too small to create object, so insert default object at click pos
            Point aClickPos(mpWindow->PixelToLogic(rMEvt.GetPosPixel()));
            sal_uInt32 nDefaultObjectSize(1000);
            sal_Int32 nCenterOffset(-sal_Int32(nDefaultObjectSize / 2));
            aClickPos.AdjustX(nCenterOffset);
            aClickPos.AdjustY(nCenterOffset);

            SdrPageView *pPV = mpView->GetSdrPageView();
            if(mpView->IsSnapEnabled())
                aClickPos = mpView->GetSnapPos(aClickPos, pPV);

            ::tools::Rectangle aNewObjectRectangle(aClickPos, Size(nDefaultObjectSize, nDefaultObjectSize));
            SdrObjectUniquePtr pObjDefault = CreateDefaultObject(nSlotId, aNewObjectRectangle);

            bReturn = mpView->InsertObjectAtView(pObjDefault.release(), *pPV);
        }
    }
    bReturn = FuConstruct::MouseButtonUp (rMEvt) || bReturn;

diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx
index 605a330..d93ef28 100644
--- a/sd/source/ui/func/fuconrec.cxx
+++ b/sd/source/ui/func/fuconrec.cxx
@@ -314,6 +314,24 @@ bool FuConstructRectangle::MouseButtonUp(const MouseEvent& rMEvt)

            bReturn = true;
        }
        else
        {
            //Drag was too small to create object, so insert default object at click pos
            Point aClickPos(mpWindow->PixelToLogic(rMEvt.GetPosPixel()));
            sal_uInt32 nDefaultObjectSize(1500);
            sal_Int32 nCenterOffset(-sal_Int32(nDefaultObjectSize / 2));
            aClickPos.AdjustX(nCenterOffset);
            aClickPos.AdjustY(nCenterOffset);

            SdrPageView *pPV = mpView->GetSdrPageView();
            if(mpView->IsSnapEnabled())
                aClickPos = mpView->GetSnapPos(aClickPos, pPV);

            ::tools::Rectangle aNewObjectRectangle(aClickPos, Size(nDefaultObjectSize, nDefaultObjectSize));
            SdrObjectUniquePtr pObjDefault = CreateDefaultObject(nSlotId, aNewObjectRectangle);

            bReturn = mpView->InsertObjectAtView(pObjDefault.release(), *pPV);
        }
    }

    bReturn = FuConstruct::MouseButtonUp (rMEvt) || bReturn;