chart2/source/controller/drawinglayer/DrawViewWrapper.cxx |    2 -
 chart2/source/controller/main/ChartController_Window.cxx  |    2 -
 chart2/source/controller/main/SelectionHelper.cxx         |    7 ++---
 include/svx/svdobj.hxx                                    |    3 ++
 sd/source/ui/func/fudraw.cxx                              |    2 -
 sd/source/ui/view/drviewse.cxx                            |    2 -
 sd/source/ui/view/sdview.cxx                              |    2 -
 sd/source/ui/view/sdview3.cxx                             |    2 -
 svx/source/engine3d/dragmt3d.cxx                          |    4 +--
 svx/source/engine3d/e3dsceneupdater.cxx                   |    2 -
 svx/source/engine3d/scene3d.cxx                           |   18 +++++++-------
 svx/source/engine3d/view3d.cxx                            |   16 ++++++------
 svx/source/form/fmshimp.cxx                               |    2 -
 svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx |    2 -
 svx/source/svdraw/clonelist.cxx                           |    4 +--
 svx/source/svdraw/svddrgv.cxx                             |    2 -
 svx/source/svdraw/svdedtv.cxx                             |    2 -
 svx/source/svdraw/svdedtv1.cxx                            |    6 ++--
 svx/source/svdraw/svdmark.cxx                             |    2 -
 svx/source/svdraw/svdobj.cxx                              |    7 +++++
 svx/source/svdraw/svdview.cxx                             |    2 -
 svx/source/unodraw/unoshap3.cxx                           |    4 +--
 sw/source/core/text/txtfly.cxx                            |    2 -
 23 files changed, 53 insertions(+), 44 deletions(-)

New commits:
commit a6cf6ac1f6df02c9fe733858f2aae866ffd38569
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Wed Nov 2 09:44:41 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Nov 2 13:30:14 2022 +0100

    tdf#54857 elide more dynamic_cast
    
    Change-Id: I0cbdb2ee46600559d9a37f09b574d484e72a0e0d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142133
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx 
b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
index 3918a296e638..cb63c2d690a8 100644
--- a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
+++ b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
@@ -168,7 +168,7 @@ SdrObject* DrawViewWrapper::getHitObject( const Point& rPnt 
) const
 
         //3d objects need a special treatment
         //because the simple PickObj method is not accurate in this case for 
