[Libreoffice-commits] core.git: framework/source

Maxim Monastirsky momonasmon at gmail.com
Sun May 14 09:07:28 UTC 2017


 framework/source/uielement/menubarmanager.cxx |  131 +++++++++++---------------
 1 file changed, 60 insertions(+), 71 deletions(-)

New commits:
commit c7c445e93baf6bbe82f9ed8da02436d1f7e0b237
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Thu May 11 01:57:23 2017 +0300

    Remove useless m_xContext.is() check
    
    Similar to commit 32680923221e1 ("Fix the copy-paste").
    The original code was using this to get URLTransformer,
    but it was later switched to using m_xURLTransformer
    in ca00697e3dae9 ("CWS-TOOLING: integrate CWS oj18").
    
    Change-Id: I05592915a651a9d8e0fc443f6adeb494704a99d8
    Reviewed-on: https://gerrit.libreoffice.org/37588
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>

diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index 365f1c5b49d5..919c77db213a 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -489,68 +489,62 @@ void MenuBarManager::RemoveListener()
 {
     SolarMutexGuard g;
 
-    // Check service manager reference. Remove listener can be called due
-    // to a disposing call from the frame and therefore we already removed
-    // our listeners and release the service manager reference!
-    if ( m_xContext.is() )
+    std::vector< MenuItemHandler* >::iterator p;
+    for ( p = m_aMenuItemHandlerVector.begin(); p != m_aMenuItemHandlerVector.end(); ++p )
     {
-        std::vector< MenuItemHandler* >::iterator p;
-        for ( p = m_aMenuItemHandlerVector.begin(); p != m_aMenuItemHandlerVector.end(); ++p )
+        MenuItemHandler* pItemHandler = *p;
+        if ( pItemHandler->xMenuItemDispatch.is() )
         {
-            MenuItemHandler* pItemHandler = *p;
-            if ( pItemHandler->xMenuItemDispatch.is() )
-            {
-                URL aTargetURL;
-                aTargetURL.Complete = pItemHandler->aMenuItemURL;
-                m_xURLTransformer->parseStrict( aTargetURL );
+            URL aTargetURL;
+            aTargetURL.Complete = pItemHandler->aMenuItemURL;
+            m_xURLTransformer->parseStrict( aTargetURL );
 
-                pItemHandler->xMenuItemDispatch->removeStatusListener(
-                    static_cast< XStatusListener* >( this ), aTargetURL );
-            }
+            pItemHandler->xMenuItemDispatch->removeStatusListener(
+                static_cast< XStatusListener* >( this ), aTargetURL );
+        }
 
-            pItemHandler->xMenuItemDispatch.clear();
+        pItemHandler->xMenuItemDispatch.clear();
 
-            if ( pItemHandler->xPopupMenu.is() )
+        if ( pItemHandler->xPopupMenu.is() )
+        {
             {
-                {
-                    // Remove popup menu from menu structure
-                    m_pVCLMenu->SetPopupMenu( pItemHandler->nItemId, nullptr );
-                }
-
-                Reference< css::lang::XEventListener > xEventListener( pItemHandler->xPopupMenuController, UNO_QUERY );
-                if ( xEventListener.is() )
-                {
-                    EventObject aEventObject;
-                    aEventObject.Source = static_cast<OWeakObject *>(this);
-                    xEventListener->disposing( aEventObject );
-                }
+                // Remove popup menu from menu structure
+                m_pVCLMenu->SetPopupMenu( pItemHandler->nItemId, nullptr );
+            }
 
-                // We now provide a popup menu controller to external code.
-                // Therefore the life-time must be explicitly handled via
-                // dispose!!
-                try
-                {
-                    Reference< XComponent > xComponent( pItemHandler->xPopupMenuController, UNO_QUERY );
-                    if ( xComponent.is() )
-                        xComponent->dispose();
-                }
-                catch ( const RuntimeException& )
-                {
-                    throw;
-                }
-                catch ( const Exception& )
-                {
-                }
+            Reference< css::lang::XEventListener > xEventListener( pItemHandler->xPopupMenuController, UNO_QUERY );
+            if ( xEventListener.is() )
+            {
+                EventObject aEventObject;
+                aEventObject.Source = static_cast<OWeakObject *>(this);
+                xEventListener->disposing( aEventObject );
+            }
 
-                // Release references to controller and popup menu
-                pItemHandler->xPopupMenuController.clear();
-                pItemHandler->xPopupMenu.clear();
+            // We now provide a popup menu controller to external code.
+            // Therefore the life-time must be explicitly handled via
+            // dispose!!
+            try
+            {
+                Reference< XComponent > xComponent( pItemHandler->xPopupMenuController, UNO_QUERY );
+                if ( xComponent.is() )
+                    xComponent->dispose();
+            }
+            catch ( const RuntimeException& )
+            {
+                throw;
+            }
+            catch ( const Exception& )
+            {
             }
 
-            Reference< XComponent > xComponent( pItemHandler->xSubMenuManager, UNO_QUERY );
-            if ( xComponent.is() )
-                xComponent->dispose();
+            // Release references to controller and popup menu
+            pItemHandler->xPopupMenuController.clear();
+            pItemHandler->xPopupMenu.clear();
         }
+
+        Reference< XComponent > xComponent( pItemHandler->xSubMenuManager, UNO_QUERY );
+        if ( xComponent.is() )
+            xComponent->dispose();
     }
 
     try
@@ -591,30 +585,25 @@ void SAL_CALL MenuBarManager::disposing( const EventObject& Source )
         URL aTargetURL;
         aTargetURL.Complete = pMenuItemDisposing->aMenuItemURL;
 
-        // Check reference of service manager before we use it. Reference could
-        // be cleared due to RemoveListener call!
-        if ( m_xContext.is() )
+        m_xURLTransformer->parseStrict( aTargetURL );
+
+        pMenuItemDisposing->xMenuItemDispatch->removeStatusListener(
+            static_cast< XStatusListener* >( this ), aTargetURL );
+        pMenuItemDisposing->xMenuItemDispatch.clear();
+        if ( pMenuItemDisposing->xPopupMenu.is() )
         {
-            m_xURLTransformer->parseStrict( aTargetURL );
+            Reference< css::lang::XEventListener > xEventListener( pMenuItemDisposing->xPopupMenuController, UNO_QUERY );
+            if ( xEventListener.is() )
+                xEventListener->disposing( Source );
 
-            pMenuItemDisposing->xMenuItemDispatch->removeStatusListener(
-                static_cast< XStatusListener* >( this ), aTargetURL );
-            pMenuItemDisposing->xMenuItemDispatch.clear();
-            if ( pMenuItemDisposing->xPopupMenu.is() )
             {
-                Reference< css::lang::XEventListener > xEventListener( pMenuItemDisposing->xPopupMenuController, UNO_QUERY );
-                if ( xEventListener.is() )
-                    xEventListener->disposing( Source );
-
-                {
-                    // Remove popup menu from menu structure as we release our reference to
-                    // the controller.
-                    m_pVCLMenu->SetPopupMenu( pMenuItemDisposing->nItemId, nullptr );
-                }
-
-                pMenuItemDisposing->xPopupMenuController.clear();
-                pMenuItemDisposing->xPopupMenu.clear();
+                // Remove popup menu from menu structure as we release our reference to
+                // the controller.
+                m_pVCLMenu->SetPopupMenu( pMenuItemDisposing->nItemId, nullptr );
             }
+
+            pMenuItemDisposing->xPopupMenuController.clear();
+            pMenuItemDisposing->xPopupMenu.clear();
         }
         return;
     }


More information about the Libreoffice-commits mailing list