]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Avoid ciclik call of addModule() method on activation of Shaper module
authorvsv <vsv@opencascade.com>
Tue, 9 Jun 2020 14:49:43 +0000 (17:49 +0300)
committervsv <vsv@opencascade.com>
Tue, 9 Jun 2020 14:49:43 +0000 (17:49 +0300)
src/CAM/CAM_Application.cxx
src/CAM/CAM_Application.h
src/LightApp/LightApp_Application.cxx

index 9612c4e4db8b6aefd932a38e3000daa99d0744d1..aeabb7a47842037968ce68dfd39e304f5df74c75 100644 (file)
@@ -417,6 +417,7 @@ bool CAM_Application::activateModule( const QString& modName )
   bool res = false;
   if ( !modName.isEmpty() )
   {
+    myActvatingModule = modName;
     CAM_Module* mod = module( modName );
     if ( !mod )
       mod = loadModule( modName );
@@ -424,6 +425,7 @@ bool CAM_Application::activateModule( const QString& modName )
 
     if ( mod )
       res = activateModule( mod );
+    myActvatingModule = QString();
   }
   else
     res = activateModule( 0 );
index b0b69d3f6423aba76ae753b6dc49e3514272a724..0dae7d11fa548659fc3e880d360893e32cb43e70 100644 (file)
@@ -94,6 +94,8 @@ protected:
 
   virtual bool        abortAllOperations();
 
+  QString             actvatingModule() const { return myActvatingModule; }
+
 private:
   void                readModuleList();
 
@@ -111,6 +113,7 @@ private:
   static ModuleInfoList myInfoList;      //!< modules info list
   bool                  myAutoLoad;      //!< auto loading flag
   bool                  myBlocked;       //!< "blocked" flag, internal usage
+  QString               myActvatingModule; //!< Name of currently activating module.
 };
 
 #ifdef WIN32
index baf53032e6ab4c4a8cd80ff75221d2f616aab8dc..14a63145c90b5525dc8ef2b692fa6e49b41b737c 100644 (file)
@@ -4958,20 +4958,24 @@ void LightApp_Application::onDesktopMessage( const QString& message )
   }
   else if ( message.toLower().startsWith("register_module_in_study" ) ) {
     QString moduleName = message.split( sectionSeparator ).last();
-    CAM_Module* mod = module( moduleName );
-     if ( !mod )
-        mod = module( moduleTitle( moduleName ) );
-     if ( !mod ) {
-        mod = loadModule( moduleName );
-        if ( !mod )
-          mod = loadModule( moduleTitle( moduleName) );
-        if ( mod ) {
+    // Check name of current activating module name in order to avoid ciclik 
+    // call because of messages
+    if (actvatingModule().isNull()) {
+      CAM_Module* mod = module(moduleName);
+      if (!mod)
+        mod = module(moduleTitle(moduleName));
+      if (!mod) {
+        mod = loadModule(moduleName);
+        if (!mod)
+          mod = loadModule(moduleTitle(moduleName));
+        if (mod) {
           addModule(mod);
           CAM_Study* anActiveStudy = dynamic_cast<CAM_Study*>(activeStudy());
           if (anActiveStudy)
             mod->connectToStudy(anActiveStudy);
         }
-     }
+      }
+    }
   }
   else {
     QStringList data = message.split( sectionSeparator );