diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-11-15 16:47:02 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-11-15 16:47:02 +0100 |
commit | 40c44ed643acde1d3b9ab0177a09bdb8b3083dea (patch) | |
tree | 0eb0cc0d2cb10a3772d53208347290e9ef1dfa7b /sd | |
parent | d436065bc1c68fc2d90e73253d8c00503c72dfd0 (diff) |
Replace some trivial Sfx*Item derivations with make* functions
...as the trivial derivations (used to offer "convenience ctors") didn't
override Clone(), so -fsanitize=vptr would cause warnings like
> sd/source/ui/dlg/layeroptionsdlg.cxx:42:26: runtime error: downcast of address 0x603001dff830 which does not point to an object of type 'const SdAttrLayerName'
> 0x603001dff830: note: object is of type 'SfxStringItem'
> 61 05 80 1e 70 d6 f7 22 67 7f 00 00 01 00 00 00 4e 6e 00 be 60 f8 df 01 30 60 00 00 02 00 00 00
> ^~~~~~~~~~~~~~~~~~~~~~~
> vptr for 'SfxStringItem'
> #0 0x7f66931db4b0 in SdInsertLayerDlg::SdInsertLayerDlg(vcl::Window*, SfxItemSet const&, bool, rtl::OUString const&) sd/source/ui/dlg/layeroptionsdlg.cxx:42:26
when doing "Insert - Layer..." in Draw.
Change-Id: I54ade09027daecc8bbf6f4789a8b5318bbe8d22d
Diffstat (limited to 'sd')
-rw-r--r-- | sd/inc/sdattr.hxx | 56 | ||||
-rw-r--r-- | sd/qa/unit/dialogs-test.cxx | 14 | ||||
-rw-r--r-- | sd/source/ui/dlg/layeroptionsdlg.cxx | 24 | ||||
-rw-r--r-- | sd/source/ui/view/drviews2.cxx | 52 |
4 files changed, 66 insertions, 80 deletions
diff --git a/sd/inc/sdattr.hxx b/sd/inc/sdattr.hxx index 710a072e6b5d..b91d85798dcf 100644 --- a/sd/inc/sdattr.hxx +++ b/sd/inc/sdattr.hxx @@ -32,54 +32,40 @@ #include "diadef.h" // layer attributes -class SdAttrLayerName : public SfxStringItem +inline SfxStringItem makeSdAttrLayerName( const OUString& aStr ) { -public: - SdAttrLayerName( const OUString& aStr ) : - SfxStringItem( ATTR_LAYER_NAME, aStr ) {} -}; + return SfxStringItem( ATTR_LAYER_NAME, aStr ); +} -class SdAttrLayerTitle : public SfxStringItem +inline SfxStringItem makeSdAttrLayerTitle( const OUString& aStr = OUString() ) { -public: - SdAttrLayerTitle() : SfxStringItem( ATTR_LAYER_TITLE, OUString()) {} - SdAttrLayerTitle( const OUString& aStr ) : SfxStringItem( ATTR_LAYER_TITLE, aStr ) {} -}; + return SfxStringItem( ATTR_LAYER_TITLE, aStr ); +} -class SdAttrLayerDesc : public SfxStringItem +inline SfxStringItem makeSdAttrLayerDesc( const OUString& aStr = OUString() ) { -public: - SdAttrLayerDesc() : SfxStringItem( ATTR_LAYER_DESC, OUString()) {} - SdAttrLayerDesc( const OUString& aStr ) : SfxStringItem( ATTR_LAYER_DESC, aStr ) {} -}; + return SfxStringItem( ATTR_LAYER_DESC, aStr ); +} -class SdAttrLayerVisible : public SfxBoolItem +inline SfxBoolItem makeSdAttrLayerVisible( bool bValue = true ) { -public: - SdAttrLayerVisible( bool bValue = true ) : - SfxBoolItem( ATTR_LAYER_VISIBLE, bValue ) {} -}; + return SfxBoolItem( ATTR_LAYER_VISIBLE, bValue ); +} -class SdAttrLayerPrintable : public SfxBoolItem +inline SfxBoolItem makeSdAttrLayerPrintable( bool bValue = true ) { -public: - SdAttrLayerPrintable( bool bValue = true ) : - SfxBoolItem( ATTR_LAYER_PRINTABLE, bValue ) {} -}; + return SfxBoolItem( ATTR_LAYER_PRINTABLE, bValue ); +} -class SdAttrLayerLocked : public SfxBoolItem +inline SfxBoolItem makeSdAttrLayerLocked( bool bValue = false ) { -public: - SdAttrLayerLocked( bool bValue = false ) : - SfxBoolItem( ATTR_LAYER_LOCKED, bValue ) {} -}; + return SfxBoolItem( ATTR_LAYER_LOCKED, bValue ); +} -class SdAttrLayerThisPage : public SfxBoolItem +inline SfxBoolItem makeSdAttrLayerThisPage() { -public: - SdAttrLayerThisPage( bool bValue = false ) : - SfxBoolItem( ATTR_LAYER_THISPAGE, bValue ) {} -}; + return SfxBoolItem( ATTR_LAYER_THISPAGE, false ); +} class DiaEffectItem : public SfxEnumItem { diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx index d5e6cadbf2ea..37104a4ba1dd 100644 --- a/sd/qa/unit/dialogs-test.cxx +++ b/sd/qa/unit/dialogs-test.cxx @@ -363,13 +363,13 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID) CPPUNIT_ASSERT(pDrawDoc); SfxItemSet aNewAttr(pDrawDoc->GetItemPool(), ATTR_LAYER_START, ATTR_LAYER_END); const OUString aLayerName = SD_RESSTR(STR_LAYER); // + OUString::number(2); - aNewAttr.Put(SdAttrLayerName(aLayerName)); - aNewAttr.Put(SdAttrLayerTitle()); - aNewAttr.Put(SdAttrLayerDesc()); - aNewAttr.Put(SdAttrLayerVisible()); - aNewAttr.Put(SdAttrLayerPrintable()); - aNewAttr.Put(SdAttrLayerLocked()); - aNewAttr.Put(SdAttrLayerThisPage()); + aNewAttr.Put(makeSdAttrLayerName(aLayerName)); + aNewAttr.Put(makeSdAttrLayerTitle()); + aNewAttr.Put(makeSdAttrLayerDesc()); + aNewAttr.Put(makeSdAttrLayerVisible()); + aNewAttr.Put(makeSdAttrLayerPrintable()); + aNewAttr.Put(makeSdAttrLayerLocked()); + aNewAttr.Put(makeSdAttrLayerThisPage()); pRetval = getSdAbstractDialogFactory()->CreateSdInsertLayerDlg( getViewShell()->GetActiveWindow(), aNewAttr, diff --git a/sd/source/ui/dlg/layeroptionsdlg.cxx b/sd/source/ui/dlg/layeroptionsdlg.cxx index a1e5d7f1a03b..636a3a2c059d 100644 --- a/sd/source/ui/dlg/layeroptionsdlg.cxx +++ b/sd/source/ui/dlg/layeroptionsdlg.cxx @@ -39,13 +39,13 @@ SdInsertLayerDlg::SdInsertLayerDlg( vcl::Window* pWindow, const SfxItemSet& rInA get(m_pCbxPrintable, "printable"); get(m_pCbxLocked, "locked"); - m_pEdtName->SetText( static_cast<const SdAttrLayerName&>( mrOutAttrs.Get( ATTR_LAYER_NAME ) ).GetValue() ); - m_pEdtTitle->SetText( static_cast<const SdAttrLayerTitle&>( mrOutAttrs.Get( ATTR_LAYER_TITLE ) ).GetValue() ); - m_pEdtDesc->SetText( static_cast<const SdAttrLayerDesc&>( mrOutAttrs.Get( ATTR_LAYER_DESC ) ).GetValue() ); + m_pEdtName->SetText( static_cast<const SfxStringItem&>( mrOutAttrs.Get( ATTR_LAYER_NAME ) ).GetValue() ); + m_pEdtTitle->SetText( static_cast<const SfxStringItem&>( mrOutAttrs.Get( ATTR_LAYER_TITLE ) ).GetValue() ); + m_pEdtDesc->SetText( static_cast<const SfxStringItem&>( mrOutAttrs.Get( ATTR_LAYER_DESC ) ).GetValue() ); m_pEdtDesc->set_height_request(4 * m_pEdtDesc->GetTextHeight()); - m_pCbxVisible->Check( static_cast<const SdAttrLayerVisible&>( mrOutAttrs.Get( ATTR_LAYER_VISIBLE ) ).GetValue() ); - m_pCbxPrintable->Check( static_cast<const SdAttrLayerPrintable&>( mrOutAttrs.Get( ATTR_LAYER_PRINTABLE ) ).GetValue() ); - m_pCbxLocked->Check( static_cast<const SdAttrLayerLocked&>( mrOutAttrs.Get( ATTR_LAYER_LOCKED ) ).GetValue() ); + m_pCbxVisible->Check( static_cast<const SfxBoolItem&>( mrOutAttrs.Get( ATTR_LAYER_VISIBLE ) ).GetValue() ); + m_pCbxPrintable->Check( static_cast<const SfxBoolItem&>( mrOutAttrs.Get( ATTR_LAYER_PRINTABLE ) ).GetValue() ); + m_pCbxLocked->Check( static_cast<const SfxBoolItem&>( mrOutAttrs.Get( ATTR_LAYER_LOCKED ) ).GetValue() ); get<VclContainer>("nameframe")->Enable(bDeletable); } @@ -68,12 +68,12 @@ void SdInsertLayerDlg::dispose() void SdInsertLayerDlg::GetAttr( SfxItemSet& rAttrs ) { - rAttrs.Put( SdAttrLayerName( m_pEdtName->GetText() ) ); - rAttrs.Put( SdAttrLayerTitle( m_pEdtTitle->GetText() ) ); - rAttrs.Put( SdAttrLayerDesc( m_pEdtDesc->GetText() ) ); - rAttrs.Put( SdAttrLayerVisible( m_pCbxVisible->IsChecked() ) ); - rAttrs.Put( SdAttrLayerPrintable( m_pCbxPrintable->IsChecked() ) ); - rAttrs.Put( SdAttrLayerLocked( m_pCbxLocked->IsChecked() ) ); + rAttrs.Put( makeSdAttrLayerName( m_pEdtName->GetText() ) ); + rAttrs.Put( makeSdAttrLayerTitle( m_pEdtTitle->GetText() ) ); + rAttrs.Put( makeSdAttrLayerDesc( m_pEdtDesc->GetText() ) ); + rAttrs.Put( makeSdAttrLayerVisible( m_pCbxVisible->IsChecked() ) ); + rAttrs.Put( makeSdAttrLayerPrintable( m_pCbxPrintable->IsChecked() ) ); + rAttrs.Put( makeSdAttrLayerLocked( m_pCbxLocked->IsChecked() ) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index fb23aee39eca..68f0e38f5848 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -1388,13 +1388,13 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) { SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END ); - aNewAttr.Put( SdAttrLayerName( aLayerName ) ); - aNewAttr.Put( SdAttrLayerTitle() ); - aNewAttr.Put( SdAttrLayerDesc() ); - aNewAttr.Put( SdAttrLayerVisible() ); - aNewAttr.Put( SdAttrLayerPrintable() ); - aNewAttr.Put( SdAttrLayerLocked() ); - aNewAttr.Put( SdAttrLayerThisPage() ); + aNewAttr.Put( makeSdAttrLayerName( aLayerName ) ); + aNewAttr.Put( makeSdAttrLayerTitle() ); + aNewAttr.Put( makeSdAttrLayerDesc() ); + aNewAttr.Put( makeSdAttrLayerVisible() ); + aNewAttr.Put( makeSdAttrLayerPrintable() ); + aNewAttr.Put( makeSdAttrLayerLocked() ); + aNewAttr.Put( makeSdAttrLayerThisPage() ); SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); ScopedVclPtr<AbstractSdInsertLayerDlg> pDlg(pFact ? pFact->CreateSdInsertLayerDlg(GetActiveWindow(), aNewAttr, true, SD_RESSTR(STR_INSERTLAYER)) : nullptr); @@ -1407,7 +1407,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) while( bLoop && pDlg->Execute() == RET_OK ) { pDlg->GetAttr( aNewAttr ); - aLayerName = static_cast<const SdAttrLayerName &>( aNewAttr.Get (ATTR_LAYER_NAME)).GetValue (); + aLayerName = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_NAME)).GetValue (); if( rLayerAdmin.GetLayer( aLayerName, false ) || aLayerName.isEmpty() ) @@ -1431,11 +1431,11 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) } else { - aLayerTitle = static_cast<const SdAttrLayerTitle &>( aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue (); - aLayerDesc = static_cast<const SdAttrLayerDesc &>( aNewAttr.Get (ATTR_LAYER_DESC)).GetValue (); - bIsVisible = static_cast<const SdAttrLayerVisible &>( aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue (); - bIsLocked = static_cast<const SdAttrLayerLocked &>( aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ; - bIsPrintable = static_cast<const SdAttrLayerPrintable &>( aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ; + aLayerTitle = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue (); + aLayerDesc = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_DESC)).GetValue (); + bIsVisible = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue (); + bIsLocked = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ; + bIsPrintable = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ; } } } @@ -1556,13 +1556,13 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) { SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END ); - aNewAttr.Put( SdAttrLayerName( aLayerName ) ); - aNewAttr.Put( SdAttrLayerTitle( aLayerTitle ) ); - aNewAttr.Put( SdAttrLayerDesc( aLayerDesc ) ); - aNewAttr.Put( SdAttrLayerVisible( bIsVisible ) ); - aNewAttr.Put( SdAttrLayerLocked( bIsLocked ) ); - aNewAttr.Put( SdAttrLayerPrintable( bIsPrintable ) ); - aNewAttr.Put( SdAttrLayerThisPage() ); + aNewAttr.Put( makeSdAttrLayerName( aLayerName ) ); + aNewAttr.Put( makeSdAttrLayerTitle( aLayerTitle ) ); + aNewAttr.Put( makeSdAttrLayerDesc( aLayerDesc ) ); + aNewAttr.Put( makeSdAttrLayerVisible( bIsVisible ) ); + aNewAttr.Put( makeSdAttrLayerLocked( bIsLocked ) ); + aNewAttr.Put( makeSdAttrLayerPrintable( bIsPrintable ) ); + aNewAttr.Put( makeSdAttrLayerThisPage() ); SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); ScopedVclPtr<AbstractSdInsertLayerDlg> pDlg(pFact ? pFact->CreateSdInsertLayerDlg(GetActiveWindow(), aNewAttr, bDelete, SD_RESSTR(STR_MODIFYLAYER)) : nullptr); @@ -1576,7 +1576,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) while( bLoop && ( (nRet = pDlg->Execute()) == RET_OK ) ) { pDlg->GetAttr( aNewAttr ); - aLayerName = static_cast<const SdAttrLayerName &>( aNewAttr.Get (ATTR_LAYER_NAME)).GetValue (); + aLayerName = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_NAME)).GetValue (); if( (rLayerAdmin.GetLayer( aLayerName, false ) && aLayerName != aOldLayerName) || aLayerName.isEmpty() ) @@ -1594,11 +1594,11 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) switch (nRet) { case RET_OK : - aLayerTitle = static_cast<const SdAttrLayerTitle &>( aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue (); - aLayerDesc = static_cast<const SdAttrLayerDesc &>( aNewAttr.Get (ATTR_LAYER_DESC)).GetValue (); - bIsVisible = static_cast<const SdAttrLayerVisible &>( aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue (); - bIsLocked = static_cast<const SdAttrLayerLocked &>( aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue (); - bIsPrintable = static_cast<const SdAttrLayerLocked &>( aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue (); + aLayerTitle = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue (); + aLayerDesc = static_cast<const SfxStringItem &>( aNewAttr.Get (ATTR_LAYER_DESC)).GetValue (); + bIsVisible = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue (); + bIsLocked = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue (); + bIsPrintable = static_cast<const SfxBoolItem &>( aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue (); break; default : |