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(); }