filter/source/msfilter/msdffimp.cxx             |    5 -
 filter/source/msfilter/svdfppt.cxx              |    2 
 include/svx/svdocapt.hxx                        |    7 --
 include/svx/svdorect.hxx                        |   16 ----
 include/svx/svdotext.hxx                        |   21 +-----
 sd/source/core/sdpage.cxx                       |   10 +--
 sd/source/ui/annotations/annotationmanager.cxx  |    2 
 sd/source/ui/func/fuinsfil.cxx                  |    3 
 sd/source/ui/view/drviews2.cxx                  |    5 -
 sd/source/ui/view/drviewse.cxx                  |    3 
 svx/source/sdr/contact/viewcontactofgraphic.cxx |    2 
 svx/source/svdraw/svdedtv2.cxx                  |    2 
 svx/source/svdraw/svdfmtf.cxx                   |    8 --
 svx/source/svdraw/svdobj.cxx                    |    7 --
 svx/source/svdraw/svdocapt.cxx                  |   37 ++++-------
 svx/source/svdraw/svdorect.cxx                  |   49 +++-----------
 svx/source/svdraw/svdotext.cxx                  |   80 ++++--------------------
 svx/source/svdraw/svdpdf.cxx                    |    2 
 svx/source/svdraw/svdxcgv.cxx                   |    8 --
 sw/source/filter/ww8/ww8graf.cxx                |    8 --
 sw/source/filter/ww8/ww8par.cxx                 |    4 -
 21 files changed, 78 insertions(+), 203 deletions(-)

New commits:
commit 536a952d246c95b8790b65e03dc93d3f7b83b9cc
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Wed Jun 11 22:39:19 2025 +0200
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Thu Jun 12 13:00:34 2025 +0200

    svx: Simplify multiple similar constructors of SdrTextObj into one
    
    Change-Id: I8ca01d8dedb3232ac6763bd554a9de2b6cca0b0c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186390
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    Tested-by: Jenkins

diff --git a/filter/source/msfilter/msdffimp.cxx 
b/filter/source/msfilter/msdffimp.cxx
index a972ccf5ba00..38ec1addcf2b 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -5370,10 +5370,7 @@ rtl::Reference<SdrObject> 
SvxMSDffManager::ProcessObj(SvStream& rSt,
                 }
             }
 
-            pTextObj = new SdrRectObj(
-                *pSdrModel,
-                SdrObjKind::Text,
-                rTextRect);
+            pTextObj = new SdrRectObj(*pSdrModel, rTextRect, SdrObjKind::Text);
             pTextImpRec = new SvxMSDffImportRec(*pImpRec);
             bDeleteTextImpRec = true;
 
diff --git a/filter/source/msfilter/svdfppt.cxx 
b/filter/source/msfilter/svdfppt.cxx
index 20d3e5d9bc96..d39674ce2eb3 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -1068,7 +1068,7 @@ rtl::Reference<SdrObject> SdrEscherImport::ProcessObj( 
SvStream& rSt, DffObjData
                         pRet = nullptr;
                     }
                     pTObj = new SdrRectObj(
-                        *pSdrModel,
+                        *pSdrModel, tools::Rectangle(),
                         eTextKind != SdrObjKind::Rectangle ? eTextKind : 
SdrObjKind::Text);
                     SfxItemSet aSet( pSdrModel->GetItemPool() );
                     if ( !pRet )
diff --git a/include/svx/svdocapt.hxx b/include/svx/svdocapt.hxx
index 16683fffd05b..7bf457fc59e0 100644
--- a/include/svx/svdocapt.hxx
+++ b/include/svx/svdocapt.hxx
@@ -73,12 +73,11 @@ private:
 
 public:
     SAL_DLLPRIVATE SdrCaptionObj(SdrModel& rSdrModel);
+
     // Copy constructor
     SAL_DLLPRIVATE SdrCaptionObj(SdrModel& rSdrModel, SdrCaptionObj const & 
rSource);
-    SdrCaptionObj(
-        SdrModel& rSdrModel,
-        const tools::Rectangle& rRect,
-        const Point& rTail);
+
+    SdrCaptionObj(SdrModel& rSdrModel, const tools::Rectangle& rRect, const 
Point& rTail);
 
     // tdf#118662 getter for SuppressGetBitmap
     bool isSuppressGetBitmap() const { return mbSuppressGetBitmap; }
