[Libreoffice-commits] core.git: 9 commits - comphelper/source framework/inc framework/source include/comphelper include/svx sc/inc sc/source sot/source svx/source sw/source

Noel Grandin noel.grandin at collabora.co.uk
Tue Jan 17 13:28:11 UTC 2017


 comphelper/source/misc/docpasswordrequest.cxx       |   28 +--
 framework/inc/services/layoutmanager.hxx            |    6 
 framework/source/fwe/dispatch/interaction.cxx       |   19 --
 framework/source/layoutmanager/layoutmanager.cxx    |  173 ++++++++------------
 include/comphelper/docpasswordrequest.hxx           |   13 -
 include/svx/unoprov.hxx                             |    3 
 sc/inc/dptabsrc.hxx                                 |    6 
 sc/source/core/data/dptabsrc.cxx                    |   35 +---
 sc/source/ui/Accessibility/AccessiblePageHeader.cxx |   82 ++-------
 sc/source/ui/inc/AccessiblePageHeader.hxx           |    5 
 sot/source/sdstor/ucbstorage.cxx                    |    6 
 svx/source/unodraw/unoprov.cxx                      |   17 -
 sw/source/uibase/dochdl/swdtflvr.cxx                |    4 
 13 files changed, 154 insertions(+), 243 deletions(-)

New commits:
commit 63c40ba180a584646a69d4c95e20c8580db61211
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 15:13:03 2017 +0200

    manage m_xInplaceMenuBar with rtl::Reference
    
    instead of both a raw pointer and an uno::Reference
    
    Change-Id: I44111694671371fac5c4207d1c46f99761bf10eb

diff --git a/framework/inc/services/layoutmanager.hxx b/framework/inc/services/layoutmanager.hxx
index deeb049..85cde4b 100644
--- a/framework/inc/services/layoutmanager.hxx
+++ b/framework/inc/services/layoutmanager.hxx
@@ -278,8 +278,7 @@ namespace framework
             bool                                                           m_bMenuBarCloseButton;
             css::awt::Rectangle                                            m_aDockingArea;
             css::uno::Reference< css::ui::XDockingAreaAcceptor >           m_xDockingAreaAcceptor;
-            css::uno::Reference< css::lang::XComponent >                   m_xInplaceMenuBar;
-            MenuBarManager*                                                m_pInplaceMenuBar;
+            rtl::Reference< MenuBarManager >                               m_xInplaceMenuBar;
             css::uno::Reference< css::ui::XUIElement >                     m_xMenuBar;
             UIElement                                                      m_aStatusBarElement;
             UIElement                                                      m_aProgressBarElement;
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index bf1e8db..4f3f86a 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -123,7 +123,6 @@ LayoutManager::LayoutManager( const Reference< XComponentContext >& xContext ) :
         , m_bGlobalSettings( false )
         , m_bPreserveContentSize( false )
         , m_bMenuBarCloseButton( false )
-        , m_pInplaceMenuBar( nullptr )
         , m_xModuleManager( ModuleManager::create( xContext ))
         , m_xUIElementFactoryManager( ui::theUIElementFactoryManager::get(xContext) )
         , m_xPersistentWindowStateSupplier( ui::theWindowStateConfiguration::get( xContext ) )
