diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-01-25 12:59:53 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-01-27 17:19:26 +0100 |
commit | c95d91ee35ca09379a8a1d415ae77716ddeadaac (patch) | |
tree | 370b0ad6832f3aca2ee0e2ef375bb6f953e5d360 /svx | |
parent | 2d8f17565ebe867210f5769851d91b2e7b612a8f (diff) |
improve subtyping when dealing with tools::WeakReference
tweak the templating to make it easier to declare a WeakReference that
points to a subclass for a weak-capable class.
Which lets us declare some fields with more specific types, and dump a
lot of unnecessary casting.
And make WeakBase be inherited from virtually, so we don't end
up with weird states where two weak refernces could point to two
different parts of the same object.
Change-Id: I3213ea27e087038457b0761b5171c7bce96e71f3
Reviewed-on: https://gerrit.libreoffice.org/48650
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx | 2 | ||||
-rw-r--r-- | svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx | 2 | ||||
-rw-r--r-- | svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx | 2 | ||||
-rw-r--r-- | svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdedxv.cxx | 57 | ||||
-rw-r--r-- | svx/source/svdraw/svdetc.cxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdoutl.cxx | 7 | ||||
-rw-r--r-- | svx/source/svdraw/svdpage.cxx | 1 | ||||
-rw-r--r-- | svx/source/table/tablecontroller.cxx | 54 | ||||
-rw-r--r-- | svx/source/table/tableundo.cxx | 4 | ||||
-rw-r--r-- | svx/source/table/tableundo.hxx | 2 |
11 files changed, 61 insertions, 74 deletions
diff --git a/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx index 4658aca12515..98b74e69e6e3 100644 --- a/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx @@ -37,7 +37,7 @@ namespace drawinglayer class SdrOleContentPrimitive2D : public BufferedDecompositionPrimitive2D { private: - tools::WeakReference<SdrObject> mpSdrOle2Obj; + tools::WeakReference<SdrOle2Obj> mpSdrOle2Obj; basegfx::B2DHomMatrix maObjectTransform; // #i104867# The GraphicVersion number to identify in operator== if diff --git a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx index 3da7cc1b92ea..76327e5096ad 100644 --- a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx @@ -84,7 +84,7 @@ namespace drawinglayer const OutlinerParaObject& rOutlinerParaObjectPtr); // get data - const SdrText* getSdrText() const { return mrSdrText.get(); } + const SdrText* getSdrText() const; const OutlinerParaObject& getOutlinerParaObject() const { return maOutlinerParaObject; } // compare operator diff --git a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx index fae9ccfdfc1e..a22b9172dbfb 100644 --- a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx +++ b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx @@ -35,7 +35,7 @@ namespace drawinglayer { void SdrOleContentPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const { - const SdrOle2Obj* pSource = (mpSdrOle2Obj.is() ? static_cast< SdrOle2Obj* >(mpSdrOle2Obj.get()) : nullptr); + const SdrOle2Obj* pSource = mpSdrOle2Obj.get(); bool bScaleContent(false); Graphic aGraphic; diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx index 176eb95e6d86..0cdd5d0216d2 100644 --- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx +++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx @@ -119,6 +119,8 @@ namespace drawinglayer || rETO.HasField(SvxAuthorField::StaticClassId()); } + const SdrText* SdrTextPrimitive2D::getSdrText() const { return mrSdrText.get(); } + bool SdrTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const { if(BufferedDecompositionPrimitive2D::operator==(rPrimitive)) diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 87454500d904..734008157212 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -241,7 +241,7 @@ void SdrObjEditView::ModelHasChanged() if (mxTextEditObj.is() && !mxTextEditObj->IsInserted()) SdrEndTextEdit(); // object deleted // TextEditObj changed? if (IsTextEdit()) { - SdrTextObj* pTextObj=dynamic_cast<SdrTextObj*>( mxTextEditObj.get() ); + SdrTextObj* pTextObj= mxTextEditObj.get(); if (pTextObj!=nullptr) { sal_uIntPtr nOutlViewCnt=pTextEditOutliner->GetViewCount(); bool bAreaChg=false; @@ -699,7 +699,7 @@ void SdrObjEditView::TextEditDrawing(SdrPaintWindow& rPaintWindow) const void SdrObjEditView::ImpPaintOutlinerView(OutlinerView& rOutlView, const tools::Rectangle& rRect, OutputDevice& rTargetDevice) const { - const SdrTextObj* pText = dynamic_cast<SdrTextObj*>( GetTextEditObject() ); + const SdrTextObj* pText = GetTextEditObject(); bool bTextFrame(pText && pText->IsTextFrame()); bool bFitToSize(pTextEditOutliner->GetControlWord() & EEControlBits::STRETCHING); bool bModifyMerk(pTextEditOutliner->IsModified()); @@ -764,7 +764,7 @@ void SdrObjEditView::ImpInvalidateOutlinerView(OutlinerView const & rOutlView) c if(pWin) { - const SdrTextObj* pText = dynamic_cast<SdrTextObj*>( GetTextEditObject() ); + const SdrTextObj* pText = GetTextEditObject(); bool bTextFrame(pText && pText->IsTextFrame()); bool bFitToSize(pText && pText->IsFitToSize()); @@ -811,7 +811,7 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie { // background Color aBackground(GetTextEditBackgroundColor(*this)); - SdrTextObj* pText = dynamic_cast< SdrTextObj * >( mxTextEditObj.get() ); + SdrTextObj* pText = mxTextEditObj.get(); bool bTextFrame=pText!=nullptr && pText->IsTextFrame(); bool bContourFrame=pText!=nullptr && pText->IsContourTextFrame(); // create OutlinerView @@ -863,7 +863,7 @@ IMPL_LINK(SdrObjEditView,ImpOutlinerStatusEventHdl, EditStatus&, rEditStat, void { if(pTextEditOutliner ) { - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj * >( mxTextEditObj.get() ); + SdrTextObj* pTextObj = mxTextEditObj.get(); if( pTextObj ) { pTextObj->onEditOutlinerStatusEvent( &rEditStat ); @@ -875,7 +875,7 @@ void SdrObjEditView::ImpChainingEventHdl() { if(pTextEditOutliner ) { - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj * >( mxTextEditObj.get() ); + SdrTextObj* pTextObj = mxTextEditObj.get(); OutlinerView* pOLV = GetTextEditOutlinerView(); if( pTextObj && pOLV) { @@ -935,7 +935,7 @@ void SdrObjEditView::ImpChainingEventHdl() IMPL_LINK_NOARG(SdrObjEditView,ImpAfterCutOrPasteChainingEventHdl, LinkParamNone*, void) { - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj * >( GetTextEditObject()); + SdrTextObj* pTextObj = GetTextEditObject(); if (!pTextObj) return; ImpChainingEventHdl(); @@ -948,7 +948,7 @@ void SdrObjEditView::ImpMoveCursorAfterChainingEvent(TextChainCursorManager *pCu if (!mxTextEditObj.is() || !pCursorManager) return; - SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>(mxTextEditObj.get()); + SdrTextObj* pTextObj = mxTextEditObj.get(); // Check if it has links to move it to if (!pTextObj || !pTextObj->IsChainable()) @@ -971,7 +971,7 @@ IMPL_LINK(SdrObjEditView,ImpOutlinerCalcFieldValueHdl,EditFieldInfo*,pFI,void) bool bOk=false; OUString& rStr=pFI->GetRepresentation(); rStr.clear(); - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( mxTextEditObj.get() ); + SdrTextObj* pTextObj = mxTextEditObj.get(); if (pTextObj!=nullptr) { Color* pTxtCol=nullptr; Color* pFldCol=nullptr; @@ -1012,7 +1012,7 @@ SdrUndoManager* SdrObjEditView::getSdrUndoManagerForEnhancedTextEdit() const } bool SdrObjEditView::SdrBeginTextEdit( - SdrObject* pObj, SdrPageView* pPV, vcl::Window* pWin, + SdrObject* pObj_, SdrPageView* pPV, vcl::Window* pWin, bool bIsNewObj, SdrOutliner* pGivenOutliner, OutlinerView* pGivenOutlinerView, bool bDontDeleteOutliner, bool bOnlyOneView, @@ -1022,7 +1022,8 @@ bool SdrObjEditView::SdrBeginTextEdit( // FIXME this encourages all sorts of bad habits and should be removed SdrEndTextEdit(); - if( dynamic_cast< SdrTextObj* >( pObj ) == nullptr ) + SdrTextObj* pObj = dynamic_cast< SdrTextObj* >( pObj_ ); + if( !pObj ) return false; // currently only possible with text objects if(bGrabFocus && pWin) @@ -1037,14 +1038,8 @@ bool SdrObjEditView::SdrBeginTextEdit( const sal_uInt32 nWinCount(PaintWindowCount()); sal_uInt32 i; bool bBrk(false); - // break, when no object given - if(!pObj) - { - bBrk = true; - } - - if(!bBrk && !pWin) + if(!pWin) { for(i = 0; i < nWinCount && !pWin; i++) { @@ -1074,13 +1069,10 @@ bool SdrObjEditView::SdrBeginTextEdit( } } - if(pObj && pPV) + // no TextEdit on objects in locked Layer + if(pPV && pPV->GetLockedLayers().IsSet(pObj->GetLayer())) { - // no TextEdit on objects in locked Layer - if(pPV->GetLockedLayers().IsSet(pObj->GetLayer())) - { - bBrk = true; - } + bBrk = true; } if(pTextEditOutliner) @@ -1113,11 +1105,11 @@ bool SdrObjEditView::SdrBeginTextEdit( // It is just necessary to make the visualized page known. Set it. pTextEditOutliner->setVisualizedPage(pPV->GetPage()); - pTextEditOutliner->SetTextObjNoInit( dynamic_cast< SdrTextObj* >( mxTextEditObj.get() ) ); + pTextEditOutliner->SetTextObjNoInit( mxTextEditObj.get() ); if(mxTextEditObj->BegTextEdit(*pTextEditOutliner)) { - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( mxTextEditObj.get() ); + SdrTextObj* pTextObj = mxTextEditObj.get(); DBG_ASSERT( pTextObj, "svx::SdrObjEditView::BegTextEdit(), no text object?" ); if( !pTextObj ) return false; @@ -1179,7 +1171,7 @@ bool SdrObjEditView::SdrBeginTextEdit( const SvtOptionsDrawinglayer aSvtOptionsDrawinglayer; const Color aHilightColor(aSvtOptionsDrawinglayer.getHilightColor()); - const SdrTextObj* pText = dynamic_cast<SdrTextObj*>(GetTextEditObject()); + const SdrTextObj* pText = GetTextEditObject(); const bool bTextFrame(pText && pText->IsTextFrame()); const bool bFitToSize(pTextEditOutliner->GetControlWord() & EEControlBits::STRETCHING); const bool bVisualizeSurroundingFrame(bTextFrame && !bFitToSize); @@ -1358,7 +1350,7 @@ bool SdrObjEditView::SdrBeginTextEdit( SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) { SdrEndTextEditKind eRet=SdrEndTextEditKind::Unchanged; - SdrTextObj* pTEObj = dynamic_cast< SdrTextObj* >( mxTextEditObj.get() ); + SdrTextObj* pTEObj = mxTextEditObj.get(); vcl::Window* pTEWin =pTextEditWin; SdrOutliner* pTEOutliner =pTextEditOutliner; OutlinerView* pTEOutlinerView=pTextEditOutlinerView; @@ -1700,7 +1692,7 @@ bool SdrObjEditView::IsTextEditFrameHit(const Point& rHit) const bool bOk=false; if(mxTextEditObj.is()) { - SdrTextObj* pText= dynamic_cast<SdrTextObj*>(mxTextEditObj.get()); + SdrTextObj* pText = mxTextEditObj.get(); OutlinerView* pOLV=pTextEditOutliner->GetView(0); if( pOLV ) { @@ -1729,10 +1721,7 @@ TextChainCursorManager *SdrObjEditView::ImpHandleMotionThroughBoxesKeyInput( { *bOutHandled = false; - if (!mxTextEditObj.is()) - return nullptr; - - SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>(mxTextEditObj.get()); + SdrTextObj* pTextObj = mxTextEditObj.get(); if (!pTextObj) return nullptr; @@ -2117,7 +2106,7 @@ bool SdrObjEditView::SetAttributes(const SfxItemSet& rSet, bool bReplaceAll) // multiple portions exist with multiple formats. If a OutlinerParaObject // really exists and needs to be rescued is evaluated in the undo // implementation itself. - bool bRescueText = dynamic_cast< SdrTextObj* >(mxTextEditObj.get()); + bool bRescueText = mxTextEditObj.get(); AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoAttrObject(*mxTextEditObj.get(),false,!bNoEEItems || bRescueText)); EndUndo(); diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx index 807e31fc6da9..aa92b123be97 100644 --- a/svx/source/svdraw/svdetc.cxx +++ b/svx/source/svdraw/svdetc.cxx @@ -736,7 +736,7 @@ Color GetTextEditBackgroundColor(const SdrObjEditView& rView) if(!rStyleSettings.GetHighContrastMode()) { bool bFound(false); - SdrTextObj* pText = dynamic_cast< SdrTextObj * >(rView.GetTextEditObject()); + SdrTextObj* pText = rView.GetTextEditObject(); if(pText && pText->IsClosedObj()) { diff --git a/svx/source/svdraw/svdoutl.cxx b/svx/source/svdraw/svdoutl.cxx index 580dee39b174..5ed3a5d0a761 100644 --- a/svx/source/svdraw/svdoutl.cxx +++ b/svx/source/svdraw/svdoutl.cxx @@ -79,7 +79,7 @@ OUString SdrOutliner::CalcFieldValue(const SvxFieldItem& rField, sal_Int32 nPara OUString aRet; if(mpTextObj.is()) - bOk = static_cast< SdrTextObj* >( mpTextObj.get())->CalcFieldValue(rField, nPara, nPos, false, rpTxtColor, rpFldColor, aRet); + bOk = mpTextObj->CalcFieldValue(rField, nPara, nPos, false, rpTxtColor, rpFldColor, aRet); if (!bOk) aRet = Outliner::CalcFieldValue(rField, nPara, nPos, rpTxtColor, rpFldColor); @@ -89,10 +89,7 @@ OUString SdrOutliner::CalcFieldValue(const SvxFieldItem& rField, sal_Int32 nPara const SdrTextObj* SdrOutliner::GetTextObj() const { - if( mpTextObj.is() ) - return static_cast< SdrTextObj* >( mpTextObj.get() ); - else - return nullptr; + return mpTextObj.get(); } bool SdrOutliner::hasEditViewCallbacks() const diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx index 2251699472eb..9ebaec292bc5 100644 --- a/svx/source/svdraw/svdpage.cxx +++ b/svx/source/svdraw/svdpage.cxx @@ -1169,7 +1169,6 @@ SdrPage::SdrPage(SdrModel& rNewModel, bool bMasterPage) SdrPage::SdrPage(const SdrPage& rSrcPage) : SdrObjList(rSrcPage.pModel, this), - tools::WeakBase< SdrPage >(), mpViewContact(nullptr), mnWidth(rSrcPage.mnWidth), mnHeight(rSrcPage.mnHeight), diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx index 59dec64df181..f683569df3df 100644 --- a/svx/source/table/tablecontroller.cxx +++ b/svx/source/table/tablecontroller.cxx @@ -174,10 +174,10 @@ SvxTableController::SvxTableController( SdrObjEditView* pView, const SdrObject* if( mxTableObj.is() ) { - static_cast< const SdrTableObj* >( pObj )->getActiveCellPos( maCursorFirstPos ); + mxTableObj->getActiveCellPos( maCursorFirstPos ); maCursorLastPos = maCursorFirstPos; - Reference< XTable > xTable( static_cast< const SdrTableObj* >( pObj )->getTable() ); + Reference< XTable > xTable( mxTableObj->getTable() ); if( xTable.is() ) { mxModifyListener = new SvxTableControllerModifyListener( this ); @@ -198,7 +198,7 @@ SvxTableController::~SvxTableController() if( mxModifyListener.is() && mxTableObj.get() ) { - Reference< XTable > xTable( static_cast< SdrTableObj* >( mxTableObj.get() )->getTable() ); + Reference< XTable > xTable( mxTableObj->getTable() ); if( xTable.is() ) { xTable->removeModifyListener( mxModifyListener ); @@ -273,7 +273,7 @@ bool SvxTableController::onMouseButtonDown(const MouseEvent& rMEvt, vcl::Window* if( !rMEvt.IsRight() && mpView->PickAnything(rMEvt,SdrMouseEventKind::BUTTONDOWN, aVEvt) == SdrHitKind::Handle ) return false; - TableHitKind eHit = static_cast< SdrTableObj* >(mxTableObj.get())->CheckTableHit(pixelToLogic(rMEvt.GetPosPixel(), pWindow), maMouseDownPos.mnCol, maMouseDownPos.mnRow); + TableHitKind eHit = mxTableObj->CheckTableHit(pixelToLogic(rMEvt.GetPosPixel(), pWindow), maMouseDownPos.mnCol, maMouseDownPos.mnRow); mbLeftButtonDown = (rMEvt.GetClicks() == 1) && rMEvt.IsLeft(); @@ -299,7 +299,7 @@ bool SvxTableController::onMouseButtonDown(const MouseEvent& rMEvt, vcl::Window* } else { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pWindow || !pTableObj || eHit == TableHitKind::NONE) { @@ -350,7 +350,7 @@ bool SvxTableController::onMouseMove(const MouseEvent& rMEvt, vcl::Window* pWind if( !checkTableObject() ) return false; - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); CellPos aPos; if (mbLeftButtonDown && pTableObj && pTableObj->CheckTableHit(pixelToLogic(rMEvt.GetPosPixel(), pWindow), aPos.mnCol, aPos.mnRow ) != TableHitKind::NONE) { @@ -380,7 +380,7 @@ void SvxTableController::onSelectionHasChanged() { bool bSelected = false; - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj && pTableObj->IsTextEditActive() ) { pTableObj->getActiveCellPos( maCursorFirstPos ); @@ -512,7 +512,7 @@ void SvxTableController::GetState( SfxItemSet& rSet ) void SvxTableController::onInsert( sal_uInt16 nSId, const SfxItemSet* pArgs ) { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pTableObj ) return; @@ -788,7 +788,7 @@ void SvxTableController::onInsert( sal_uInt16 nSId, const SfxItemSet* pArgs ) void SvxTableController::onDelete( sal_uInt16 nSId ) { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pTableObj ) return; @@ -893,7 +893,7 @@ namespace void SvxTableController::onFormatTable( SfxRequest const & rReq ) { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pTableObj ) return; @@ -1033,7 +1033,7 @@ void SvxTableController::Execute( SfxRequest& rReq ) void SvxTableController::SetTableStyle( const SfxItemSet* pArgs ) { - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); SdrModel* pModel = pTableObj ? pTableObj->GetModel() : nullptr; if( !pTableObj || !pModel || !pArgs || (SfxItemState::SET != pArgs->GetItemState(SID_TABLE_STYLE, false)) ) @@ -1116,7 +1116,7 @@ void SvxTableController::SetTableStyle( const SfxItemSet* pArgs ) void SvxTableController::SetTableStyleSettings( const SfxItemSet* pArgs ) { - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); SdrModel* pModel = pTableObj ? pTableObj->GetModel() : nullptr; if( !pTableObj || !pModel ) @@ -1163,7 +1163,7 @@ void SvxTableController::SetTableStyleSettings( const SfxItemSet* pArgs ) void SvxTableController::SetVertical( sal_uInt16 nSId ) { - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( !mxTable.is() || !pTableObj ) return; @@ -1222,7 +1222,7 @@ void SvxTableController::MergeMarkedCells() { CellPos aStart, aEnd; getSelectedCells( aStart, aEnd ); - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj ) { if( pTableObj->IsTextEditActive() ) @@ -1256,7 +1256,7 @@ void SvxTableController::SplitMarkedCells() const sal_Int32 nColCount = mxTable->getColumnCount(); - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj ) { if( pTableObj->IsTextEditActive() ) @@ -1293,7 +1293,7 @@ void SvxTableController::SplitMarkedCells() void SvxTableController::DistributeColumns() { - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj ) { const bool bUndo = mpModel && mpModel->IsUndoEnabled(); @@ -1314,7 +1314,7 @@ void SvxTableController::DistributeColumns() void SvxTableController::DistributeRows() { - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj ) { const bool bUndo = mpModel && mpModel->IsUndoEnabled(); @@ -1456,7 +1456,7 @@ SvxTableController::TblAction SvxTableController::getKeyboardAction(const KeyEve TblAction nAction = TblAction::HandledByView; - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pTableObj ) return nAction; @@ -1637,7 +1637,7 @@ SvxTableController::TblAction SvxTableController::getKeyboardAction(const KeyEve bool SvxTableController::executeAction(TblAction nAction, bool bSelect, vcl::Window* pWindow) { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( !pTableObj ) return false; @@ -1746,14 +1746,14 @@ bool SvxTableController::executeAction(TblAction nAction, bool bSelect, vcl::Win void SvxTableController::gotoCell(const CellPos& rPos, bool bSelect, vcl::Window* pWindow, TblAction nAction /*= TblAction::NONE */) { - if( mxTableObj.is() && static_cast<SdrTableObj*>(mxTableObj.get())->IsTextEditActive() ) + if( mxTableObj.is() && mxTableObj->IsTextEditActive() ) mpView->SdrEndTextEdit(true); if( bSelect ) { maCursorLastPos = rPos; if( mxTableObj.is() ) - static_cast< SdrTableObj* >( mxTableObj.get() )->setActiveCell( rPos ); + mxTableObj->setActiveCell( rPos ); if( !mbCellSelectionMode ) { @@ -1857,7 +1857,7 @@ void SvxTableController::EditCell(const CellPos& rPos, vcl::Window* pWindow, Tbl { SdrPageView* pPV = mpView->GetSdrPageView(); - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj && pTableObj->GetPage() == pPV->GetPage() ) { bool bEmptyOutliner = false; @@ -2123,7 +2123,7 @@ void SvxTableController::updateSelectionOverlay() destroySelectionOverlay(); if( mbCellSelectionMode ) { - sdr::table::SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); if( pTableObj ) { sdr::overlay::OverlayObjectCell::RangeVector aRanges; @@ -2595,7 +2595,7 @@ bool SvxTableController::GetMarkedObjModel( SdrPage* pNewPage ) { if( mxTableObj.is() && mbCellSelectionMode && pNewPage ) try { - sdr::table::SdrTableObj& rTableObj = *static_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + sdr::table::SdrTableObj& rTableObj = *mxTableObj.get(); CellPos aStart, aEnd; getSelectedCells( aStart, aEnd ); @@ -3084,7 +3084,7 @@ bool SvxTableController::isColumnSelected( sal_Int32 nColumn ) bool SvxTableController::isRowHeader() { - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); SdrModel* pModel = pTableObj ? pTableObj->GetModel() : nullptr; if( !pTableObj || !pModel ) @@ -3097,7 +3097,7 @@ bool SvxTableController::isRowHeader() bool SvxTableController::isColumnHeader() { - SdrTableObj* pTableObj = dynamic_cast< sdr::table::SdrTableObj* >( mxTableObj.get() ); + SdrTableObj* pTableObj = mxTableObj.get(); SdrModel* pModel = pTableObj ? pTableObj->GetModel() : nullptr; if( !pTableObj || !pModel ) @@ -3113,7 +3113,7 @@ bool SvxTableController::setCursorLogicPosition(const Point& rPosition, bool bPo if (mxTableObj->GetObjIdentifier() != OBJ_TABLE) return false; - SdrTableObj* pTableObj = static_cast<SdrTableObj*>(mxTableObj.get()); + SdrTableObj* pTableObj = mxTableObj.get(); CellPos aCellPos; if (pTableObj->CheckTableHit(rPosition, aCellPos.mnCol, aCellPos.mnRow) != TableHitKind::NONE) { diff --git a/svx/source/table/tableundo.cxx b/svx/source/table/tableundo.cxx index 27c93bd4b158..9a14948b1dfe 100644 --- a/svx/source/table/tableundo.cxx +++ b/svx/source/table/tableundo.cxx @@ -499,7 +499,7 @@ void TableStyleUndo::Redo() void TableStyleUndo::setData( const Data& rData ) { - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxObjRef.get() ); + SdrTableObj* pTableObj = mxObjRef.get(); if( pTableObj ) { pTableObj->setTableStyle( rData.mxTableStyle ); @@ -509,7 +509,7 @@ void TableStyleUndo::setData( const Data& rData ) void TableStyleUndo::getData( Data& rData ) { - SdrTableObj* pTableObj = dynamic_cast< SdrTableObj* >( mxObjRef.get() ); + SdrTableObj* pTableObj = mxObjRef.get(); if( pTableObj ) { rData.maSettings = pTableObj->getTableStyleSettings(); diff --git a/svx/source/table/tableundo.hxx b/svx/source/table/tableundo.hxx index dda6c8b57e91..60d661878a70 100644 --- a/svx/source/table/tableundo.hxx +++ b/svx/source/table/tableundo.hxx @@ -237,7 +237,7 @@ public: virtual void Redo() override; private: - tools::WeakReference<SdrObject> mxObjRef; + tools::WeakReference<SdrTableObj> mxObjRef; struct Data { |