diff --git a/include/svx/svdorect.hxx b/include/svx/svdorect.hxx
index 7b1c1fca7629..23aa3a40b233 100644
--- a/include/svx/svdorect.hxx
+++ b/include/svx/svdorect.hxx
@@ -68,19 +68,9 @@ public:
      *
      * Constructor of a rectangular drawing object
      */
-    SdrRectObj(SdrModel& rSdrModel);
-    SdrRectObj(
-        SdrModel& rSdrModel,
-        const tools::Rectangle& rRect);
-
-    // Constructor of a text frame
-    SdrRectObj(
-        SdrModel& rSdrModel,
-        SdrObjKind eNewTextKind);
-    SdrRectObj(
-        SdrModel& rSdrModel,
-        SdrObjKind eNewTextKind,
-        const tools::Rectangle& rRect);
+    SdrRectObj(SdrModel& rSdrModel,
+               const tools::Rectangle& rRectangle = tools::Rectangle(),
+               std::optional<SdrObjKind> oeTextKind = std::nullopt);
 
     // Copy constructor
     SdrRectObj(SdrModel& rSdrModel, SdrRectObj const & rSource);
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 5466d7f3b306..70a6de3d5bec 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -312,23 +312,12 @@ protected:
     // and object sizes
     virtual void AdaptTextMinSize();
 
-    // constructors for labeled graphical objects
-    SdrTextObj(SdrModel& rSdrModel);
-    SdrTextObj(
-        SdrModel& rSdrModel,
-        const tools::Rectangle& rNewRect);
-
-    // constructors for text frames
-    SdrTextObj(
-        SdrModel& rSdrModel,
-        SdrObjKind eNewTextKind);
-    SdrTextObj(
-        SdrModel& rSdrModel,
-        SdrObjKind eNewTextKind,
-        const tools::Rectangle& rNewRect);
-
+    // constructor
+    SdrTextObj(SdrModel& rSdrModel,
+               const tools::Rectangle& rNewRect = tools::Rectangle(),
+               std::optional<SdrObjKind> oeTextKind = std::nullopt);
     // copy constructor
-    SdrTextObj(SdrModel& rSdrModel, SdrTextObj const & rSource);
+    SdrTextObj(SdrModel& rSdrModel, SdrTextObj const& rSource);
 
     // protected destructor
     virtual ~SdrTextObj() override;
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 501c2da5b8ed..86ac8c19f4de 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -298,7 +298,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::t
     {
         case PresObjKind::Title:
         {
-            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
SdrObjKind::TitleText);
+            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
::tools::Rectangle(), SdrObjKind::TitleText);
 
             if (mbMaster)
             {
@@ -309,7 +309,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::t
 
         case PresObjKind::Outline:
         {
-            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
SdrObjKind::OutlineText);
+            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
::tools::Rectangle(), SdrObjKind::OutlineText);
 
             if (mbMaster)
             {
@@ -320,7 +320,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::t
 
         case PresObjKind::Notes:
         {
-            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
SdrObjKind::Text);
+            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
::tools::Rectangle(), SdrObjKind::Text);
 
             if (mbMaster)
             {
@@ -331,7 +331,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::t
 
         case PresObjKind::Text:
         {
-            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
SdrObjKind::Text);
+            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
::tools::Rectangle(), SdrObjKind::Text);
         }
         break;
 
@@ -433,7 +433,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::t
         case PresObjKind::DateTime:
         case PresObjKind::SlideNumber:
         {
-            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
SdrObjKind::Text);
+            pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), 
::tools::Rectangle(), SdrObjKind::Text);
             bEmptyPresObj = false;
             bForceText = true;
         }
