Salome HOME
+ EventListenerData* GetEventListenerData(const std::string& listenerName) const;
authoreap <eap@opencascade.com>
Mon, 24 Sep 2012 11:25:47 +0000 (11:25 +0000)
committereap <eap@opencascade.com>
Mon, 24 Sep 2012 11:25:47 +0000 (11:25 +0000)
src/SMESH/SMESH_subMesh.cxx
src/SMESH/SMESH_subMesh.hxx

index e4060d0c295b08a55547596ca7538e1200d6fef1..d048ce2b084f84c50483b021403bae449e92e6b0 100644 (file)
@@ -2097,6 +2097,23 @@ EventListenerData* SMESH_subMesh::GetEventListenerData(EventListener* listener)
   return 0;
 }
 
+//================================================================================
+/*!
+ * \brief Return an event listener data
+ * \param listenerName - the listener name
+ * \retval EventListenerData* - found data, maybe NULL
+ */
+//================================================================================
+
+EventListenerData* SMESH_subMesh::GetEventListenerData(const string& listenerName) const
+{
+  map< EventListener*, EventListenerData* >::const_iterator l_d = _eventListeners.begin();
+  for ( ; l_d != _eventListeners.end(); ++l_d )
+    if ( listenerName == l_d->first->GetName() )
+      return l_d->second;
+  return 0;
+}
+
 //================================================================================
 /*!
  * \brief Notify stored event listeners on the occured event
@@ -2137,8 +2154,15 @@ void SMESH_subMesh::DeleteEventListener(EventListener* listener)
   map< EventListener*, EventListenerData* >::iterator l_d =
     _eventListeners.find( listener );
   if ( l_d != _eventListeners.end() ) {
-    if ( l_d->first  && l_d->first->IsDeletable() )  delete l_d->first;
-    if ( l_d->second && l_d->second->IsDeletable() ) delete l_d->second;
+    if ( l_d->first && l_d->first->IsDeletable() )
+    {
+      l_d->first->BeforeDelete( this, l_d->second );
+      delete l_d->first;
+    }
+    if ( l_d->second && l_d->second->IsDeletable() )
+    {
+      delete l_d->second;
+    }
     _eventListeners.erase( l_d );
   }
 }
index 028a249b288606932c45934ac2c0b219f858ea2d..057f532a7d3fb13db34481171e98c15bcd048f39 100644 (file)
@@ -138,6 +138,13 @@ class SMESH_EXPORT SMESH_subMesh
    */
   EventListenerData* GetEventListenerData(EventListener* listener) const;
 
+  /*!
+   * \brief Return an event listener data
+    * \param listenerName - the listener name
+    * \retval EventListenerData* - found data, maybe NULL
+   */
+  EventListenerData* GetEventListenerData(const std::string& listenerName) const;
+
   /*!
    * \brief Unregister the listener and delete it and it's data
     * \param listener - the event listener to delete