]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix for the bug 'IPAL22705 Wrong behavior of "visibility" icons'.
authorrnv <rnv@opencascade.com>
Thu, 11 Aug 2011 11:43:20 +0000 (11:43 +0000)
committerrnv <rnv@opencascade.com>
Thu, 11 Aug 2011 11:43:20 +0000 (11:43 +0000)
src/CAM/CAM_Module.cxx
src/CAM/CAM_Module.h
src/LightApp/LightApp_Displayer.cxx
src/SalomeApp/SalomeApp_Module.cxx
src/SalomeApp/SalomeApp_Module.h

index 01560f0b065cea23b8c13154b274f8c06f2b877f..f1ea619beab1d4de0652fff011643e5610b6a6c6 100755 (executable)
@@ -1015,6 +1015,14 @@ QAction* CAM_Module::separator()
   return QtxActionMgr::separator();
 }
 
+/*!
+  \brief Update visibility state of the module objects.
+*/
+void CAM_Module::updateModuleVisibilityState() {
+
+}
+
+
 /*!
   \brief Connect data model of the module to the active study
   \param camStudy CAM study object
index ee865d9ff9348e8d7560025949bbe2754f051173..e464e876f52fc16ad8c87ed0da10fc832d466b95 100755 (executable)
@@ -80,6 +80,8 @@ public:
   void                   setToolShown( QAction*, const bool );
   void                   setToolShown( const int, const bool );
 
+  virtual void           updateModuleVisibilityState();
+
 public slots:
   virtual bool           activateModule( SUIT_Study* );
   virtual bool           deactivateModule( SUIT_Study* );
index d5d8ffd461fd65281ebec17f201f2f8c8ac64a76..81f935e78d59f211d9da15269452face1849f875 100644 (file)
@@ -311,16 +311,21 @@ LightApp_Displayer* LightApp_Displayer::FindDisplayer( const QString& mod_name,
     return 0;
 
   LightApp_Module* m = dynamic_cast<LightApp_Module*>( app ? app->module( mod_name ) : 0 );
+  bool wasLoaded = false;
   if( !m && load )
   {
     m = dynamic_cast<LightApp_Module*>( app->loadModule( mod_name, false ) );
-    if( m )
+       if( m ) {
       app->addModule( m );
+         wasLoaded = true;
+       }
   }
 
   if( m )
   {
     m->connectToStudy( dynamic_cast<CAM_Study*>( app->activeStudy() ) );
+       if( wasLoaded ) 
+               m->updateModuleVisibilityState();
   }
   return m ? m->displayer() : 0;
 }
index 68203ee31fa51f1c97edf0b1decb7e0025887034..cd88200d8589abdddf0eb0379ecddfc604a0d5d9 100644 (file)
@@ -150,32 +150,9 @@ bool SalomeApp_Module::activateModule( SUIT_Study* theStudy )
   if (!myIsFirstActivate)
     return state;
   
-  myIsFirstActivate = false;
-
-  // update visibility state of objects
-  SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(application());
-  if (!app)
-    return false;
-  
-  SUIT_DataBrowser* ob = app->objectBrowser();
-  if (!ob || !ob->model())
-    return false;
-
-  // connect to click on item
-  connect( ob->model(), SIGNAL( clicked( SUIT_DataObject*, int ) ),
-           this, SLOT( onObjectClicked( SUIT_DataObject*, int ) ), Qt::UniqueConnection );
-
+  updateModuleVisibilityState();
 
-  SUIT_DataObject* rootObj = ob->root();
-  if( !rootObj )
-    return false;
-  
-  DataObjectList listObj = rootObj->children( true );
-  
-  SUIT_ViewModel* vmod = 0;
-  if ( SUIT_ViewManager* vman = app->activeViewManager() )
-    vmod = vman->getViewModel();
-  app->updateVisibilityState( listObj, vmod );
+  myIsFirstActivate = false;
   
   return state;
 }
@@ -291,3 +268,30 @@ bool SalomeApp_Module::renameObject( const QString& /*entry*/, const QString& /*
   }
   return true;
 }
+
+void SalomeApp_Module::updateModuleVisibilityState() {
+
+  // update visibility state of objects
+  SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+  if (!app)
+    return;
+  
+  SUIT_DataBrowser* ob = app->objectBrowser();
+  if (!ob || !ob->model())
+    return;
+
+  // connect to click on item
+  connect( ob->model(), SIGNAL( clicked( SUIT_DataObject*, int ) ),
+           this, SLOT( onObjectClicked( SUIT_DataObject*, int ) ), Qt::UniqueConnection );
+
+  SUIT_DataObject* rootObj = ob->root();
+  if( !rootObj )
+    return;
+  
+  DataObjectList listObj = rootObj->children( true );
+  
+  SUIT_ViewModel* vmod = 0;
+  if ( SUIT_ViewManager* vman = app->activeViewManager() )
+    vmod = vman->getViewModel();
+  app->updateVisibilityState( listObj, vmod );
+}
\ No newline at end of file
index b3161a0e22f828c6876e1238e8807c729d6859df..cfe8f0933724b5b677962e5e7109635002cb2d6a 100644 (file)
@@ -72,6 +72,8 @@ public:
   virtual void                        studyClosed( SUIT_Study* );
   virtual void                        onObjectClicked( SUIT_DataObject*, int );
 
+  virtual void                        updateModuleVisibilityState();
+
 protected:
   virtual CAM_DataModel*              createDataModel();
   virtual void                        extractContainers( const SALOME_ListIO&, SALOME_ListIO& ) const;