diff options
Diffstat (limited to 'sw/source/core/doc/docbasic.cxx')
-rw-r--r-- | sw/source/core/doc/docbasic.cxx | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/sw/source/core/doc/docbasic.cxx b/sw/source/core/doc/docbasic.cxx index 723cd0881f74..155a28f73d60 100644 --- a/sw/source/core/doc/docbasic.cxx +++ b/sw/source/core/doc/docbasic.cxx @@ -36,16 +36,16 @@ using namespace ::com::sun::star::uno; -static Sequence<Any> *lcl_docbasic_convertArgs( SbxArray& rArgs ) +static std::optional<Sequence<Any>> lcl_docbasic_convertArgs( SbxArray& rArgs ) { - Sequence<Any> *pRet = nullptr; + std::optional<Sequence<Any>> oRet; sal_uInt32 nCount = rArgs.Count(); if( nCount > 1 ) { nCount--; - pRet = new Sequence<Any>( nCount ); - Any *pUnoArgs = pRet->getArray(); + oRet.emplace( nCount ); + Any *pUnoArgs = oRet->getArray(); for( sal_uInt32 i=0; i<nCount; i++ ) { SbxVariable* pVar = rArgs.Get(i + 1); @@ -70,7 +70,7 @@ static Sequence<Any> *lcl_docbasic_convertArgs( SbxArray& rArgs ) } } - return pRet; + return oRet; } void SwDoc::ExecMacro( const SvxMacro& rMacro, OUString* pRet, SbxArray* pArgs ) @@ -99,17 +99,17 @@ void SwDoc::ExecMacro( const SvxMacro& rMacro, OUString* pRet, SbxArray* pArgs ) break; case EXTENDED_STYPE: { - std::unique_ptr<Sequence<Any> > pUnoArgs; + std::optional<Sequence<Any> > oUnoArgs; if( pArgs ) { // better to rename the local function to lcl_translateBasic2Uno and // a much shorter routine can be found in sfx2/source/doc/objmisc.cxx - pUnoArgs.reset(lcl_docbasic_convertArgs( *pArgs )); + oUnoArgs = lcl_docbasic_convertArgs( *pArgs ); } - if (!pUnoArgs) + if (!oUnoArgs) { - pUnoArgs.reset(new Sequence< Any > (0)); + oUnoArgs.emplace(0); } // TODO - return value is not handled @@ -120,7 +120,7 @@ void SwDoc::ExecMacro( const SvxMacro& rMacro, OUString* pRet, SbxArray* pArgs ) SAL_INFO("sw", "SwDoc::ExecMacro URL is " << rMacro.GetMacName() ); mpDocShell->CallXScript( - rMacro.GetMacName(), *pUnoArgs, aRet, aOutArgsIndex, aOutArgs); + rMacro.GetMacName(), *oUnoArgs, aRet, aOutArgsIndex, aOutArgs); break; } @@ -140,10 +140,12 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall case EVENT_OBJECT_INETATTR: if( bCheckPtr ) { - for (const SfxPoolItem* pItem : GetAttrPool().GetItemSurrogates(RES_TXTATR_INETFMT)) + ItemSurrogates aSurrogates; + GetAttrPool().GetItemSurrogates(aSurrogates, RES_TXTATR_INETFMT); + for (const SfxPoolItem* pItem : aSurrogates) { auto pFormatItem = dynamic_cast<const SwFormatINetFormat*>(pItem); - if( pFormatItem && rCallEvent.PTR.pINetAttr == pFormatItem ) + if( pFormatItem && SfxPoolItem::areSame(rCallEvent.PTR.pINetAttr, pFormatItem) ) { bCheckPtr = false; // misuse as a flag break; @@ -157,10 +159,10 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall case EVENT_OBJECT_URLITEM: case EVENT_OBJECT_IMAGE: { - const SwFrameFormat* pFormat = rCallEvent.PTR.pFormat; + const auto pSpz = static_cast<const sw::SpzFrameFormat*>(rCallEvent.PTR.pFormat); if( bCheckPtr ) { - if (GetSpzFrameFormats()->IsAlive(pFormat)) + if (GetSpzFrameFormats()->IsAlive(pSpz)) bCheckPtr = false; // misuse as a flag else // this shouldn't be possible now that SwCallMouseEvent @@ -168,7 +170,7 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall assert(false); } if( !bCheckPtr ) - pTable = &pFormat->GetMacro().GetMacroTable(); + pTable = &pSpz->GetMacro().GetMacroTable(); } break; @@ -177,10 +179,10 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall const IMapObject* pIMapObj = rCallEvent.PTR.IMAP.pIMapObj; if( bCheckPtr ) { - const SwFrameFormat* pFormat = rCallEvent.PTR.IMAP.pFormat; - if (GetSpzFrameFormats()->IsAlive(pFormat)) + const auto pSpz = static_cast<const sw::SpzFrameFormat*>(rCallEvent.PTR.IMAP.pFormat); + if (GetSpzFrameFormats()->IsAlive(pSpz)) { - const ImageMap* pIMap = pFormat->GetURL().GetMap(); + const ImageMap* pIMap = pSpz->GetURL().GetMap(); if (pIMap) { for( size_t nPos = pIMap->GetIMapObjectCount(); nPos; ) @@ -213,7 +215,7 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall } else if( EXTENDED_STYPE == rMacro.GetScriptType() ) { - std::unique_ptr<Sequence<Any> > pUnoArgs(new Sequence<Any>()); + Sequence<Any> aUnoArgs; Any aRet; Sequence< sal_Int16 > aOutArgsIndex; @@ -222,7 +224,7 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCall SAL_INFO("sw", "SwDoc::CallEvent URL is " << rMacro.GetMacName() ); nRet += ERRCODE_NONE == mpDocShell->CallXScript( - rMacro.GetMacName(), *pUnoArgs,aRet, aOutArgsIndex, aOutArgs) ? 1 : 0; + rMacro.GetMacName(), aUnoArgs, aRet, aOutArgsIndex, aOutArgs) ? 1 : 0; } // JavaScript calls are ignored } |