Salome HOME
getViewManager() correction
[modules/gui.git] / src / SalomeApp / SalomeApp_OBSelector.cxx
index 025e337bf8a7889171c3d12d168d06a85d8d2fd1..e40eecfc8b67be2cc36e0c14a58a2a95d05cfda1 100644 (file)
@@ -8,12 +8,13 @@
 #include <SUIT_DataObjectIterator.h>
 
 SalomeApp_OBSelector::SalomeApp_OBSelector( OB_Browser* ob, SUIT_SelectionMgr* mgr )
-: QObject( 0 ),
-SUIT_Selector( mgr ),
-myBrowser( ob )
+: SUIT_Selector( mgr, ob ),
+  myBrowser( ob )
 {
-  if ( myBrowser )
+  if ( myBrowser ) {
     connect( myBrowser, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
+    connect( myBrowser, SIGNAL( destroyed() ), this, SLOT( onBrowserDestroyed() ) ); 
+  }    
 }
 
 SalomeApp_OBSelector::~SalomeApp_OBSelector()
@@ -25,6 +26,7 @@ OB_Browser* SalomeApp_OBSelector::browser() const
   return myBrowser;
 }
 
+
 void SalomeApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& list ) const
 {
   if ( !myBrowser )
@@ -36,7 +38,11 @@ void SalomeApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& list ) const
   {
     SalomeApp_DataObject* obj = dynamic_cast<SalomeApp_DataObject*>( it.current() );
     if ( obj )
-      list.append( SUIT_DataOwnerPtr( new SalomeApp_DataOwner( obj->entry() ) ) );
+    {
+      Handle( SALOME_InteractiveObject ) aSObj = new SALOME_InteractiveObject
+       ( obj->entry(), obj->componentDataType(), obj->name() );
+      list.append( SUIT_DataOwnerPtr( new SalomeApp_DataOwner( aSObj  ) ) );
+    }
   }
 }
 
@@ -64,6 +70,11 @@ void SalomeApp_OBSelector::onSelectionChanged()
   selectionChanged();
 }
 
+void SalomeApp_OBSelector::onBrowserDestroyed()
+{
+  delete this;
+}
+
 void SalomeApp_OBSelector::fillEntries( QMap<QString, SalomeApp_DataObject*>& entires )
 {
   entires.clear();