X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FObjBrowser%2FOB_Browser.cxx;h=a660a57d762860607f6a1f12c68544be83fdc7ef;hb=95c32a3d017f9611ca3519ad1da9c9c23b4e183d;hp=06e3e42a850a158d798e12cb310fde1ddca5ca5e;hpb=1a50a38c7ede06d08e081fba53b4be3c9164ed0c;p=modules%2Fgui.git diff --git a/src/ObjBrowser/OB_Browser.cxx b/src/ObjBrowser/OB_Browser.cxx index 06e3e42a8..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; @@ -479,14 +486,9 @@ void OB_Browser::setAppropriateColumn( const int id, const bool on ) myView->setAppropriate( myColumnIds[id], on ); } -void OB_Browser::updateTree( SUIT_DataObject* o ) +void OB_Browser::updateTree( SUIT_DataObject* obj ) { - updateTree( o ? o : getRootObject(), false ); -} - -void OB_Browser::updateTree( SUIT_DataObject* obj, const bool notify ) -{ - if ( !obj ) + if ( !obj && !(obj = getRootObject()) ) return; DataObjectKey curKey; @@ -497,14 +499,6 @@ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool notify ) SUIT_DataObject* curObj = storeState( selObjs, openObjs, selKeys, openKeys, curKey ); - if ( notify ) - { - bool upd = isAutoUpdate(); - setAutoUpdate( false ); - emit aboutRefresh(); - setAutoUpdate( upd ); - } - createConnections( obj ); updateView( obj ); @@ -518,7 +512,7 @@ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool notify ) 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; @@ -534,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 ) @@ -745,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(); @@ -769,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 @@ -875,11 +885,6 @@ void OB_Browser::onExpand() expand( listViewItem( itr.current() ) ); } -void OB_Browser::onRefresh() -{ - updateTree( 0, true ); -} - void OB_Browser::onColumnVisible( int id ) { setColumnShown( id, !isColumnVisible( id ) ); @@ -963,7 +968,7 @@ bool OB_Browser::eventFilter( QObject* o, QEvent* e ) void OB_Browser::contextMenuPopup( QPopupMenu* menu ) { - QValueList cols; +/* QValueList cols; for ( QMap::ConstIterator it = myColumnIds.begin(); it != myColumnIds.end(); ++it ) { if ( appropriateColumn( it.key() ) ) @@ -983,7 +988,7 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) menu->setItemParameter( id, *iter ); } if ( menu->count() != num ) - menu->insertSeparator(); + menu->insertSeparator();*/ DataObjectList selected; getSelected( selected ); @@ -997,7 +1002,6 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) menu->insertItem( tr( "MEN_EXPAND_ALL" ), this, SLOT( onExpand() ) ); menu->insertSeparator(); } - menu->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) ); } void OB_Browser::expand( QListViewItem* item ) @@ -1040,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 ) @@ -1077,9 +1082,9 @@ void OB_Browser::openBranch( QListViewItem* item, const int level ) if ( !item || level < 1 || !item->childCount() ) return; - item->setOpen( true ); while ( item ) { + item->setOpen( true ); openBranch( item->firstChild(), level - 1 ); item = item->nextSibling(); }