]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Modifications in SalomeApp_DataModel::BuildTree(...) function :
authormkr <mkr@opencascade.com>
Wed, 13 Jul 2005 10:00:43 +0000 (10:00 +0000)
committermkr <mkr@opencascade.com>
Wed, 13 Jul 2005 10:00:43 +0000 (10:00 +0000)
don't skip during update those modules, which is already published
in object browser, but not yet loaded.

src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_DataModel.cxx

index 1db79fa56e37f7c03f731a03474c890732f2d0ee..3f1e503ae9cd2aa2a4d0b1ac872d427e567df695 100644 (file)
@@ -541,7 +541,7 @@ void SalomeApp_Application::onLoadDoc()
   SUIT_Application* aApp = 0;
   
   for (unsigned int ind = 0; ind < List.size(); ind++) {
-     studyname = List[ind];
+     studyname = List[ind].c_str();
      //Add to list only unloaded studies
      bool isAlreadyOpen = false;
      for ( QPtrListIterator<SUIT_Application> it( aAppList ); it.current() && !isAlreadyOpen; ++it )
@@ -1688,7 +1688,7 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
 
        if ( aComponent->ComponentDataType() == "Interface Applicative" )
          continue; // skip the magic "Interface Applicative" component
-    
+           
        SalomeApp_DataModel::BuildTree( aComponent, study->root(), study, /*skipExisitng=*/true );
       }
     }
index b9dd382e56a56e231dc841d60e8f7f75b82f4a7e..1d771e2c64cd96249256d87d51eb2f7f40adf2c2 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
 
 #include "SALOMEDS_Tool.hxx"
 
@@ -46,9 +47,25 @@ SUIT_DataObject* SalomeApp_DataModel::BuildTree( const _PTR(SObject)& obj,
     {
       QString aSName( aSComp->GetName().c_str() );
       DataObjectList allComponents = parent->children( /*recursive=*/false );
-      for ( DataObjectListIterator it( allComponents ); it.current(); ++it )
-       if ( it.current()->name() == aSName )
-         return it.current();
+      for ( DataObjectListIterator it( allComponents ); it.current(); ++it ) {
+       SUIT_DataObject* componentObj = it.current();
+       if ( componentObj->name() == aSName ) {
+         //mkr : modifications for update already published in 
+         //object browser, but not loaded yet component
+         //get names list of loaded modules
+         QStringList aLoadedModNames;
+         CAM_Application* anApp = dynamic_cast<CAM_Application*>( SUIT_Session::session()->activeApplication() );
+         if ( anApp ) anApp->modules( aLoadedModNames, /*loaded*/true );
+         if ( !aLoadedModNames.isEmpty() && aLoadedModNames.contains( aSName ) == 0 ) {
+           // delete DataObject and re-create it and all its sub-objects
+           delete componentObj;
+           // don't do anything here, because iterator may be corrupted (deleted object inside it)
+           break;
+         }
+         else
+           return componentObj;
+       }
+      }
     }
 
     aDataObj = aSComp ? new SalomeApp_ModuleObject( aSComp, parent ) :