diff --git a/sd/source/ui/annotations/annotationmanager.cxx 
b/sd/source/ui/annotations/annotationmanager.cxx
index 504bbe63adef..bd9240b462de 100644
--- a/sd/source/ui/annotations/annotationmanager.cxx
+++ b/sd/source/ui/annotations/annotationmanager.cxx
@@ -1076,7 +1076,7 @@ void AnnotationManagerImpl::SyncAnnotationObjects()
         }
         else if (rInfo.meType == sdr::annotation::AnnotationType::FreeText)
         {
-            rtl::Reference<SdrRectObj> pRectangleObject = new 
SdrRectObj(rModel, SdrObjKind::Text, aRectangle);
+            rtl::Reference<SdrRectObj> pRectangleObject = new 
SdrRectObj(rModel, aRectangle, SdrObjKind::Text);
             pNewObject = pRectangleObject;
 
             applyAnnotationCommon(*pNewObject, xAnnotation);
diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx
index cafeca276f42..0d2694aa1123 100644
--- a/sd/source/ui/func/fuinsfil.cxx
+++ b/sd/source/ui/func/fuinsfil.cxx
@@ -486,8 +486,7 @@ void FuInsertFile::InsTextOrRTFinDrMode(SfxMedium* pMedium)
         else
         {
             rtl::Reference<SdrRectObj> pTO = new SdrRectObj(
-                mpView->getSdrModelFromSdrView(),
-                SdrObjKind::Text);
+                mpView->getSdrModelFromSdrView(), ::tools::Rectangle(), 
SdrObjKind::Text);
             pTO->SetOutlinerParaObject(std::move(pOPO));
 
             const bool bUndo = mpView->IsUndoEnabled();
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index a2873323c7b2..29319c3406ba 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -605,7 +605,7 @@ public:
 
             rtl::Reference<SdrRectObj> pObject = new SdrRectObj(
                 *m_rDrawViewShell.GetDoc(), // TTTT should be reference
-                SdrObjKind::Text);
+                ::tools::Rectangle(), SdrObjKind::Text);
             pObject->SetMergedItem(makeSdrTextAutoGrowWidthItem(true));
             pObject->SetOutlinerParaObject(pOutliner->CreateParaObject());
             pMasterPage->InsertObject(pObject.get());
@@ -3132,8 +3132,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
                 std::optional<OutlinerParaObject> pOutlParaObject = 
pOutl->CreateParaObject();
 
                 rtl::Reference<SdrRectObj> pRectObj = new SdrRectObj(
-                    *GetDoc(),
-                    SdrObjKind::Text);
+                    *GetDoc(), ::tools::Rectangle(), SdrObjKind::Text);
                 pRectObj->SetMergedItem(makeSdrTextAutoGrowWidthItem(true));
 
                 pOutl->UpdateFields();
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 55fcc2c1ba3b..32000084373b 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -1593,8 +1593,7 @@ void DrawViewShell::InsertURLField(const OUString& rURL, 
const OUString& rText,
         std::optional<OutlinerParaObject> pOutlParaObject = 
pOutl->CreateParaObject();
 
         rtl::Reference<SdrRectObj> pRectObj = new SdrRectObj(
-            GetView()->getSdrModelFromSdrView(),
-            SdrObjKind::Text);
+            GetView()->getSdrModelFromSdrView(), ::tools::Rectangle(), 
SdrObjKind::Text);
 
         pOutl->UpdateFields();
         pOutl->SetUpdateLayout( true );
diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx 
b/svx/source/sdr/contact/viewcontactofgraphic.cxx
index b9f7755b5a03..c72040f5e05b 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -246,7 +246,7 @@ namespace sdr::contact
                 // needed and can be deleted.
 
                 // create temp RectObj as TextObj and set needed attributes