performance reasons
-        E3dObject* pE3d = dynamic_cast< E3dObject* >(pRet);
+        E3dObject* pE3d = DynCastE3dObject(pRet);
         if( pE3d )
         {
             E3dScene* pScene(pE3d->getRootE3dSceneFromE3dObject());
diff --git a/chart2/source/controller/main/ChartController_Window.cxx 
b/chart2/source/controller/main/ChartController_Window.cxx
index 41cb6e592db0..91295002cf03 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -844,7 +844,7 @@ void ChartController::execute_MouseButtonUp( const 
MouseEvent& rMEvt )
                         awt::Size aPageSize( ChartModelHelper::getPageSize( 
getChartModel() ) );
                         tools::Rectangle aPageRect( 
0,0,aPageSize.Width,aPageSize.Height );
 
-                        const E3dObject* pE3dObject(dynamic_cast< const 
E3dObject*>(pObj));
+                        const E3dObject* pE3dObject(DynCastE3dObject(pObj));
                         if(nullptr != pE3dObject)
                         {
                             E3dScene* 
pScene(pE3dObject->getRootE3dSceneFromE3dObject());
diff --git a/chart2/source/controller/main/SelectionHelper.cxx 
b/chart2/source/controller/main/SelectionHelper.cxx
index 177d7acf588b..46f648399980 100644
--- a/chart2/source/controller/main/SelectionHelper.cxx
+++ b/chart2/source/controller/main/SelectionHelper.cxx
@@ -465,7 +465,7 @@ SelectionHelper::~SelectionHelper()
 bool SelectionHelper::getFrameDragSingles()
 {
     //true == green == surrounding handles
-    return dynamic_cast<const E3dObject*>( m_pSelectedObj) == nullptr;
+    return DynCastE3dObject( m_pSelectedObj) == nullptr;
 }
 
 SdrObject* SelectionHelper::getMarkHandlesObject( SdrObject* pObj )
@@ -532,7 +532,7 @@ E3dScene* SelectionHelper::getSceneToRotate( SdrObject* 
pObj )
 
     if(pObj)
     {
-        pRotateable = dynamic_cast<E3dObject*>(pObj);
+        pRotateable = DynCastE3dObject(pObj);
         if( !pRotateable )
         {
             SolarMutexGuard aSolarGuard;
@@ -542,8 +542,7 @@ E3dScene* SelectionHelper::getSceneToRotate( SdrObject* 
pObj )
                 SdrObjListIter aIterator(pSubList, 
SdrIterMode::DeepWithGroups);
                 while( aIterator.IsMore() && !pRotateable )
                 {
-                    SdrObject* pSubObj = aIterator.Next();
-                    pRotateable = dynamic_cast<E3dObject*>(pSubObj);
+                    pRotateable = DynCastE3dObject(aIterator.Next());
                 }
             }
         }
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 0f53f15ab5f6..d2b1ae4579be 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -41,6 +41,7 @@
 
 class SfxBroadcaster;
 class AutoTimer;
+class E3dObject;
 class E3dScene;
 class OutlinerParaObject;
 class Outliner;
@@ -999,6 +1000,8 @@ private:
 
 SVXCORE_DLLPUBLIC E3dScene* DynCastE3dScene(SdrObject*);
 inline const E3dScene* DynCastE3dScene(const SdrObject* p) { return 
DynCastE3dScene(const_cast<SdrObject*>(p)); }
+SVXCORE_DLLPUBLIC E3dObject* DynCastE3dObject(SdrObject*);
+inline const E3dObject* DynCastE3dObject(const SdrObject* p) { return 
DynCastE3dObject(const_cast<SdrObject*>(p)); }
 
 
 struct SdrObjCreatorParams
diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx
index 9b09a98a39e5..06230fa6cbdf 100644
--- a/sd/source/ui/func/fudraw.cxx
+++ b/sd/source/ui/func/fudraw.cxx
@@ -517,7 +517,7 @@ void FuDraw::ForcePointer(const MouseEvent* pMEvt)
                 // wouldn't be possible per default.
                 const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
                 SdrObject* pObject = rMarkList.GetMark(0)->GetMarkedSdrObj();
-                if ((dynamic_cast<const E3dObject* >(pObject) !=  nullptr) && 
(rMarkList.GetMarkCount() == 1))
+                if (DynCastE3dObject(pObject) && (rMarkList.GetMarkCount() == 
1))
                 {
                     mpWindow->SetPointer(PointerStyle::Rotate);
                     bDefPointer = false;     // Otherwise it'll be called 
Joe's routine and the mousepointer will reconfigurate again
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 59142ad4bb76..b3183397a084 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -355,7 +355,7 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq)
 
                 while (i < nMarkCnt && !b3DObjMarked)
                 {
-                    if (nullptr != dynamic_cast< E3dObject *>( 
rMarkList.GetMark(i)->GetMarkedSdrObj() ))
+                    if (DynCastE3dObject( 
rMarkList.GetMark(i)->GetMarkedSdrObj() ))
                     {
                         b3DObjMarked = true;
                     }
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index a2483fadce67..5007f6dd52af 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -976,7 +976,7 @@ bool View::IsMorphingAllowed() const
              ( nKind1 != SdrObjKind::Graphic && nKind2 != SdrObjKind::Graphic 
) &&
              ( nKind1 != SdrObjKind::OLE2 && nKind2 != SdrObjKind::OLE2 ) &&
              ( nKind1 != SdrObjKind::Caption && nKind2 !=  SdrObjKind::Caption 
) &&
-             dynamic_cast< const E3dObject *>( pObj1 ) == nullptr && 
dynamic_cast< const E3dObject *>( pObj2 ) ==  nullptr )
+             DynCastE3dObject( pObj1 ) == nullptr && DynCastE3dObject( pObj2 ) 
==  nullptr )
         {
             SfxItemSetFixed<XATTR_FILLSTYLE, XATTR_FILLSTYLE> aSet1( 
mrDoc.GetPool() );
             SfxItemSetFixed<XATTR_FILLSTYLE, XATTR_FILLSTYLE> aSet2( 
mrDoc.GetPool() );
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index 0050fb85db6a..f96cd774a92a 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -813,7 +813,7 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 
                             pPickObj->SetMergedItemSetAndBroadcast( aSet );
 
-                            if( dynamic_cast< E3dObject *>( pPickObj ) !=  
nullptr && dynamic_cast< E3dObject *>( pObj ) !=  nullptr )
+                            if( DynCastE3dObject( pPickObj ) && 
DynCastE3dObject( pObj ) )
                             {
                                 // handle 3D attribute in addition
                                 SfxItemSetFixed<SID_ATTR_3D_START, 
SID_ATTR_3D_END> aNewSet( mrDoc.GetPool() );
diff --git a/svx/source/engine3d/dragmt3d.cxx b/svx/source/engine3d/dragmt3d.cxx
index ef5a7b6904b4..4a8f9ee55c63 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -55,7 +55,7 @@ E3dDragMethod::E3dDragMethod (
         // for non-visible 3D objects fallback to wireframe interaction
         for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
         {
-            E3dObject* pE3dObj = dynamic_cast< E3dObject* 
>(rMark.GetMark(nObjs)->GetMarkedSdrObj());
+            E3dObject* pE3dObj = 
DynCastE3dObject(rMark.GetMark(nObjs)->GetMarkedSdrObj());
 
             if(pE3dObj)
             {
@@ -70,7 +70,7 @@ E3dDragMethod::E3dDragMethod (
 
     for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
     {
-        E3dObject* pE3dObj = dynamic_cast< E3dObject* 
>(rMark.GetMark(nObjs)->GetMarkedSdrObj());
+        E3dObject* pE3dObj = 
DynCastE3dObject(rMark.GetMark(nObjs)->GetMarkedSdrObj());
 
         if(pE3dObj)
         {
diff --git a/svx/source/engine3d/e3dsceneupdater.cxx 
b/svx/source/engine3d/e3dsceneupdater.cxx
index a72b4126d5cc..d66dd9afd07b 100644
--- a/svx/source/engine3d/e3dsceneupdater.cxx
+++ b/svx/source/engine3d/e3dsceneupdater.cxx
@@ -28,7 +28,7 @@ 
E3DModifySceneSnapRectUpdater::E3DModifySceneSnapRectUpdater(const SdrObject* pO
 :   mpScene(nullptr)
 {
     // Secure old 3D transformation stack before modification
-    const E3dObject* pE3dObject = dynamic_cast< const E3dObject* >(pObject);
+    const E3dObject* pE3dObject = DynCastE3dObject(pObject);
     if(!pE3dObject)
         return;
 
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index f07fa7e170d9..7a886fafc036 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -651,7 +651,7 @@ void E3dScene::RecalcSnapRect()
 
         for(size_t a = 0; a < GetObjCount(); ++a)
         {
-            E3dObject* pCandidate(dynamic_cast< E3dObject* >(GetObj(a)));
+            E3dObject* pCandidate(DynCastE3dObject(GetObj(a)));
 
             if(pCandidate)
             {
@@ -729,7 +729,7 @@ void E3dScene::SetSelected(bool bNew)
 
     for(size_t a(0); a < GetObjCount(); a++)
     {
-        E3dObject* pCandidate(dynamic_cast< E3dObject* >(GetObj(a)));
+        E3dObject* pCandidate(DynCastE3dObject(GetObj(a)));
 
         if(pCandidate)
         {
@@ -741,7 +741,7 @@ void E3dScene::SetSelected(bool bNew)
 void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
 {
     // Is it even a 3D object?
-    if(nullptr != dynamic_cast< const E3dObject* >(pObj))
+    if(DynCastE3dObject(pObj))
     {
         // Normal 3D object, insert means call parent
         SdrObjList::NbcInsertObject(pObj, nPos);
@@ -760,7 +760,7 @@ void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
 void E3dScene::InsertObject(SdrObject* pObj, size_t nPos)
 {
     // Is it even a 3D object?
-    if(nullptr != dynamic_cast< const E3dObject* >(pObj))
+    if(DynCastE3dObject(pObj))
     {
         // call parent
         SdrObjList::InsertObject(pObj, nPos);
@@ -805,7 +805,7 @@ void E3dScene::SetBoundAndSnapRectsDirty(bool bNotMyself, 
bool bRecursive)
 
     for(size_t a = 0; a < GetObjCount(); ++a)
     {
-        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
+        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));
 
         if(pCandidate)
         {
@@ -821,7 +821,7 @@ void E3dScene::NbcSetLayer(SdrLayerID nLayer)
 
     for(size_t a = 0; a < GetObjCount(); ++a)
     {
-        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
+        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));
 
         if(pCandidate)
         {
@@ -840,7 +840,7 @@ void E3dScene::handlePageChange(SdrPage* pOldPage, SdrPage* 
pNewPage)
 
     for(size_t a(0); a < GetObjCount(); a++)
     {
-        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
+        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));
 
         if(pCandidate)
         {
@@ -865,7 +865,7 @@ basegfx::B3DRange E3dScene::RecalcBoundVolume() const
 
     for(size_t a = 0; a < nObjCnt; ++a)
     {
-        const E3dObject* p3DObject = dynamic_cast< const E3dObject* 
>(GetObj(a));
+        const E3dObject* p3DObject = DynCastE3dObject(GetObj(a));
 
         if(p3DObject)
         {
@@ -885,7 +885,7 @@ void E3dScene::SetTransformChanged()
 
     for(size_t a = 0; a < GetObjCount(); ++a)
     {
-        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
+        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));
 
         if(pCandidate)
         {
diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx
index a7bd239352be..86a1b15b64e4 100644
--- a/svx/source/engine3d/view3d.cxx
+++ b/svx/source/engine3d/view3d.cxx
@@ -230,7 +230,7 @@ void E3dView::DrawMarkedObj(OutputDevice& rOut) const
             }
         }
         // Reset all selection flags
-        if(auto p3dObject = dynamic_cast< const E3dObject*>(pObj))
+        if(auto p3dObject = DynCastE3dObject(pObj))
         {
             pScene = p3dObject->getRootE3dSceneFromE3dObject();
 
@@ -263,7 +263,7 @@ void E3dView::DrawMarkedObj(OutputDevice& rOut) const
         for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
         {
             SdrObject *pObj = GetMarkedObjectByIndex(nObjs);
-            if(auto p3DObj = dynamic_cast<E3dObject*>(pObj))
+            if(auto p3DObj = DynCastE3dObject(pObj))
             {
                 // Select object
                 p3DObj->SetSelected(true);
@@ -331,7 +331,7 @@ std::unique_ptr<SdrModel> E3dView::CreateMarkedObjModel() 
const
                 }
             }
 
-        if(auto p3dObject = dynamic_cast< const E3dObject*>(pObj))
+        if(auto p3dObject = DynCastE3dObject(pObj))
         {
             // reset all selection flags at 3D objects
             pScene = p3dObject->getRootE3dSceneFromE3dObject();
@@ -377,7 +377,7 @@ std::unique_ptr<SdrModel> E3dView::CreateMarkedObjModel() 
const
     {
         SdrObject *pObj = aOldML.GetMark(nObjs)->GetMarkedSdrObj();
 
-        if(auto p3dObject = dynamic_cast< E3dObject* >(pObj))
+        if(auto p3dObject = DynCastE3dObject(pObj))
         {
             pScene = p3dObject->getRootE3dSceneFromE3dObject();
 
@@ -611,7 +611,7 @@ void E3dView::ImpIsConvertTo3DPossible(SdrObject const * 
pObj, bool& rAny3D,
     if(!pObj)
         return;
 
-    if(dynamic_cast< const E3dObject* >(pObj) !=  nullptr)
+    if(DynCastE3dObject(pObj))
     {
         rAny3D = true;
     }
@@ -1176,7 +1176,7 @@ bool E3dView::BegDragObj(const Point& rPnt, OutputDevice* 
pOut,
                         if( pScene->getRootE3dSceneFromE3dObject() == pObj )
                             bThereAreRootScenes = true;
 
-                    if(dynamic_cast< const E3dObject* >(pObj) !=  nullptr)
+                    if(DynCastE3dObject(pObj))
                     {
                         bThereAre3DObjects = true;
                     }
@@ -1481,7 +1481,7 @@ bool E3dView::IsBreak3DObjPossible() const
         {
             SdrObject* pObj = GetMarkedObjectByIndex(i);
 
-            if (auto p3dObject = dynamic_cast< E3dObject* >(pObj))
+            if (auto p3dObject = DynCastE3dObject(pObj))
             {
                 if(!p3dObject->IsBreakObjPossible())
                     return false;
@@ -1562,7 +1562,7 @@ void E3dView::CheckPossibilities()
         SdrObject *pObj = GetMarkedObjectByIndex(nObjs);
         if(dynamic_cast< const E3dCompoundObject* >(pObj))
             bCompound = true;
-        if(dynamic_cast< const E3dObject* >(pObj))
+        if(DynCastE3dObject(pObj))
             b3DObject = true;
     }
 
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 49505610b7bc..04390bde7063 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -551,7 +551,7 @@ static bool isControlList(const SdrMarkList& rMarkList)
     for (size_t i = 0; i < nMarkCount && bControlList; ++i)
     {
         SdrObject *pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
-        E3dObject* pAs3DObject = dynamic_cast< E3dObject* >( pObj);
+        E3dObject* pAs3DObject = DynCastE3dObject( pObj);
         // E3dObject's do not contain any 2D-objects (by definition)
         // we need this extra check here : an E3dObject->IsGroupObject says 
"YES", but an SdrObjListIter working
         // with an E3dObject doesn't give me any Nodes (E3dObject has a sub 
list, but no members in that list,
diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx 
b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
index e03dfced85ea..86757044c13b 100644
--- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
@@ -136,7 +136,7 @@ namespace sdr::contact
                 // (only with complex CustomShapes with multiple 
representation SdrObjects and
                 // only visible when transparency involved, but 
runtime-expensive).
                 // Thus: Just do not iterate, will check behaviour deeply.
-                b3DShape = (nullptr != dynamic_cast< const E3dObject* 
>(pSdrObjRepresentation));
+                b3DShape = (nullptr != 
DynCastE3dObject(pSdrObjRepresentation));
                 
pSdrObjRepresentation->GetViewContact().getViewIndependentPrimitive2DContainer(xGroup);
             }
 
diff --git a/svx/source/svdraw/clonelist.cxx b/svx/source/svdraw/clonelist.cxx
index 840ea3358135..1fe6bd99e478 100644
--- a/svx/source/svdraw/clonelist.cxx
+++ b/svx/source/svdraw/clonelist.cxx
@@ -34,10 +34,10 @@ void CloneList::AddPair(const SdrObject* pOriginal, 
SdrObject* pClone)
     bool bOriginalIsGroup(pOriginal->IsGroupObject());
     bool bCloneIsGroup(pClone->IsGroupObject());
 
-    if(bOriginalIsGroup && dynamic_cast<const E3dObject* >(pOriginal) != 
nullptr && DynCastE3dScene(pOriginal) == nullptr )
+    if(bOriginalIsGroup && DynCastE3dObject(pOriginal) != nullptr && 
DynCastE3dScene(pOriginal) == nullptr )
         bOriginalIsGroup = false;
 
-    if(bCloneIsGroup && dynamic_cast<const E3dObject* >(pClone) != nullptr && 
DynCastE3dScene(pClone) == nullptr)
+    if(bCloneIsGroup && DynCastE3dObject(pClone) != nullptr && 
DynCastE3dScene(pClone) == nullptr)
         bCloneIsGroup = false;
 
     if(!(bOriginalIsGroup && bCloneIsGroup))
diff --git a/svx/source/svdraw/svddrgv.cxx b/svx/source/svdraw/svddrgv.cxx
index b6ac05cef7c1..7c5d2c76f9e9 100644
--- a/svx/source/svdraw/svddrgv.cxx
+++ b/svx/source/svdraw/svddrgv.cxx
@@ -270,7 +270,7 @@ bool SdrDragView::BegDragObj(const Point& rPnt, 
OutputDevice* pOut, SdrHdl* pHdl
                             for(size_t a=0; !b3DObjSelected && 
a<GetMarkedObjectCount(); ++a)
                             {
                                 SdrObject* pObj = GetMarkedObjectByIndex(a);
-                                if(dynamic_cast< const E3dObject* >(pObj))
+                                if(DynCastE3dObject(pObj))
                                     b3DObjSelected = true;
                             }
                             // If yes, allow shear even when !IsShearAllowed,
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index 68026d943c9b..012b5153207f 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -754,7 +754,7 @@ std::vector<SdrObject*> 
SdrEditView::DeleteMarkedList(SdrMarkList const& rMark)
                 SdrObjList*  pOL = pObj->getParentSdrObjListFromSdrObject();
                 const size_t nOrdNum(pObj->GetOrdNumDirect());
 
-                bool bIs3D = dynamic_cast< E3dObject* >(pObj);
+                bool bIs3D = DynCastE3dObject(pObj);
                 // set up a scene updater if object is a 3d object
                 if(bIs3D)
                 {
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index bc5d2bb5003c..6d4fe7cfa181 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -332,7 +332,7 @@ void SdrEditView::RotateMarkedObj(const Point& rRef, 
Degree100 nAngle, bool bCop
             }
 
             // set up a scene updater if object is a 3d object
-            if(dynamic_cast< E3dObject* >(pO))
+            if(DynCastE3dObject(pO))
             {
                 aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pO));
             }
@@ -396,7 +396,7 @@ void SdrEditView::MirrorMarkedObj(const Point& rRef1, const 
Point& rRef2, bool b
             }
 
             // set up a scene updater if object is a 3d object
-            if(dynamic_cast< E3dObject* >(pO))
+            if(DynCastE3dObject(pO))
             {
                 aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pO));
             }
@@ -1188,7 +1188,7 @@ void SdrEditView::SetAttrToMarked(const SfxItemSet& 
rAttr, bool bReplaceAll)
         }
 
         // set up a scene updater if object is a 3d object
-        if(dynamic_cast< E3dObject* >(pObj))
+        if(DynCastE3dObject(pObj))
         {
             aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pObj));
         }
diff --git a/svx/source/svdraw/svdmark.cxx b/svx/source/svdraw/svdmark.cxx
index ff556ee9f6bb..58963a9f4ab8 100644
--- a/svx/source/svdraw/svdmark.cxx
+++ b/svx/source/svdraw/svdmark.cxx
@@ -700,7 +700,7 @@ namespace sdr
 
         bool bIsGroup(pObj->IsGroupObject());
 
-        if(bIsGroup && dynamic_cast< const E3dObject* >(pObj) != nullptr && 
DynCastE3dScene(pObj) == nullptr)
+        if(bIsGroup && DynCastE3dObject(pObj) != nullptr && 
DynCastE3dScene(pObj) == nullptr)
         {
             bIsGroup = false;
         }
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index cd59bbe5b15f..becc4cd3cdbe 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -3202,6 +3202,13 @@ E3dScene* DynCastE3dScene(SdrObject* pObj)
     return nullptr;
 }
 
+E3dObject* DynCastE3dObject(SdrObject* pObj)
+{
+    if( pObj && pObj->GetObjInventor() == SdrInventor::E3d )
+        return static_cast<E3dObject*>(pObj);
+    return nullptr;
+}
+
 rtl::Reference<SdrObject> SdrObjFactory::CreateObjectFromFactory(SdrModel& 
rSdrModel, SdrInventor nInventor, SdrObjKind nObjIdentifier)
 {
     SdrObjCreatorParams aParams { nInventor, nObjIdentifier, rSdrModel };
diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx
index d7d6d5d3adeb..42399006bf47 100644
--- a/svx/source/svdraw/svdview.cxx
+++ b/svx/source/svdraw/svdview.cxx
@@ -1074,7 +1074,7 @@ PointerStyle SdrView::GetPreferredPointer(const Point& 
rMousePos, const OutputDe
                 bool b3DObjSelected = false;
                 for (size_t a=0; !b3DObjSelected && a<GetMarkedObjectCount(); 
++a) {
                     SdrObject* pObj = GetMarkedObjectByIndex(a);
-                    if(dynamic_cast<const E3dObject* >(pObj) !=  nullptr)
+                    if(DynCastE3dObject(pObj))
                         b3DObjSelected = true;
                 }
                 // If we have a 3D object, go on despite !IsShearAllowed,
diff --git a/svx/source/unodraw/unoshap3.cxx b/svx/source/unodraw/unoshap3.cxx
index 18f050d5c4af..ea4e90ee46cb 100644
--- a/svx/source/unodraw/unoshap3.cxx
+++ b/svx/source/unodraw/unoshap3.cxx
@@ -117,7 +117,7 @@ void SAL_CALL Svx3DSceneObject::add( const Reference< 
drawing::XShape >& xShape
         throw uno::RuntimeException();
 
     rtl::Reference<SdrObject> pSdrShape = mxPage->CreateSdrObject_( xShape );
-    if( dynamic_cast<const E3dObject* >(pSdrShape.get()) !=  nullptr )
+    if( DynCastE3dObject(pSdrShape.get()) )
     {
         GetSdrObject()->GetSubList()->NbcInsertObject( pSdrShape.get() );
         pShape->Create(pSdrShape.get(), mxPage.get());
@@ -139,7 +139,7 @@ void Svx3DSceneObject::addShape( SvxShape& rShape )
         throw uno::RuntimeException();
 
     rtl::Reference<SdrObject> pSdrShape = mxPage->CreateSdrObject_( &rShape );
-    if( dynamic_cast<const E3dObject* >(pSdrShape.get()) !=  nullptr )
+    if( DynCastE3dObject(pSdrShape.get()) )
     {
         GetSdrObject()->GetSubList()->NbcInsertObject( pSdrShape.get() );
         rShape.Create(pSdrShape.get(), mxPage.get());
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index ccb9ff00306b..f3bac6eb6bb5 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -234,7 +234,7 @@ SwRect SwContourCache::ContourRect( const SwFormat* pFormat,
         }
         else
         {
-            if( dynamic_cast< const E3dObject *>( pObj ) ==  nullptr )
+            if( DynCastE3dObject( pObj ) == nullptr )
             {
                 aPolyPolygon = pObj->TakeXorPoly();
             }

Reply via email to