From 6c5c5584eb1adb64fee3aaf76196115ba3812e2c Mon Sep 17 00:00:00 2001 From: Armin Le Grand Date: Tue, 18 Jun 2013 13:10:42 +0000 Subject: [PATCH] Resolves: #i121917# Corrected access to text object (cherry picked from commit 2c9c9923fdf042c41cebaf9a15def7caac86032d) Conflicts: sw/source/core/draw/dcontact.cxx Change-Id: Ia214127ca540c4f4036a0006e7c227649fb39134 --- .../sidebar/possize/PosSizePropertyPanel.cxx | 57 ++++++++++--------- sw/source/core/draw/dcontact.cxx | 20 ++++++- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index 5854e36840d4..20879f1b3d0e 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -150,6 +150,34 @@ void PosSizePropertyPanel::ShowMenu (void) +namespace +{ + bool hasText(const SdrView& rSdrView) + { + const SdrMarkList& rMarkList = rSdrView.GetMarkedObjectList(); + + if(1 == rMarkList.GetMarkCount()) + { + const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); + const SdrObjKind eKind((SdrObjKind)pObj->GetObjIdentifier()); + + if((pObj->GetObjInventor() == SdrInventor) && (OBJ_TEXT == eKind || OBJ_TITLETEXT == eKind || OBJ_OUTLINETEXT == eKind)) + { + const SdrTextObj* pSdrTextObj = dynamic_cast< const SdrTextObj* >(pObj); + + if(pSdrTextObj && pSdrTextObj->HasText()) + { + return true; + } + } + } + + return false; + } +} // end of anonymous namespace + + + void PosSizePropertyPanel::Initialize() { mpFtPosX->SetBackground(Wallpaper()); @@ -222,18 +250,7 @@ void PosSizePropertyPanel::Initialize() if ( mpView != NULL ) { maUIScale = mpView->GetModel()->GetUIScale(); - - const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); - if(1 == rMarkList.GetMarkCount()) - { - const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - const SdrObjKind eKind((SdrObjKind)pObj->GetObjIdentifier()); - - if((pObj->GetObjInventor() == SdrInventor) && (OBJ_TEXT == eKind || OBJ_TITLETEXT == eKind || OBJ_OUTLINETEXT == eKind) && ((SdrTextObj*)pObj)->HasText()) - { - mbAdjustEnabled = true; - } - } + mbAdjustEnabled = hasText(*mpView); } mePoolUnit = maTransfWidthControl.GetCoreMetric(); @@ -701,20 +718,7 @@ void PosSizePropertyPanel::NotifyItemUpdate( if ( mpView == NULL ) return; - const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); - - if(1 == rMarkList.GetMarkCount()) - { - const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - const SdrObjKind eKind((SdrObjKind)pObj->GetObjIdentifier()); - - if((pObj->GetObjInventor() == SdrInventor) && (OBJ_TEXT == eKind || OBJ_TITLETEXT == eKind || OBJ_OUTLINETEXT == eKind) && ((SdrTextObj*)pObj)->HasText()) - mbAdjustEnabled = true; - else - mbAdjustEnabled = false; - } - else - mbAdjustEnabled = false; + mbAdjustEnabled = hasText(*mpView); // Pool unit and dialog unit may have changed, make sure that we // have the current values. @@ -938,6 +942,7 @@ void PosSizePropertyPanel::NotifyItemUpdate( } const sal_Int32 nCombinedContext(maContext.GetCombinedContext_DI()); + const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); switch (rMarkList.GetMarkCount()) { diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index cc6f1a5252b0..602651362f6f 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -2332,8 +2332,16 @@ basegfx::B2DPolyPolygon SwDrawVirtObj::TakeContour() const SdrHdl* SwDrawVirtObj::GetHdl(sal_uInt32 nHdlNum) const { SdrHdl* pHdl = rRefObj.GetHdl(nHdlNum); - Point aP(pHdl->GetPos() + GetOffset()); - pHdl->SetPos(aP); + + if(pHdl) + { + Point aP(pHdl->GetPos() + GetOffset()); + pHdl->SetPos(aP); + } + else + { + OSL_ENSURE(false, "Got no SdrHdl(!)"); + } return pHdl; } @@ -2342,8 +2350,14 @@ SdrHdl* SwDrawVirtObj::GetPlusHdl(const SdrHdl& rHdl, sal_uInt16 nPlNum) const { SdrHdl* pHdl = rRefObj.GetPlusHdl(rHdl, nPlNum); - if (pHdl) + if(pHdl) + { pHdl->SetPos(pHdl->GetPos() + GetOffset()); + } + else + { + OSL_ENSURE(false, "Got no SdrHdl(!)"); + } return pHdl; }