@@ -172,7 +171,7 @@ void LayoutManager::impl_clearUpMenuBar()
         {
             MenuBar* pSetMenuBar = nullptr;
             if ( m_xInplaceMenuBar.is() )
-                pSetMenuBar = static_cast<MenuBar *>(m_pInplaceMenuBar->GetMenuBar());
+                pSetMenuBar = static_cast<MenuBar *>(m_xInplaceMenuBar->GetMenuBar());
             else
             {
                 Reference< awt::XMenuBar > xMenuBar;
@@ -205,13 +204,9 @@ void LayoutManager::impl_clearUpMenuBar()
 
     // reset inplace menubar manager
     VclPtr<Menu> pMenuBar;
-    if (m_pInplaceMenuBar)
-    {
-        pMenuBar = m_pInplaceMenuBar->GetMenuBar();
-        m_pInplaceMenuBar = nullptr;
-    }
-    if ( m_xInplaceMenuBar.is() )
+    if (m_xInplaceMenuBar.is())
     {
+        pMenuBar = m_xInplaceMenuBar->GetMenuBar();
         m_xInplaceMenuBar->dispose();
         m_xInplaceMenuBar.clear();
     }
@@ -761,8 +756,7 @@ void LayoutManager::implts_updateUIElementsVisibleState( bool bSetVisible )
     SolarMutexResettableGuard aWriteLock;
     Reference< XUIElement >   xMenuBar( m_xMenuBar, UNO_QUERY );
     Reference< awt::XWindow > xContainerWindow( m_xContainerWindow );
-    Reference< XComponent >   xInplaceMenuBar( m_xInplaceMenuBar );
-    MenuBarManager*           pInplaceMenuBar( m_pInplaceMenuBar );
+    rtl::Reference< MenuBarManager > xInplaceMenuBar( m_xInplaceMenuBar );
     aWriteLock.clear();
 
     if (( xMenuBar.is() || xInplaceMenuBar.is() ) && xContainerWindow.is() )
@@ -771,7 +765,7 @@ void LayoutManager::implts_updateUIElementsVisibleState( bool bSetVisible )
 
         MenuBar* pMenuBar( nullptr );
         if ( xInplaceMenuBar.is() )
-            pMenuBar = static_cast<MenuBar *>(pInplaceMenuBar->GetMenuBar());
+            pMenuBar = static_cast<MenuBar *>(xInplaceMenuBar->GetMenuBar());
         else
         {
             MenuBarWrapper* pMenuBarWrapper = (static_cast< MenuBarWrapper* >(xMenuBar.get()) );
@@ -1151,13 +1145,9 @@ throw (uno::RuntimeException, std::exception)
 
         // Reset old inplace menubar!
         VclPtr<Menu> pOldMenuBar;
-        if (m_pInplaceMenuBar)
-        {
-            pOldMenuBar = m_pInplaceMenuBar->GetMenuBar();
-            m_pInplaceMenuBar = nullptr;
-        }
         if (m_xInplaceMenuBar.is())
         {
+            pOldMenuBar = m_xInplaceMenuBar->GetMenuBar();
             m_xInplaceMenuBar->dispose();
             m_xInplaceMenuBar.clear();
         }
@@ -1171,15 +1161,14 @@ throw (uno::RuntimeException, std::exception)
             Reference< XDispatchProvider > xDispatchProvider;
 
             VclPtr<MenuBar> pMenuBar = VclPtr<MenuBar>::Create();
-            m_pInplaceMenuBar = new MenuBarManager( m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, aModuleIdentifier, pMenuBar, true );
-            m_pInplaceMenuBar->SetItemContainer( xMergedMenuBar );
+            m_xInplaceMenuBar = new MenuBarManager( m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, aModuleIdentifier, pMenuBar, true );
+            m_xInplaceMenuBar->SetItemContainer( xMergedMenuBar );
 
             SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow );
             if ( pSysWindow )
                 pSysWindow->SetMenuBar(pMenuBar);
 
             m_bInplaceMenuSet = true;
-            m_xInplaceMenuBar.set( static_cast<OWeakObject *>(m_pInplaceMenuBar), UNO_QUERY );
         }
 
         aWriteLock.clear();
@@ -1211,13 +1200,9 @@ throw (uno::RuntimeException)
 
     // Remove inplace menu bar
     VclPtr<Menu> pMenuBar;
-    if (m_pInplaceMenuBar)
-    {
-        pMenuBar = m_pInplaceMenuBar->GetMenuBar();
-        m_pInplaceMenuBar = nullptr;
-    }
     if (m_xInplaceMenuBar.is())
     {
+        pMenuBar = m_xInplaceMenuBar->GetMenuBar();
         m_xInplaceMenuBar->dispose();
         m_xInplaceMenuBar.clear();
     }
@@ -2588,7 +2573,7 @@ bool LayoutManager::implts_resetMenuBar()
 
     MenuBar* pSetMenuBar = nullptr;
     if ( m_xInplaceMenuBar.is() )
-        pSetMenuBar = static_cast<MenuBar *>(m_pInplaceMenuBar->GetMenuBar());
+        pSetMenuBar = static_cast<MenuBar *>(m_xInplaceMenuBar->GetMenuBar());
     else
     {
         MenuBarWrapper* pMenuBarWrapper = static_cast< MenuBarWrapper* >( m_xMenuBar.get() );
@@ -2831,13 +2816,9 @@ throw( RuntimeException, std::exception )
         impl_clearUpMenuBar();
         m_xMenuBar.clear();
         VclPtr<Menu> pMenuBar;
-        if (m_pInplaceMenuBar)
-        {
-            pMenuBar = m_pInplaceMenuBar->GetMenuBar();
-            m_pInplaceMenuBar = nullptr;
-        }
         if (m_xInplaceMenuBar.is())
         {
+            pMenuBar = m_xInplaceMenuBar->GetMenuBar();
             m_xInplaceMenuBar->dispose();
             m_xInplaceMenuBar.clear();
         }
@@ -2895,13 +2876,9 @@ throw( RuntimeException, std::exception )
         impl_clearUpMenuBar();
         m_xMenuBar.clear();
         VclPtr<Menu> pMenuBar;
-        if (m_pInplaceMenuBar)
-        {
-            pMenuBar = m_pInplaceMenuBar->GetMenuBar();
-            m_pInplaceMenuBar = nullptr;
-        }
         if (m_xInplaceMenuBar.is())
         {
+            pMenuBar = m_xInplaceMenuBar->GetMenuBar();
             m_xInplaceMenuBar->dispose();
             m_xInplaceMenuBar.clear();
         }
commit 2f4dbfdd2c94771ffa062789ed97dde0d63f0564
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 15:06:43 2017 +0200

    manage m_xToolbarManager with rtl::Reference
    
    instead of both a raw pointer and an uno::Reference
    
    Change-Id: Idcdbbcd4f01c21bd32b4f00d3cfc3febd70e9194

diff --git a/framework/inc/services/layoutmanager.hxx b/framework/inc/services/layoutmanager.hxx
index 7a895cc..deeb049 100644
--- a/framework/inc/services/layoutmanager.hxx
+++ b/framework/inc/services/layoutmanager.hxx
@@ -292,8 +292,7 @@ namespace framework
             OUString                                                       m_aModuleIdentifier;
             Timer                                                          m_aAsyncLayoutTimer;
             ::cppu::OMultiTypeInterfaceContainerHelper                     m_aListenerContainer; // container for ALL Listener
-            ToolbarLayoutManager*                                          m_pToolbarManager;
-            css::uno::Reference< css::ui::XUIConfigurationListener >       m_xToolbarManager;
+            rtl::Reference< ToolbarLayoutManager >                         m_xToolbarManager;
 
         friend class detail::InfoHelperBuilder;
     };
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index 711f39b..bf1e8db 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -129,8 +129,6 @@ LayoutManager::LayoutManager( const Reference< XComponentContext >& xContext ) :
         , m_xPersistentWindowStateSupplier( ui::theWindowStateConfiguration::get( xContext ) )
         , m_pGlobalSettings( nullptr )
         , m_aListenerContainer( m_aMutex )
-        , m_pToolbarManager( nullptr )
-        , m_xToolbarManager( nullptr )
 {
     // Initialize statusbar member
     m_aStatusBarElement.m_aType = "statusbar";
@@ -138,8 +136,7 @@ LayoutManager::LayoutManager( const Reference< XComponentContext >& xContext ) :
 
     if (!comphelper::LibreOfficeKit::isActive())
     {
-        m_pToolbarManager = new ToolbarLayoutManager( xContext, Reference<XUIElementFactory>(m_xUIElementFactoryManager, UNO_QUERY_THROW), this );
-        m_xToolbarManager.set( static_cast< OWeakObject* >( m_pToolbarManager ), uno::UNO_QUERY );
+        m_xToolbarManager = new ToolbarLayoutManager( xContext, Reference<XUIElementFactory>(m_xUIElementFactoryManager, UNO_QUERY_THROW), this );
     }
 
     m_aAsyncLayoutTimer.SetTimeout( 50 );
@@ -251,7 +248,7 @@ void LayoutManager::implts_reset( bool bAttached )
     Reference< XNameAccess > xPersistentWindowState( m_xPersistentWindowState );
     Reference< XComponentContext > xContext( m_xContext );
     Reference< XNameAccess > xPersistentWindowStateSupplier( m_xPersistentWindowStateSupplier );
-    ToolbarLayoutManager* pToolbarManager( m_pToolbarManager );
+    rtl::Reference<ToolbarLayoutManager> xToolbarManager( m_xToolbarManager );
     OUString aModuleIdentifier( m_aModuleIdentifier );
     bool bAutomaticToolbars( m_bAutomaticToolbars );
     aReadLock.clear();
@@ -396,19 +393,19 @@ void LayoutManager::implts_reset( bool bAttached )
         /* SAFE AREA ----------------------------------------------------------------------------------------------- */
 
         // reset/notify toolbar layout manager
-        if ( pToolbarManager )
+        if ( xToolbarManager.is() )
         {
             if ( bAttached )
             {
-                pToolbarManager->attach( xFrame, xModCfgMgr, xDokCfgMgr, xPersistentWindowState );
+                xToolbarManager->attach( xFrame, xModCfgMgr, xDokCfgMgr, xPersistentWindowState );
                 uno::Reference< awt::XWindowPeer > xParent( xContainerWindow, UNO_QUERY );
-                pToolbarManager->setParentWindow( xParent );
+                xToolbarManager->setParentWindow( xParent );
                 if ( bAutomaticToolbars )
-                    pToolbarManager->createStaticToolbars();
+                    xToolbarManager->createStaticToolbars();
             }
             else
             {
-                pToolbarManager->reset();
+                xToolbarManager->reset();
                 implts_destroyElements();
             }
         }
@@ -434,7 +431,7 @@ bool LayoutManager::implts_isEmbeddedLayoutManager() const
 void LayoutManager::implts_destroyElements()
 {
     SolarMutexResettableGuard aWriteLock;
-    ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+    ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
     aWriteLock.clear();
 
     if ( pToolbarManager )
@@ -450,7 +447,7 @@ void LayoutManager::implts_destroyElements()
 void LayoutManager::implts_toggleFloatingUIElementsVisibility( bool bActive )
 {
     SolarMutexClearableGuard aReadLock;
-    ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+    ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
     aReadLock.clear();
 
     if ( pToolbarManager )
@@ -801,7 +798,7 @@ void LayoutManager::implts_updateUIElementsVisibleState( bool bSetVisible )
         bMustDoLayout = !implts_hideStatusBar();
 
     aWriteLock.reset();
-    ToolbarLayoutManager* pToolbarManager( m_pToolbarManager );
+    ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() );
     aWriteLock.clear();
 
     if ( pToolbarManager )
@@ -1138,8 +1135,8 @@ void LayoutManager::implts_setOffset( const sal_Int32 nBottomOffset )
     setZeroRectangle( aOffsetRect );
     aOffsetRect.setHeight( nBottomOffset );
 
-    if ( m_pToolbarManager )
-        m_pToolbarManager->setDockingAreaOffsets( aOffsetRect );
+    if ( m_xToolbarManager.is() )
+        m_xToolbarManager->setDockingAreaOffsets( aOffsetRect );
 }
 
 void LayoutManager::implts_setInplaceMenuBar( const Reference< XIndexAccess >& xMergedMenuBar )
@@ -1289,7 +1286,7 @@ throw ( RuntimeException, std::exception )
     bool bAutomaticToolbars( m_bAutomaticToolbars );
     std::vector< Reference< awt::XWindow > > oldDockingAreaWindows;
 
-    ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+    ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
 
     if ( !xDockingAreaAcceptor.is() )
         m_aAsyncLayoutTimer.Stop();
@@ -1407,7 +1404,7 @@ void LayoutManager::implts_reparentChildWindows()
     implts_resetMenuBar();
 
     aWriteLock.reset();
-    ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+    ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
     if ( pToolbarManager )
         pToolbarManager->setParentWindow( uno::Reference< awt::XWindowPeer >( xContainerWindow, uno::UNO_QUERY ));
     aWriteLock.clear();
@@ -1425,7 +1422,7 @@ IMPL_LINK( LayoutManager, WindowEventListener, VclWindowEvent&, rEvent, void )
     if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX )
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager( m_pToolbarManager );
+        ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() );
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1454,10 +1451,10 @@ throw (RuntimeException, std::exception)
     bool bNotify( false );
 
     bool bPreviewFrame;
