[Libreoffice-commits] core.git: sd/inc sd/qa sd/source
Stephan Bergmann
sbergman at redhat.com
Tue Nov 15 15:50:56 UTC 2016
sd/inc/sdattr.hxx | 56 +++++++++++++----------------------
sd/qa/unit/dialogs-test.cxx | 14 ++++----
sd/source/ui/dlg/layeroptionsdlg.cxx | 24 +++++++--------
sd/source/ui/view/drviews2.cxx | 52 ++++++++++++++++----------------
4 files changed, 66 insertions(+), 80 deletions(-)
New commits:
commit 40c44ed643acde1d3b9ab0177a09bdb8b3083dea
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Tue Nov 15 16:47:02 2016 +0100
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
diff --git a/sd/inc/sdattr.hxx b/sd/inc/sdattr.hxx
index 710a072..b91d857 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 d5e6cad..37104a4 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 a1e5d7f..636a3a2 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 fb23aee..68f0e38 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 :
More information about the Libreoffice-commits
mailing list