X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fengine%2FDispatcher.cxx;h=46d649cfd021f122661fba471fc420baff87eeb1;hb=255150e4eec79294bbd06c7c464f309b4a264960;hp=95afd669d666ab24965db48ba14f85ebc02ed859;hpb=fbc4862b8d9d3803c5058c2d77e341b0cc3b1313;p=modules%2Fyacs.git diff --git a/src/engine/Dispatcher.cxx b/src/engine/Dispatcher.cxx index 95afd669d..46d649cfd 100644 --- a/src/engine/Dispatcher.cxx +++ b/src/engine/Dispatcher.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2019 CEA/DEN, EDF R&D +// Copyright (C) 2006-2023 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -40,6 +40,11 @@ void Observer::notifyObserver2(Node* object,const std::string& event, void *some DEBTRACE("notifyObserver2 " << event << object ); } +void Observer::notifyObserverFromClone(Node *originalInstance, const std::string& event, Node *clonedInstanceGeneratingEvent) +{ + DEBTRACE("notifyObserverFromClone " << event << originalInstance ); +} + Dispatcher* Dispatcher::_singleton = 0; Dispatcher::~Dispatcher() @@ -104,6 +109,19 @@ void Dispatcher::dispatch2(Node* object,const std::string& event, void *somethin } } +void Dispatcher::dispatchFromClone(Node *originalInstance, const std::string& event, Node *clonedInstanceGeneratingEvent) +{ + std::pair key(originalInstance,event); + std::map< std::pair , std::set >::const_iterator it(_observers.find(key)); + if(it!=_observers.end()) + { + for(std::set::const_iterator iter=(*it).second.begin();iter!=(*it).second.end();iter++) + { + (*iter)->notifyObserverFromClone(originalInstance,event,clonedInstanceGeneratingEvent); + } + } +} + void Dispatcher::addObserver(Observer* observer,Node* object, const std::string& event) { _observers[std::pair(object,event)].insert(observer);