-    if (m_pToolbarManager)
+    if (m_xToolbarManager.is())
         // Assumes that we created the ToolbarLayoutManager with our frame, if
         // not then we're somewhat fouled up ...
-        bPreviewFrame = m_pToolbarManager->isPreviewFrame();
+        bPreviewFrame = m_xToolbarManager->isPreviewFrame();
     else
     {
         Reference< XModel >  xModel( impl_getModelFromFrame( xFrame ) );
@@ -1471,10 +1468,10 @@ throw (RuntimeException, std::exception)
 
         parseResourceURL( aName, aElementType, aElementName );
 
-        if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ) && m_pToolbarManager != nullptr )
+        if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ) && m_xToolbarManager.is() )
         {
-            bNotify         = m_pToolbarManager->createToolbar( aName );
-            bMustBeLayouted = m_pToolbarManager->isLayoutDirty();
+            bNotify         = m_xToolbarManager->createToolbar( aName );
+            bMustBeLayouted = m_xToolbarManager->isLayoutDirty();
         }
         else if ( aElementType.equalsIgnoreAsciiCase("menubar") &&
                   aElementName.equalsIgnoreAsciiCase("menubar") )
@@ -1610,11 +1607,11 @@ throw (RuntimeException, std::exception)
         bMustBeLayouted = true;
         bNotify = true;
     }