-                rtl::Reference<SdrRectObj> pRectObj(new 
SdrRectObj(GetGrafObject().getSdrModelFromSdrObject(), SdrObjKind::Text));
+                rtl::Reference<SdrRectObj> pRectObj(new 
SdrRectObj(GetGrafObject().getSdrModelFromSdrObject(), tools::Rectangle(), 
SdrObjKind::Text));
                 pRectObj->NbcSetText(aDraftText);
                 pRectObj->SetMergedItem(SvxColorItem(COL_LIGHTRED, 
EE_CHAR_COLOR));
 
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 1dbc7afd83f1..5dc8998e9c87 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -1279,7 +1279,7 @@ void SdrEditView::CombineMarkedTextObjects()
 
     if ( rMarkList.GetMarkCount() > 1 )
     {
-        rtl::Reference<SdrRectObj> pReplacement = new SdrRectObj( 
getSdrModelFromSdrView(), SdrObjKind::Text );
+        rtl::Reference<SdrRectObj> pReplacement = new SdrRectObj( 
getSdrModelFromSdrView(), tools::Rectangle(), SdrObjKind::Text );
         pReplacement->SetOutlinerParaObject( rDrawOutliner.CreateParaObject() 
);
         pReplacement->SetSnapRect( GetMarkedObjRect() );
 
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index 8cb0c248d59d..3552b8b21525 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -1039,10 +1039,7 @@ void ImpSdrGDIMetaFileImport::ImportText( const Point& 
rPos, const OUString& rSt
         aPos.AdjustY( -nTextHeight );
 
     tools::Rectangle aTextRect( aPos, aSize );
-    rtl::Reference<SdrRectObj> pText = new SdrRectObj(
-        *mpModel,
-        SdrObjKind::Text,
-        aTextRect);
+    rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, aTextRect, 
SdrObjKind::Text);
 
     pText->SetMergedItem ( makeSdrTextUpperDistItem (0));
     pText->SetMergedItem ( makeSdrTextLowerDistItem (0));
@@ -1417,7 +1414,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaGradientAction 
const & rAct)
             floor(aRange.getMinX()),
             floor(aRange.getMinY()),
             ceil(aRange.getMaxX()),
-            ceil(aRange.getMaxY())));
+            ceil(aRange.getMaxY())),
+        SdrObjKind::Text);
     // #i125211# Use the ranges from the SdrObject to create a new empty 
SfxItemSet
     SfxItemSet aGradientAttr(mpModel->GetItemPool(), 
pRect->GetMergedItemSet().GetRanges());
     const XFillGradientItem aXFillGradientItem(
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index db20c9bb8d58..9fcf01736875 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -3385,16 +3385,13 @@ rtl::Reference<SdrObject> SdrObjFactory::MakeNewObject(
                 if(nullptr != pSnapRect)
                 {
                     pObj = new SdrRectObj(
-                        rSdrModel,
-                        nIdentifier,
-                        *pSnapRect);
+                        rSdrModel, *pSnapRect, nIdentifier);
                     bSetSnapRect = false;
                 }
                 else
                 {
                     pObj = new SdrRectObj(
-                        rSdrModel,
-                        nIdentifier);
+                        rSdrModel, tools::Rectangle(), nIdentifier);
                 }
             }
             break;
diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx
index d3032f6ba108..ea90f5f57cd7 100644
--- a/svx/source/svdraw/svdocapt.cxx
+++ b/svx/source/svdraw/svdocapt.cxx
@@ -180,14 +180,24 @@ std::unique_ptr<sdr::contact::ViewContact> 
SdrCaptionObj::CreateObjectSpecificVi
 
 
 SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel)
-:   SdrRectObj(rSdrModel, SdrObjKind::Text),
-    maTailPoly(3),  // default size: 3 points = 2 lines
-    mbSpecialTextBoxShadow(false),
-    mbFixedTail(false),
-    mbSuppressGetBitmap(false)
+    : SdrRectObj(rSdrModel, tools::Rectangle(), SdrObjKind::Text)
+    , maTailPoly(3)  // default size: 3 points = 2 lines
+    , mbSpecialTextBoxShadow(false)
+    , mbFixedTail(false)
+    , mbSuppressGetBitmap(false)
 {
 }
 
+SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, const tools::Rectangle& 
rRect, const Point& rTail)
+    : SdrRectObj(rSdrModel, rRect, SdrObjKind::Text)
+    , maTailPoly(3)  // default size: 3 points = 2 lines
+    , mbSpecialTextBoxShadow(false)
+    , mbFixedTail(false)
+    , mbSuppressGetBitmap(false)
+{
+    maTailPoly[0] = maFixedTailPos = rTail;
+}
+
 SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, SdrCaptionObj const & 
