b8e761b
From 6f42aa185adc436d976da04b8b193dfe25d61f7a Mon Sep 17 00:00:00 2001
b8e761b
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
b8e761b
Date: Fri, 17 Jun 2011 13:38:27 +0100
b8e761b
Subject: [PATCH] Related: rhbz#702833 addEventListener without
b8e761b
 removeEventListener
b8e761b
b8e761b
---
b8e761b
 .../source/deployment/gui/dp_gui_extlistbox.cxx    |   12 +++++++++++-
b8e761b
 1 files changed, 11 insertions(+), 1 deletions(-)
b8e761b
b8e761b
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
b8e761b
index 8cdf0a6..3d0d426 100644
b8e761b
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
b8e761b
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
b8e761b
@@ -970,18 +970,20 @@ long ExtensionBox_Impl::addEntry( const uno::Reference< deployment::XPackage > &
b8e761b
     if ( ! pEntry->m_sTitle.Len() )
b8e761b
         return 0;
b8e761b
 
b8e761b
-    xPackage->addEventListener( uno::Reference< lang::XEventListener > ( m_xRemoveListener, uno::UNO_QUERY ) );
b8e761b
+    bool bNewEntryInserted = false;
b8e761b
 
b8e761b
     ::osl::ClearableMutexGuard guard(m_entriesMutex);
b8e761b
     if ( m_vEntries.empty() )
b8e761b
     {
b8e761b
         m_vEntries.push_back( pEntry );
b8e761b
+        bNewEntryInserted = true;
b8e761b
     }
b8e761b
     else
b8e761b
     {
b8e761b
         if ( !FindEntryPos( pEntry, 0, m_vEntries.size()-1, nPos ) )
b8e761b
         {
b8e761b
             m_vEntries.insert( m_vEntries.begin()+nPos, pEntry );
b8e761b
+            bNewEntryInserted = true;
b8e761b
         }
b8e761b
         else if ( !m_bInCheckMode )
b8e761b
         {
b8e761b
@@ -989,6 +991,14 @@ long ExtensionBox_Impl::addEntry( const uno::Reference< deployment::XPackage > &
b8e761b
         }
b8e761b
     }
b8e761b
 
b8e761b
+    //Related: rhbz#702833 Only add a Listener if we're adding a new entry, to
b8e761b
+    //keep in sync with removeEventListener logic
b8e761b
+    if (bNewEntryInserted)
b8e761b
+    {
b8e761b
+        pEntry->m_xPackage->addEventListener(uno::Reference< lang::XEventListener > ( m_xRemoveListener, uno::UNO_QUERY ) );
b8e761b
+    }
b8e761b
+
b8e761b
+
b8e761b
     pEntry->m_bHasOptions = m_pManager->supportsOptions( xPackage );
b8e761b
     pEntry->m_bUser       = xPackage->getRepositoryName().equals( USER_PACKAGE_MANAGER );
b8e761b
     pEntry->m_bShared     = xPackage->getRepositoryName().equals( SHARED_PACKAGE_MANAGER );
b8e761b
-- 
b8e761b
1.7.5.4
b8e761b