-    else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ) && m_pToolbarManager != nullptr )
+    else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ) && m_xToolbarManager.is() )
     {
         aWriteLock.clear();
-        bNotify         = m_pToolbarManager->destroyToolbar( aName );
-        bMustBeLayouted = m_pToolbarManager->isLayoutDirty();
+        bNotify         = m_xToolbarManager->destroyToolbar( aName );
+        bMustBeLayouted = m_xToolbarManager->isLayoutDirty();
     }
     else if ( aElementType.equalsIgnoreAsciiCase("dockingwindow"))
     {
@@ -1691,7 +1688,7 @@ throw (uno::RuntimeException, std::exception)
     else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ) && m_bVisible )
     {
         bool bComponentAttached( !m_aModuleIdentifier.isEmpty() );
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aWriteLock.clear();
 
         if ( pToolbarManager && bComponentAttached )
@@ -1720,7 +1717,7 @@ throw (RuntimeException, std::exception)
     if ( !xUIElement.is() )
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager( m_pToolbarManager );
+        ToolbarLayoutManager*             pToolbarManager( m_xToolbarManager.get() );
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1736,7 +1733,7 @@ throw (uno::RuntimeException, std::exception)
     SolarMutexClearableGuard aReadLock;
     uno::Reference< ui::XUIElement >  xMenuBar( m_xMenuBar );
     uno::Reference< ui::XUIElement >  xStatusBar( m_aStatusBarElement.m_xUIElement );
-    ToolbarLayoutManager*             pToolbarManager( m_pToolbarManager );
+    ToolbarLayoutManager*             pToolbarManager( m_xToolbarManager.get() );
     aReadLock.clear();
 
     Sequence< Reference< ui::XUIElement > > aSeq;
@@ -1816,7 +1813,7 @@ throw (RuntimeException, std::exception)
     else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1901,7 +1898,7 @@ throw (RuntimeException, std::exception)
     else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1939,7 +1936,7 @@ throw (RuntimeException, std::exception)
     if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1956,7 +1953,7 @@ sal_Bool SAL_CALL LayoutManager::dockAllWindows( ::sal_Int16 /*nElementType*/ )
 {
     SolarMutexClearableGuard aReadLock;
     bool bResult( false );
-    ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+    ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
     aReadLock.clear();
 
     if ( pToolbarManager )
@@ -1975,7 +1972,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -1995,7 +1992,7 @@ throw (uno::RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2015,7 +2012,7 @@ throw (uno::RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2034,7 +2031,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager*             pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager*             pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2052,7 +2049,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager( m_pToolbarManager );
+        ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() );
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2070,7 +2067,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager( m_pToolbarManager );
+        ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() );
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2139,7 +2136,7 @@ throw (RuntimeException, std::exception)
     else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2163,7 +2160,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2179,7 +2176,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2195,7 +2192,7 @@ throw (uno::RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2211,7 +2208,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2227,7 +2224,7 @@ throw (RuntimeException, std::exception)
     if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
     {
         SolarMutexClearableGuard aReadLock;
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         aReadLock.clear();
 
         if ( pToolbarManager )
@@ -2411,8 +2408,8 @@ bool LayoutManager::implts_doLayout( bool bForceRequestBorderSpace, bool bOuterR
             // Interim solution to let the layout method within the
             // toolbar layout manager.
             implts_setOffset( implts_getStatusBarSize().Height() );
-            if ( m_pToolbarManager )
-                m_pToolbarManager->setDockingArea( aDockSpace );
+            if ( m_xToolbarManager.is() )
+                m_xToolbarManager->setDockingArea( aDockSpace );
 
             // Subtract status bar size from our container output size. Docking area windows
             // don't contain the status bar!
@@ -2420,8 +2417,8 @@ bool LayoutManager::implts_doLayout( bool bForceRequestBorderSpace, bool bOuterR
             aContainerSize = implts_getContainerWindowOutputSize();
             aContainerSize.Height() -= aStatusBarSize.Height();
 
-            if ( m_pToolbarManager )
-                m_pToolbarManager->doLayout(aContainerSize);
+            if ( m_xToolbarManager.is() )
+                m_xToolbarManager->doLayout(aContainerSize);
 
             // Position the status bar
             if ( aStatusBarSize.Height() > 0 )
@@ -2529,8 +2526,8 @@ awt::Rectangle LayoutManager::implts_calcDockingAreaSizes()
     aReadLock.clear();
 
     awt::Rectangle aBorderSpace;
-    if ( m_pToolbarManager && xDockingAreaAcceptor.is() && xContainerWindow.is() )
-        aBorderSpace = m_pToolbarManager->getDockingArea();
+    if ( m_xToolbarManager.is() && xDockingAreaAcceptor.is() && xContainerWindow.is() )
+        aBorderSpace = m_xToolbarManager->getDockingArea();
 
     return aBorderSpace;
 }
@@ -2849,8 +2846,8 @@ throw( RuntimeException, std::exception )
         m_xContainerTopWindow.clear();
 
         // forward disposing call to toolbar manager
-        if ( m_pToolbarManager != nullptr )
-            m_pToolbarManager->disposing(rEvent);
+        if ( m_xToolbarManager.is() )
+            m_xToolbarManager->disposing(rEvent);
 
         if ( m_xModuleCfgMgr.is() )
         {
@@ -2889,7 +2886,7 @@ throw( RuntimeException, std::exception )
     else if ( rEvent.Source == Reference< XInterface >( m_xContainerWindow, UNO_QUERY ))
     {
         // Our container window gets disposed. Remove all user interface elements.
-        ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+        ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
         if ( pToolbarManager )
         {
             uno::Reference< awt::XWindowPeer > aEmptyWindowPeer;
@@ -2934,8 +2931,7 @@ void SAL_CALL LayoutManager::elementInserted( const ui::ConfigurationEvent& Even
 {
     SolarMutexClearableGuard aReadLock;
     Reference< XFrame > xFrame( m_xFrame );
-    Reference< ui::XUIConfigurationListener > xUICfgListener( m_xToolbarManager );
-    ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+    rtl::Reference< ToolbarLayoutManager > xToolbarManager( m_xToolbarManager );
     aReadLock.clear();
 
     if ( xFrame.is() )
@@ -2947,10 +2943,10 @@ void SAL_CALL LayoutManager::elementInserted( const ui::ConfigurationEvent& Even
         parseResourceURL( Event.ResourceURL, aElementType, aElementName );
         if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR ))
         {
-            if ( xUICfgListener.is() )
+            if ( xToolbarManager.is() )
             {
-                xUICfgListener->elementInserted( Event );
-                bRefreshLayout = pToolbarManager->isLayoutDirty();
+                xToolbarManager->elementInserted( Event );
+                bRefreshLayout = xToolbarManager->isLayoutDirty();
             }
         }
         else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_MENUBAR ))
@@ -2979,12 +2975,11 @@ void SAL_CALL LayoutManager::elementRemoved( const ui::ConfigurationEvent& Event
 {
     SolarMutexClearableGuard aReadLock;
     Reference< frame::XFrame >                xFrame( m_xFrame );
-    Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager );
+    rtl::Reference< ToolbarLayoutManager >    xToolbarManager( m_xToolbarManager );
     Reference< awt::XWindow >                 xContainerWindow( m_xContainerWindow );
     Reference< ui::XUIElement >               xMenuBar( m_xMenuBar );
     Reference< ui::XUIConfigurationManager >  xModuleCfgMgr( m_xModuleCfgMgr );
     Reference< ui::XUIConfigurationManager >  xDocCfgMgr( m_xDocCfgMgr );
-    ToolbarLayoutManager*                     pToolbarManager = m_pToolbarManager;
     aReadLock.clear();
 
     if ( xFrame.is() )
@@ -2999,7 +2994,7 @@ void SAL_CALL LayoutManager::elementRemoved( const ui::ConfigurationEvent& Event
             if ( xToolbarManager.is() )
             {
                 xToolbarManager->elementRemoved( Event );
-                bRefreshLayout = pToolbarManager->isLayoutDirty();
+                bRefreshLayout = xToolbarManager->isLayoutDirty();
             }
         }
         else
@@ -3067,8 +3062,7 @@ void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Even
 {
     SolarMutexClearableGuard aReadLock;
     Reference< XFrame >                       xFrame( m_xFrame );
-    Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager );
-    ToolbarLayoutManager*                     pToolbarManager = m_pToolbarManager;
+    rtl::Reference< ToolbarLayoutManager >    xToolbarManager( m_xToolbarManager );
     aReadLock.clear();
 
     if ( xFrame.is() )
@@ -3083,7 +3077,7 @@ void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Even
             if ( xToolbarManager.is() )
             {
                 xToolbarManager->elementReplaced( Event );
-                bRefreshLayout = pToolbarManager->isLayoutDirty();
+                bRefreshLayout = xToolbarManager->isLayoutDirty();
             }
         }
         else
@@ -3131,7 +3125,7 @@ void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32       n
             if (( aValue >>= bValue ) && bValue )
             {
                 SolarMutexClearableGuard aReadLock;
-                ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+                ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get();
                 bool bAutomaticToolbars( m_bAutomaticToolbars );
                 aReadLock.clear();
 
commit 04790b233278f558f5a5be3c811b9ac7a68bc8bf
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 13:07:53 2017 +0200

    use rtl::Reference in RequestFilterSelect_Impl
    
    instead of raw pointers
    
    Change-Id: I86e929d71afc1ce9852d2b01339f7623cc119fcb

diff --git a/framework/source/fwe/dispatch/interaction.cxx b/framework/source/fwe/dispatch/interaction.cxx
index e0c3b9e..a4a7fc2e 100644
--- a/framework/source/fwe/dispatch/interaction.cxx
+++ b/framework/source/fwe/dispatch/interaction.cxx
@@ -96,9 +96,8 @@ public:
 
 private:
     css::uno::Any                                                                       m_aRequest;
-    css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > >    m_lContinuations;
-    comphelper::OInteractionAbort*                                                      m_pAbort;
-    ContinuationFilterSelect*                                                           m_pFilter;
+    rtl::Reference<comphelper::OInteractionAbort>                                       m_xAbort;
+    rtl::Reference<ContinuationFilterSelect>                                            m_xFilter;
 };
 
 // initialize instance with all necessary information
@@ -113,12 +112,8 @@ RequestFilterSelect_Impl::RequestFilterSelect_Impl( const OUString& sURL )
                                                        sURL                                          );
     m_aRequest <<= aFilterRequest;
 
-    m_pAbort  = new comphelper::OInteractionAbort;
-    m_pFilter = new ContinuationFilterSelect;
-
-    m_lContinuations.realloc( 2 );
-    m_lContinuations[0].set( m_pAbort  );
-    m_lContinuations[1].set( m_pFilter );
+    m_xAbort  = new comphelper::OInteractionAbort;
+    m_xFilter = new ContinuationFilterSelect;
 }
 
 // return abort state of interaction
@@ -126,7 +121,7 @@ RequestFilterSelect_Impl::RequestFilterSelect_Impl( const OUString& sURL )
 
 bool RequestFilterSelect_Impl::isAbort() const
 {
-    return m_pAbort->wasSelected();
+    return m_xAbort->wasSelected();
 }
 
 // return user selected filter
@@ -134,7 +129,7 @@ bool RequestFilterSelect_Impl::isAbort() const
 
 OUString RequestFilterSelect_Impl::getFilter() const
 {
-    return m_pFilter->getFilter();
+    return m_xFilter->getFilter();
 }
 
 // handler call it to get type of request
@@ -152,7 +147,7 @@ css::uno::Any SAL_CALL RequestFilterSelect_Impl::getRequest() throw( css::uno::R
 
 css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > SAL_CALL RequestFilterSelect_Impl::getContinuations() throw( css::uno::RuntimeException, std::exception )
 {
-    return m_lContinuations;
+    return { m_xAbort.get(), m_xFilter.get() };
 }
 
 RequestFilterSelect::RequestFilterSelect( const OUString& sURL )
commit 4d3ad2640332d811d50055df81243fdd813edfc8
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 13:00:17 2017 +0200

    manage SvRefBase subclass with tools::SvRef
    
    Change-Id: Ieb164a8113c7033e72feece8421dd4ef68961f7a

diff --git a/sot/source/sdstor/ucbstorage.cxx b/sot/source/sdstor/ucbstorage.cxx
index 11179f3..162b57c 100644
--- a/sot/source/sdstor/ucbstorage.cxx
+++ b/sot/source/sdstor/ucbstorage.cxx
@@ -2449,7 +2449,7 @@ bool UCBStorage::CopyStorageElement_Impl( UCBStorageElement_Impl& rElement, Base
     {
         // copy the streams data
         // the destination stream must not be open
-        std::unique_ptr<BaseStorageStream> pOtherStream(pDest->OpenStream( rNew, StreamMode::WRITE | StreamMode::SHARE_DENYALL, pImp->m_bDirect ));
+        tools::SvRef<BaseStorageStream> pOtherStream(pDest->OpenStream( rNew, StreamMode::WRITE | StreamMode::SHARE_DENYALL, pImp->m_bDirect ));
         BaseStorageStream* pStream = nullptr;
         bool bDeleteStream = false;
 
@@ -2484,7 +2484,7 @@ bool UCBStorage::CopyStorageElement_Impl( UCBStorageElement_Impl& rElement, Base
             pStorage = rElement.m_xStorage->m_pAntiImpl;
         if ( !pStorage )
         {
-            pStorage = ( const_cast < UCBStorage* > (this) )->OpenStorage( rElement.m_aName, pImp->m_nMode, pImp->m_bDirect );
+            pStorage = const_cast<UCBStorage*>(this)->OpenStorage( rElement.m_aName, pImp->m_nMode, pImp->m_bDirect );
             bDeleteStorage = true;
         }
 
@@ -2492,7 +2492,7 @@ bool UCBStorage::CopyStorageElement_Impl( UCBStorageElement_Impl& rElement, Base
         UCBStorage* pUCBCopy =  dynamic_cast<UCBStorage*>( pStorage );
 
         bool bOpenUCBStorage = pUCBDest && pUCBCopy;
-        std::unique_ptr<BaseStorage> pOtherStorage(bOpenUCBStorage ?
+        tools::SvRef<BaseStorage> pOtherStorage(bOpenUCBStorage ?
                 pDest->OpenUCBStorage( rNew, StreamMode::WRITE | StreamMode::SHARE_DENYALL, pImp->m_bDirect ) :
                 pDest->OpenOLEStorage( rNew, StreamMode::WRITE | StreamMode::SHARE_DENYALL, pImp->m_bDirect ));
 
commit 5830ef9a65d268ca7939d5489a75e3873bdc5d96
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 11:47:52 2017 +0200

    use rtl::Reference in DocPasswordRequest and SimplePasswordRequest
    
    Change-Id: If1bad2bc852712b8315e44480ee81f797736bb95

diff --git a/comphelper/source/misc/docpasswordrequest.cxx b/comphelper/source/misc/docpasswordrequest.cxx
index 29cf4a9..3ebcde4 100644
--- a/comphelper/source/misc/docpasswordrequest.cxx
+++ b/comphelper/source/misc/docpasswordrequest.cxx
@@ -82,10 +82,8 @@ SimplePasswordRequest::SimplePasswordRequest( PasswordRequestMode eMode )
         InteractionClassification_QUERY, eMode );
     maRequest <<= aRequest;
 
-    maContinuations.realloc( 2 );
-    maContinuations[ 0 ].set( new AbortContinuation );
-    mpPassword = new PasswordContinuation;
-    maContinuations[ 1 ].set( mpPassword );
+    mxAbort = new AbortContinuation;
+    mxPassword = new PasswordContinuation;
 }
 
 SimplePasswordRequest::~SimplePasswordRequest()
@@ -94,12 +92,12 @@ SimplePasswordRequest::~SimplePasswordRequest()
 
 bool SimplePasswordRequest::isPassword() const
 {
-    return mpPassword->isSelected();
+    return mxPassword->isSelected();
 }
 
 OUString SimplePasswordRequest::getPassword() const
 {
-    return mpPassword->getPassword();
+    return mxPassword->getPassword();
 }
 
 Any SAL_CALL SimplePasswordRequest::getRequest() throw( RuntimeException, std::exception )
@@ -109,7 +107,7 @@ Any SAL_CALL SimplePasswordRequest::getRequest() throw( RuntimeException, std::e
 
 Sequence< Reference< XInteractionContinuation > > SAL_CALL SimplePasswordRequest::getContinuations() throw( RuntimeException, std::exception )
 {
-    return maContinuations;
+    return { mxAbort.get(), mxPassword.get() };
 }
 
 
@@ -136,10 +134,8 @@ DocPasswordRequest::DocPasswordRequest( DocPasswordRequestType eType,
             implementation of a new enum value. */
     }
 
-    maContinuations.realloc( 2 );
-    maContinuations[ 0 ].set( new AbortContinuation );
-    mpPassword = new PasswordContinuation;
-    maContinuations[ 1 ].set( mpPassword );
+    mxAbort = new AbortContinuation;
+    mxPassword = new PasswordContinuation;
 }
 
 DocPasswordRequest::~DocPasswordRequest()
@@ -148,22 +144,22 @@ DocPasswordRequest::~DocPasswordRequest()
 
 bool DocPasswordRequest::isPassword() const
 {
-    return mpPassword->isSelected();
+    return mxPassword->isSelected();
 }
 
 OUString DocPasswordRequest::getPassword() const
 {
-    return mpPassword->getPassword();
+    return mxPassword->getPassword();
 }
 
 OUString DocPasswordRequest::getPasswordToModify() const
 {
-    return mpPassword->getPasswordToModify();
+    return mxPassword->getPasswordToModify();
 }
 
 bool DocPasswordRequest::getRecommendReadOnly() const
 {
-    return mpPassword->getRecommendReadOnly();
+    return mxPassword->getRecommendReadOnly();
 }
 
 Any SAL_CALL DocPasswordRequest::getRequest() throw( RuntimeException, std::exception )
@@ -173,7 +169,7 @@ Any SAL_CALL DocPasswordRequest::getRequest() throw( RuntimeException, std::exce
 
 Sequence< Reference< XInteractionContinuation > > SAL_CALL DocPasswordRequest::getContinuations() throw( RuntimeException, std::exception )
 {
-    return maContinuations;
+    return { mxAbort.get(), mxPassword.get() };
 }
 
 
diff --git a/include/comphelper/docpasswordrequest.hxx b/include/comphelper/docpasswordrequest.hxx
index f8b19b1..f5657a4 100644
--- a/include/comphelper/docpasswordrequest.hxx
+++ b/include/comphelper/docpasswordrequest.hxx
@@ -24,6 +24,7 @@
 #include <com/sun/star/task/PasswordRequestMode.hpp>
 #include <com/sun/star/task/XInteractionRequest.hpp>
 #include <cppuhelper/implbase.hxx>
+#include <rtl/ref.hxx>
 
 namespace comphelper {
 
@@ -56,9 +57,9 @@ private:
     virtual css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > SAL_CALL getContinuations() throw( css::uno::RuntimeException, std::exception ) override;
 
 private:
-    css::uno::Any      maRequest;
-    css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > maContinuations;
-    PasswordContinuation *          mpPassword;
+    css::uno::Any                         maRequest;
+    rtl::Reference<AbortContinuation>     mxAbort;
+    rtl::Reference<PasswordContinuation>  mxPassword;
 };
 
 
@@ -89,9 +90,9 @@ private:
     virtual css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > SAL_CALL getContinuations() throw( css::uno::RuntimeException, std::exception ) override;
 
 private:
-    css::uno::Any      maRequest;
-    css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > maContinuations;
-    PasswordContinuation *          mpPassword;
+    css::uno::Any                         maRequest;
+    rtl::Reference<AbortContinuation>     mxAbort;
+    rtl::Reference<PasswordContinuation>  mxPassword;
 };
 
 
commit 574335a1ad68bdde15a67607f2460ef3828f6c3c
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 11:34:55 2017 +0200

    use SolarMutexGuard
    
    instead of manual acquire/release
    
    Change-Id: Ieb0a2c269b46004a80f77c51ce947b0daf015644

diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index de70f27..8636db6 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -233,7 +233,7 @@ SwTransferable::SwTransferable( SwWrtShell& rSh )
 
 SwTransferable::~SwTransferable()
 {
-    Application::GetSolarMutex().acquire();
+    SolarMutexGuard aSolarGuard;
 
     // the DDELink still needs the WrtShell!
     if( m_xDdeLink.Is() )
@@ -275,8 +275,6 @@ SwTransferable::~SwTransferable()
     delete m_pBookmark;
 
     m_eBufferType = TransferBufferType::NONE;
-
-    Application::GetSolarMutex().release();
 }
 
 static SwDoc * lcl_GetDoc(SwDocFac & rDocFac)
commit dd8f5e22356349345c35932fcc6b75dee503f834
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 11:28:27 2017 +0200

    use rtl::Reference in ScDPDimensions/ScDPHierarchies/ScDPLevels
    
    instead of manual acquire/release
    
    Change-Id: Id0dfa1c42e12a680ed6a6144b73d03c8f45e9f3d

diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
index 26e949a..6a35476 100644
--- a/sc/inc/dptabsrc.hxx
+++ b/sc/inc/dptabsrc.hxx
@@ -261,7 +261,7 @@ class ScDPDimensions : public cppu::WeakImplHelper<
 private:
     ScDPSource*         pSource;
     long                nDimCount;
-    ScDPDimension**     ppDims;
+    rtl::Reference<ScDPDimension>* ppDims;
 
 public:
                             ScDPDimensions( ScDPSource* pSrc );
@@ -415,7 +415,7 @@ private:
     //  date columns have 3 hierarchies (flat/quarter/week), other columns only one
     // #i52547# don't offer the incomplete date hierarchy implementation
     static const long   nHierCount = 1;
-    ScDPHierarchy**     ppHiers;
+    rtl::Reference<ScDPHierarchy>* ppHiers;
 
 public:
                             ScDPHierarchies( ScDPSource* pSrc, long nD );
@@ -492,7 +492,7 @@ private:
     long            nDim;
     long            nHier;
     long            nLevCount;
-    ScDPLevel**     ppLevs;
+    rtl::Reference<ScDPLevel>* ppLevs;
 
 public:
                             ScDPLevels( ScDPSource* pSrc, long nD, long nH );
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index f741943..d7825f0 100644
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -1212,9 +1212,6 @@ ScDPDimensions::~ScDPDimensions()
 
     if (ppDims)
     {
-        for (long i=0; i<nDimCount; i++)
-            if ( ppDims[i] )
-                ppDims[i]->release();           // ref-counted
         delete[] ppDims;
     }
 }
@@ -1227,15 +1224,12 @@ void ScDPDimensions::CountChanged()
     {
         long i;
         long nCopy = std::min( nNewCount, nDimCount );
-        ScDPDimension** ppNew = new ScDPDimension*[nNewCount];
+        rtl::Reference<ScDPDimension>* ppNew = new rtl::Reference<ScDPDimension>[nNewCount];
 
         for (i=0; i<nCopy; i++)             // copy existing dims
             ppNew[i] = ppDims[i];
         for (i=nCopy; i<nNewCount; i++)     // clear additional pointers
             ppNew[i] = nullptr;
-        for (i=nCopy; i<nDimCount; i++)     // delete old dims if count is decreased
-            if ( ppDims[i] )
-                ppDims[i]->release();       // ref-counted
 
         delete[] ppDims;
         ppDims = ppNew;
@@ -1307,17 +1301,16 @@ ScDPDimension* ScDPDimensions::getByIndex(long nIndex) const
     {
         if ( !ppDims )
         {
-            const_cast<ScDPDimensions*>(this)->ppDims = new ScDPDimension*[nDimCount];
+            const_cast<ScDPDimensions*>(this)->ppDims = new rtl::Reference<ScDPDimension>[nDimCount];
             for (long i=0; i<nDimCount; i++)
                 ppDims[i] = nullptr;
         }
-        if ( !ppDims[nIndex] )
+        if ( !ppDims[nIndex].is() )
         {
             ppDims[nIndex] = new ScDPDimension( pSource, nIndex );
-            ppDims[nIndex]->acquire();      // ref-counted
         }
 
-        return ppDims[nIndex];
+        return ppDims[nIndex].get();
     }
 
     return nullptr;    //TODO: exception?
@@ -1690,9 +1683,6 @@ ScDPHierarchies::~ScDPHierarchies()
 
     if (ppHiers)
     {
-        for (long i=0; i<nHierCount; i++)
-            if ( ppHiers[i] )
-                ppHiers[i]->release();      // ref-counted
         delete[] ppHiers;
     }
 }
@@ -1761,17 +1751,16 @@ ScDPHierarchy* ScDPHierarchies::getByIndex(long nIndex) const
     {
         if ( !ppHiers )
         {
-            const_cast<ScDPHierarchies*>(this)->ppHiers = new ScDPHierarchy*[nHierCount];
+            const_cast<ScDPHierarchies*>(this)->ppHiers = new rtl::Reference<ScDPHierarchy>[nHierCount];
             for (long i=0; i<nHierCount; i++)
                 ppHiers[i] = nullptr;
         }
-        if ( !ppHiers[nIndex] )
+        if ( !ppHiers[nIndex].is() )
         {
             ppHiers[nIndex] = new ScDPHierarchy( pSource, nDim, nIndex );
-            ppHiers[nIndex]->acquire();         // ref-counted
         }
 
-        return ppHiers[nIndex];
+        return ppHiers[nIndex].get();
     }
 
     return nullptr;    //TODO: exception?
@@ -1864,9 +1853,6 @@ ScDPLevels::~ScDPLevels()
 
     if (ppLevs)
     {
-        for (long i=0; i<nLevCount; i++)
-            if ( ppLevs[i] )
-                ppLevs[i]->release();   // ref-counted
         delete[] ppLevs;
     }
 }
@@ -1932,17 +1918,16 @@ ScDPLevel* ScDPLevels::getByIndex(long nIndex) const
     {
         if ( !ppLevs )
         {
-            const_cast<ScDPLevels*>(this)->ppLevs = new ScDPLevel*[nLevCount];
+            const_cast<ScDPLevels*>(this)->ppLevs = new rtl::Reference<ScDPLevel>[nLevCount];
             for (long i=0; i<nLevCount; i++)
                 ppLevs[i] = nullptr;
         }
-        if ( !ppLevs[nIndex] )
+        if ( !ppLevs[nIndex].is() )
         {
             ppLevs[nIndex] = new ScDPLevel( pSource, nDim, nHier, nIndex );
-            ppLevs[nIndex]->acquire();      // ref-counted
         }
 
-        return ppLevs[nIndex];
+        return ppLevs[nIndex].get();
     }
 
     return nullptr;    //TODO: exception?
commit 492ccb76d75cbce976f5a4886cbe5eec3d132898
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 11:21:22 2017 +0200

    use rtl::Reference to manage ScAccessiblePageHeaderArea's
    
    instead of manual acquire/release
    
    Change-Id: I368530f30388cd4bba6dbc1fe6d6a5dd1e25f298

diff --git a/sc/source/ui/Accessibility/AccessiblePageHeader.cxx b/sc/source/ui/Accessibility/AccessiblePageHeader.cxx
index 134fdf1..1d59766 100644
--- a/sc/source/ui/Accessibility/AccessiblePageHeader.cxx
+++ b/sc/source/ui/Accessibility/AccessiblePageHeader.cxx
@@ -50,45 +50,13 @@ using namespace ::com::sun::star::accessibility;
 
 const sal_uInt8     MAX_AREAS = 3;
 
-//=====  internal  ============================================================
-struct Acquire
-{
-    void operator() (ScAccessiblePageHeaderArea* pArea)
-    {
-        if (pArea)
-            pArea->acquire();
-    }
-};
-
-struct Release
-{
-    void operator() (ScAccessiblePageHeaderArea*& pArea)
-    {
-        if (pArea)
-            pArea->release();
-    }
-};
-
-struct Dispose
-{
-    void operator() (ScAccessiblePageHeaderArea*& pArea)
-    {
-        if (pArea)
-        {
-            pArea->dispose();
-            pArea->release();
-        }
-        pArea = nullptr;
-    }
-};
-
 ScAccessiblePageHeader::ScAccessiblePageHeader( const css::uno::Reference<css::accessibility::XAccessible>& rxParent,
                             ScPreviewShell* pViewShell, bool bHeader, sal_Int32 nIndex ) :
 ScAccessibleContextBase( rxParent, bHeader ? AccessibleRole::HEADER : AccessibleRole::FOOTER ),
     mpViewShell( pViewShell ),
     mnIndex( nIndex ),
     mbHeader( bHeader ),
-    maAreas(MAX_AREAS, nullptr),
+    maAreas(MAX_AREAS, rtl::Reference<ScAccessiblePageHeaderArea>()),
     mnChildCount(-1)
 {
     if (mpViewShell)
@@ -113,7 +81,14 @@ void SAL_CALL ScAccessiblePageHeader::disposing()
         mpViewShell->RemoveAccessibilityObject(*this);
         mpViewShell = nullptr;
     }
-    std::for_each(maAreas.begin(), maAreas.end(), Dispose());
+    for (auto & i : maAreas)
+    {
+        if (i.is())
+        {
+            i->dispose();
+            i.clear();
+        }
+    }
 
     ScAccessibleContextBase::disposing();
 }
@@ -125,37 +100,35 @@ void ScAccessiblePageHeader::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
     // only notify if child exist, otherwise it is not necessary
     if (rHint.GetId() == SfxHintId::ScDataChanged)
     {
-        ScHFAreas aOldAreas(maAreas);
-        std::for_each(aOldAreas.begin(), aOldAreas.end(), Acquire());
+        std::vector<rtl::Reference<ScAccessiblePageHeaderArea>> aOldAreas(maAreas);
         mnChildCount = -1;
         getAccessibleChildCount();
         for (sal_uInt8 i = 0; i < MAX_AREAS; ++i)
         {
-            if ((aOldAreas[i] && maAreas[i] && !ScGlobal::EETextObjEqual(aOldAreas[i]->GetEditTextObject(), maAreas[i]->GetEditTextObject())) ||
-                    (aOldAreas[i] && !maAreas[i]) || (!aOldAreas[i] && maAreas[i]))
+            if ((aOldAreas[i].is() && maAreas[i].is() && !ScGlobal::EETextObjEqual(aOldAreas[i]->GetEditTextObject(), maAreas[i]->GetEditTextObject())) ||
+                    (aOldAreas[i].is() && !maAreas[i].is()) || (!aOldAreas[i].is() && maAreas[i].is()))
             {
-                if (aOldAreas[i] && aOldAreas[i]->GetEditTextObject())
+                if (aOldAreas[i].is() && aOldAreas[i]->GetEditTextObject())
                 {
                     AccessibleEventObject aEvent;
                     aEvent.EventId = AccessibleEventId::CHILD;
                     aEvent.Source = uno::Reference< XAccessibleContext >(this);
-                    aEvent.OldValue = uno::makeAny(uno::Reference<XAccessible>(aOldAreas[i]));
+                    aEvent.OldValue = uno::makeAny(uno::Reference<XAccessible>(aOldAreas[i].get()));
 
                     CommitChange(aEvent); // child gone - event
                     aOldAreas[i]->dispose();
                 }
-                if (maAreas[i] && maAreas[i]->GetEditTextObject())
+                if (maAreas[i].is() && maAreas[i]->GetEditTextObject())
                 {
                     AccessibleEventObject aEvent;
                     aEvent.EventId = AccessibleEventId::CHILD;
                     aEvent.Source = uno::Reference< XAccessibleContext >(this);
-                    aEvent.NewValue = uno::makeAny(uno::Reference<XAccessible>(maAreas[i]));
+                    aEvent.NewValue = uno::makeAny(uno::Reference<XAccessible>(maAreas[i].get()));
 
                     CommitChange(aEvent); // new child - event
                 }
             }
         }
-        std::for_each(aOldAreas.begin(), aOldAreas.end(), Release());
     }
     else if (rHint.GetId() == SfxHintId::ScAccVisAreaChanged)
     {
@@ -188,8 +161,8 @@ uno::Reference< XAccessible > SAL_CALL ScAccessiblePageHeader::getAccessibleAtPo
             sal_uInt8 i(0);
             while(!xRet.is() && i < MAX_AREAS)
             {
-                if (maAreas[i])
-                    xRet = maAreas[i];
+                if (maAreas[i].is())
+                    xRet = maAreas[i].get();
                 else
                     ++i;
             }
@@ -254,14 +227,14 @@ uno::Reference< XAccessible > SAL_CALL ScAccessiblePageHeader::getAccessibleChil
     if(mnChildCount < 0)
         getAccessibleChildCount();
 
-    ScHFAreas::iterator aItr = maAreas.begin();
-    ScHFAreas::iterator aEndItr = maAreas.end();
+    auto aItr = maAreas.begin();
+    auto aEndItr = maAreas.end();
     while (!xRet.is() && (nIndex >= 0) && (aItr != aEndItr))
     {
-        if (*aItr)
+        if (aItr->is())
         {
             if (nIndex == 0)
-                xRet = *aItr;
+                xRet = aItr->get();
             else
                 --nIndex;
         }
@@ -390,29 +363,22 @@ void ScAccessiblePageHeader::AddChild(const EditTextObject* pArea, sal_uInt32 nI
 {
     if (pArea && (!pArea->GetText(0).isEmpty() || (pArea->GetParagraphCount() > 1)))
     {
-        if (maAreas[nIndex])
+        if (maAreas[nIndex].is())
         {
             if (!ScGlobal::EETextObjEqual(maAreas[nIndex]->GetEditTextObject(), pArea))
             {
-                maAreas[nIndex]->release();
                 maAreas[nIndex] = new ScAccessiblePageHeaderArea(this, mpViewShell, pArea, mbHeader, eAdjust);
-                maAreas[nIndex]->acquire();
             }
         }
         else
         {
             maAreas[nIndex] = new ScAccessiblePageHeaderArea(this, mpViewShell, pArea, mbHeader, eAdjust);
-            maAreas[nIndex]->acquire();
         }
         ++mnChildCount;
     }
     else
     {
-        if (maAreas[nIndex])
-        {
-            maAreas[nIndex]->release();
-            maAreas[nIndex] = nullptr;
-        }
+        maAreas[nIndex].clear();
     }
 }
 
diff --git a/sc/source/ui/inc/AccessiblePageHeader.hxx b/sc/source/ui/inc/AccessiblePageHeader.hxx
index 395f80b..6a8645f 100644
--- a/sc/source/ui/inc/AccessiblePageHeader.hxx
+++ b/sc/source/ui/inc/AccessiblePageHeader.hxx
@@ -22,6 +22,7 @@
 
 #include "AccessibleContextBase.hxx"
 #include <editeng/svxenum.hxx>
+#include <rtl/ref.hxx>
 
 class ScPreviewShell;
 class EditTextObject;
@@ -83,8 +84,8 @@ private:
     ScPreviewShell*     mpViewShell;
     sal_Int32           mnIndex;
     bool                mbHeader;
-    typedef std::vector< ScAccessiblePageHeaderArea* > ScHFAreas;
-    ScHFAreas           maAreas;
+    std::vector< rtl::Reference<ScAccessiblePageHeaderArea> >
+                        maAreas;
     sal_Int32           mnChildCount;
 
     bool IsDefunc(
commit 3b395bc73fb8709c738adebd94de8319e27ba878
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 17 11:11:05 2017 +0200

    manage SvxPropertySetInfoPool.mpInfos with rtl::Reference
    
    instead of with manual acquire()
    
    Change-Id: I9fac619730df6a070c5f0d887ecf9249bd7d65a6

diff --git a/include/svx/unoprov.hxx b/include/svx/unoprov.hxx
index f8795e6..9ac270c 100644
--- a/include/svx/unoprov.hxx
+++ b/include/svx/unoprov.hxx
@@ -25,6 +25,7 @@
 #include <svl/itemprop.hxx>
 #include <svx/svxdllapi.h>
 #include <editeng/unoipset.hxx>
+#include <rtl/ref.hxx>
 
 
 class SvxItemPropertySet;
@@ -116,7 +117,7 @@ public:
     SVX_DLLPUBLIC static comphelper::PropertySetInfo* getOrCreate( sal_Int32 nServiceId ) throw();
 
 private:
-    static comphelper::PropertySetInfo* mpInfos[SVXUNO_SERVICEID_LASTID+1];
+    static rtl::Reference<comphelper::PropertySetInfo> mxInfos[SVXUNO_SERVICEID_LASTID+1];
 };
 
 #endif
diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx
index 2d9f97c..32beef8 100644
--- a/svx/source/unodraw/unoprov.cxx
+++ b/svx/source/unodraw/unoprov.cxx
@@ -1375,21 +1375,20 @@ comphelper::PropertySetInfo* SvxPropertySetInfoPool::getOrCreate( sal_Int32 nSer
         return nullptr;
     }
 
-    if( mpInfos[ nServiceId ] == nullptr )
+    if( !mxInfos[ nServiceId ].is() )
     {
-        mpInfos[nServiceId] = new comphelper::PropertySetInfo();
-        mpInfos[nServiceId]->acquire();
+        mxInfos[nServiceId] = new comphelper::PropertySetInfo();
 
         switch( nServiceId )
         {
         case SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS:
-            mpInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS]->add( ImplGetSvxDrawingDefaultsPropertyMap() );
+            mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS]->add( ImplGetSvxDrawingDefaultsPropertyMap() );
             break;
         case SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER:
-            mpInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetSvxDrawingDefaultsPropertyMap() );
-            mpInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->remove( UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION );
+            mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetSvxDrawingDefaultsPropertyMap() );
+            mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->remove( UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION );
             // OD 13.10.2003 #i18732# - add property map for writer item 'IsFollowingTextFlow'
-            mpInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetAdditionalWriterDrawingDefaultsPropertyMap() );
+            mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetAdditionalWriterDrawingDefaultsPropertyMap() );
             break;
 
         default:
@@ -1397,9 +1396,9 @@ comphelper::PropertySetInfo* SvxPropertySetInfoPool::getOrCreate( sal_Int32 nSer
         }
     }
 
-    return mpInfos[ nServiceId ];
+    return mxInfos[ nServiceId ].get();
 }
 
-comphelper::PropertySetInfo* SvxPropertySetInfoPool::mpInfos[SVXUNO_SERVICEID_LASTID+1] = { nullptr };
+rtl::Reference<comphelper::PropertySetInfo> SvxPropertySetInfoPool::mxInfos[SVXUNO_SERVICEID_LASTID+1] = { nullptr };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list