rSource)
 :   SdrRectObj(rSdrModel, rSource),
     mbSuppressGetBitmap(false)
@@ -198,22 +208,7 @@ SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, 
SdrCaptionObj const & rSource)
     maFixedTailPos = rSource.maFixedTailPos;
 }
 
-SdrCaptionObj::SdrCaptionObj(
-    SdrModel& rSdrModel,
-    const tools::Rectangle& rRect,
-    const Point& rTail)
-:   SdrRectObj(rSdrModel, SdrObjKind::Text,rRect),
-    maTailPoly(3),  // default size: 3 points = 2 lines
-    mbSpecialTextBoxShadow(false),
-    mbFixedTail(false),
-    mbSuppressGetBitmap(false)
-{
-    maTailPoly[0]=maFixedTailPos=rTail;
-}
-
-SdrCaptionObj::~SdrCaptionObj()
-{
-}
+SdrCaptionObj::~SdrCaptionObj() = default;
 
 void SdrCaptionObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
 {
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index dfd04fd299b5..9735df3d61fa 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -49,54 +49,24 @@ std::unique_ptr<sdr::contact::ViewContact> 
SdrRectObj::CreateObjectSpecificViewC
     return std::make_unique<sdr::contact::ViewContactOfSdrRectObj>(*this);
 }
 
-
-SdrRectObj::SdrRectObj(SdrModel& rSdrModel)
-:   SdrTextObj(rSdrModel)
+SdrRectObj::SdrRectObj(SdrModel& rSdrModel, const tools::Rectangle& 
rRectangle, std::optional<SdrObjKind> oeTextKind)
+    : SdrTextObj(rSdrModel, rRectangle, oeTextKind)
 {
-    m_bClosedObj=true;
+    DBG_ASSERT(meTextKind == SdrObjKind::Text ||
+               meTextKind == SdrObjKind::OutlineText || meTextKind == 
SdrObjKind::TitleText,
+               "SdrRectObj::SdrRectObj(SdrObjKind,...) can only be applied to 
text frames.");
+
+    m_bClosedObj = true;
 }
 
 SdrRectObj::SdrRectObj(SdrModel& rSdrModel, SdrRectObj const & rSource)
 :   SdrTextObj(rSdrModel, rSource)
 {
-    m_bClosedObj=true;
+    m_bClosedObj = true;
     mpXPoly = rSource.mpXPoly;
 }
 
-SdrRectObj::SdrRectObj(
-    SdrModel& rSdrModel,
-    const tools::Rectangle& rRect)
-:   SdrTextObj(rSdrModel, rRect)
-{
-    m_bClosedObj=true;
-}
-
-SdrRectObj::SdrRectObj(
-    SdrModel& rSdrModel,
-    SdrObjKind eNewTextKind)
-:   SdrTextObj(rSdrModel, eNewTextKind)
-{
-    DBG_ASSERT(meTextKind == SdrObjKind::Text ||
-               meTextKind == SdrObjKind::OutlineText || meTextKind == 
SdrObjKind::TitleText,
-               "SdrRectObj::SdrRectObj(SdrObjKind) can only be applied to text 
frames.");
-    m_bClosedObj=true;
-}
-
-SdrRectObj::SdrRectObj(
-    SdrModel& rSdrModel,
-    SdrObjKind eNewTextKind,
-    const tools::Rectangle& rRect)
-:   SdrTextObj(rSdrModel, eNewTextKind, rRect)
-{
-    DBG_ASSERT(meTextKind == SdrObjKind::Text ||
-               meTextKind == SdrObjKind::OutlineText || meTextKind == 
SdrObjKind::TitleText,
-               "SdrRectObj::SdrRectObj(SdrObjKind,...) can only be applied to 
text frames.");
-    m_bClosedObj=true;
-}
-
-SdrRectObj::~SdrRectObj()
-{
-}
+SdrRectObj::~SdrRectObj() = default;
 
 void SdrRectObj::SetXPolyDirty()
 {
@@ -525,6 +495,7 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16 
nPosNum) const
     if (maGeo.m_nRotationAngle)
         RotatePoint(aPt, 
rRectangle.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
     aPt-=GetSnapRect().Center();
+
     SdrGluePoint aGP(aPt);
     aGP.SetPercent(false);
     return aGP;
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 50f283cfb944..7f1c55b2f467 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -71,11 +71,11 @@ std::unique_ptr<sdr::contact::ViewContact> 
SdrTextObj::CreateObjectSpecificViewC
     return std::make_unique<sdr::contact::ViewContactOfTextObj>(*this);
 }
 
-SdrTextObj::SdrTextObj(SdrModel& rSdrModel)
+SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const tools::Rectangle& 
rRectangle, std::optional<SdrObjKind> oeTextKind)
     : SdrAttrObj(rSdrModel)
     , mpEditingOutliner(nullptr)
-    , meTextKind(SdrObjKind::Text)
-    , maTextEditOffset(Point(0, 0))
+    , meTextKind(oeTextKind ? *oeTextKind : SdrObjKind::Text)
+    , maTextEditOffset(Point())
     , mbTextFrame(false)
     , mbNoShear(false)
     , mbTextSizeDirty(false)
@@ -84,7 +84,19 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel)
     , mbTextAnimationAllowed(true)
     , mbInDownScale(false)
 {
-    // #i25616#
+    if (!rRectangle.IsEmpty())
+    {
+        tools::Rectangle aRectangle(rRectangle);
+        ImpJustifyRect(aRectangle);
+        setRectangle(aRectangle);
+    }
+
+    if (oeTextKind)
+    {
+        mbTextFrame = true;
+        mbNoShear = true;
+    }
+
     mbSupportTextIndentingOnLineWidthChange = true;
 }
 
@@ -136,66 +148,6 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrTextObj 
const & rSource)
     ImpSetTextStyleSheetListeners();
 }
 
-SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const tools::Rectangle& rNewRect)
-    : SdrAttrObj(rSdrModel)
-    , mpEditingOutliner(nullptr)
-    , meTextKind(SdrObjKind::Text)
-    , maTextEditOffset(Point(0, 0))
-    , mbTextFrame(false)
-    , mbNoShear(false)
-    , mbTextSizeDirty(false)
-    , mbInEditMode(false)
-    , mbDisableAutoWidthOnDragging(false)
-    , mbTextAnimationAllowed(true)
-    , mbInDownScale(false)
-{
-    tools::Rectangle aRectangle(rNewRect);
-    ImpJustifyRect(aRectangle);
-    setRectangle(aRectangle);
-
-    // #i25616#
-    mbSupportTextIndentingOnLineWidthChange = true;
-}
-
-SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind eNewTextKind)
-    : SdrAttrObj(rSdrModel)
-    , mpEditingOutliner(nullptr)
-    , meTextKind(eNewTextKind)
-    , maTextEditOffset(Point(0, 0))
-    , mbTextFrame(true)
-    , mbNoShear(true)
-    , mbTextSizeDirty(false)
-    , mbInEditMode(false)
-    , mbDisableAutoWidthOnDragging(false)
-    , mbTextAnimationAllowed(true)
-    , mbInDownScale(false)
-{
-    // #i25616#
-    mbSupportTextIndentingOnLineWidthChange = true;
-}
-
-SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind eNewTextKind,
-                       const tools::Rectangle& rNewRect)
-    : SdrAttrObj(rSdrModel)
-    , mpEditingOutliner(nullptr)
-    , meTextKind(eNewTextKind)
-    , maTextEditOffset(Point(0, 0))
-    , mbTextFrame(true)
-    , mbNoShear(true)
-    , mbTextSizeDirty(false)
-    , mbInEditMode(false)
-    , mbDisableAutoWidthOnDragging(false)
-    , mbTextAnimationAllowed(true)
-    , mbInDownScale(false)
-{
-    tools::Rectangle aRectangle(rNewRect);
-    ImpJustifyRect(aRectangle);
-    setRectangle(aRectangle);
-
-    // #i25616#
-    mbSupportTextIndentingOnLineWidthChange = true;
-}
-
 SdrTextObj::~SdrTextObj()
 {
     mxText.clear();
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 7c0251c8b0b1..a519ebd45cca 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -796,7 +796,7 @@ void ImpSdrPdfImport::InsertTextObject(const Point& rPos, 
const Size& rSize, con
         aPosition.AdjustY(-nTextHeight);
 
     tools::Rectangle aTextRect(aPosition, aSize);
-    rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, 
SdrObjKind::Text, aTextRect);
+    rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, aTextRect, 
SdrObjKind::Text);
 
     pText->SetMergedItem(makeSdrTextUpperDistItem(0));
     pText->SetMergedItem(makeSdrTextLowerDistItem(0));
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 78d89e135ac7..fb2394a7efde 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -144,9 +144,7 @@ bool SdrExchangeView::Paste(const OUString& rStr, const 
Point& rPos, SdrObjList*
         aTextRect.SetSize(pPage->GetSize());
     }
     rtl::Reference<SdrRectObj> pObj = new SdrRectObj(
-        getSdrModelFromSdrView(),
-        SdrObjKind::Text,
-        aTextRect);
+        getSdrModelFromSdrView(), aTextRect, SdrObjKind::Text);
 
     pObj->SetLayer(nLayer);
     pObj->NbcSetText(rStr); // SetText before SetAttr, else SetAttr doesn't 
