[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