X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FObjBrowser%2FOB_Browser.cxx;h=a660a57d762860607f6a1f12c68544be83fdc7ef;hb=95c32a3d017f9611ca3519ad1da9c9c23b4e183d;hp=dd6033a40a44bcdc7632fcf611e36dc13b5fb8c0;hpb=7287b371180c3030789569e97b9b5a5f731cc661;p=modules%2Fgui.git diff --git a/src/ObjBrowser/OB_Browser.cxx b/src/ObjBrowser/OB_Browser.cxx index dd6033a40..a660a57d7 100755 --- a/src/ObjBrowser/OB_Browser.cxx +++ b/src/ObjBrowser/OB_Browser.cxx @@ -179,6 +179,7 @@ void OB_Browser::setRootObject( SUIT_DataObject* theRoot ) if ( theRoot ) curObj = storeState( selObjs, openObjs, selKeys, openKeys, curKey ); + removeConnections( myRoot ); if ( myRoot != theRoot && isAutoDeleteObjects() ) delete myRoot; @@ -455,6 +456,12 @@ void OB_Browser::setColumnShown( const int id, const bool on ) myView->setShown( myColumnIds[id], on ); } +void OB_Browser::setWidthMode( QListView::WidthMode mode ) +{ + for ( int i = 0, n = myView->columns(); i < n; i++ ) + myView->setColumnWidthMode( i, mode ); +} + QValueList OB_Browser::columns() const { QValueList lst; @@ -505,7 +512,7 @@ void OB_Browser::updateTree( SUIT_DataObject* obj ) void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) { - if ( !src || !trg || src->root() != getRootObject() ) + if ( !src || !trg || src == trg || src->root() != getRootObject() ) return; DataObjectKey curKey; @@ -521,7 +528,8 @@ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) src->setParent( 0 ); - if ( src != trg && isAutoDeleteObjects() ) + removeConnections( src ); + if ( isAutoDeleteObjects() ) delete src; if ( parent && pos != -1 ) @@ -732,6 +740,7 @@ void OB_Browser::removeReferences( QListViewItem* item ) return; SUIT_DataObject* obj = dataObject( item ); + obj->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); myItems.remove( obj ); QListViewItem* i = item->firstChild(); @@ -756,6 +765,20 @@ void OB_Browser::createConnections( SUIT_DataObject* obj ) it.current()->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); } +void OB_Browser::removeConnections( SUIT_DataObject* obj ) +{ + if ( !obj ) + return; + + DataObjectList childList; + obj->children( childList, true ); + + childList.prepend( obj ); + + for ( DataObjectListIterator it( childList ); it.current(); ++it ) + it.current()->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); +} + SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& openObjs, DataObjectKeyMap& selKeys, DataObjectKeyMap& openKeys, DataObjectKey& curKey ) const @@ -1021,6 +1044,7 @@ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd ) QListViewItem* item = listViewItem( obj ); + obj->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); myItems.remove( obj ); if ( obj == myRoot )