+ // Remove defunct view managers from the map.
+ // It's essential to do this before "update( UF_All )" call!
+ QList<int> anObsoleteIds;
+ ViewManagerList anAllViewManagers = anApp->viewManagers();
+ ViewManagerList aHydroViewManagers; // view managers created inside the HYDRO module
+ ViewManagerMapIterator anIter( myViewManagerMap );
+ while( anIter.hasNext() ) {
+ int anId = anIter.next().key();
+ const ViewManagerInfo& anInfo = anIter.value();
+
+ aHydroViewManagers << anInfo.first;
+
+ if ( !anAllViewManagers.contains( anInfo.first ) ) {
+ anObsoleteIds << anId;
+ }
+ }
+ foreach ( const int anId, anObsoleteIds ) {
+ myViewManagerMap.remove( anId );
+ myObjectStateMap.remove( anId );
+ myObjectDisplayOrderMap.remove( anId );
+ myShapesMap.remove( anId );
+ myVTKPrsMap.remove( anId );
+ }
+ // Replace the default selector for all view managers.
+ // Add view managers created outside of HYDRO module to the map.
+ foreach ( SUIT_ViewManager* aViewManager, anAllViewManagers ) {
+ createSelector( aViewManager ); // replace the default selector
+ if ( !aHydroViewManagers.contains( aViewManager ) ) {
+ ViewManagerInfo anInfo( aViewManager, VMR_General );
+ myViewManagerMap.insert( ViewManagerId++, anInfo );
+ }
+ }
+