work!
@@ -183,9 +181,7 @@ bool SdrExchangeView::Paste(SvStream& rInput, EETextFormat 
eFormat, const Point&
         aTextRect.SetSize(pPage->GetSize());
     }
     rtl::Reference<SdrRectObj> pObj = new SdrRectObj(
-        getSdrModelFromSdrView(),
-        SdrObjKind::Text,
-        aTextRect);
+        getSdrModelFromSdrView(), aTextRect, SdrObjKind::Text);
 
     pObj->SetLayer(nLayer);
     if (mpDefaultStyleSheet!=nullptr) 
pObj->NbcSetStyleSheet(mpDefaultStyleSheet, false);
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index 377bf099aa98..981b30248ba8 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -1306,9 +1306,7 @@ rtl::Reference<SdrObject> 
SwWW8ImplReader::ReadTextBox(WW8_DPHEAD const * pHd, S
     aP1.AdjustY(SVBT16ToInt16(pHd->dya));
 
     rtl::Reference<SdrRectObj> pObj = new SdrRectObj(
-        *m_pDrawModel,
-        SdrObjKind::Text,
-        tools::Rectangle(aP0, aP1));
+        *m_pDrawModel, tools::Rectangle(aP0, aP1), SdrObjKind::Text);
 
     pObj->NbcSetSnapRect(tools::Rectangle(aP0, aP1));
     Size aSize(SVBT16ToInt16(pHd->dxa), SVBT16ToInt16(pHd->dya));
@@ -2966,9 +2964,7 @@ SwFrameFormat* 
SwWW8ImplReader::MungeTextIntoDrawBox(SvxMSDffImportRec& rRecord,
         // Group objects don't have text. Insert a text object into
         // the group for holding the text.
         pSdrTextObj = new SdrRectObj(
-            *m_pDrawModel,
-            SdrObjKind::Text,
-            pThisGroup->GetCurrentBoundRect());
+            *m_pDrawModel, pThisGroup->GetCurrentBoundRect(), 
SdrObjKind::Text);
 
         SfxItemSet aSet(m_pDrawModel->GetItemPool());
         aSet.Put(XFillStyleItem(drawing::FillStyle_NONE));
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 5c737d341e17..3e93f797c290 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -800,9 +800,7 @@ rtl::Reference<SdrObject> 
SwMSDffManager::ProcessObj(SvStream& rSt,
             if (bIsSimpleDrawingTextBox)
             {
                 pObj = new SdrRectObj(
-                    *pSdrModel,
-                    SdrObjKind::Text,
-                    rTextRect);
+                    *pSdrModel, rTextRect,SdrObjKind::Text );
             }
 
             // The vertical paragraph justification are contained within the

Reply via email to