X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ObjComboBox.cxx;h=6ead5e400e990a34767327a589e5f33883aa651d;hb=d6e19029f8b41f295db878e9aecf451c2edda4af;hp=3b199309b8ba5f5e4116feef745b802d028cc85c;hpb=065b0e007bb1d8d2b4962cfea24d3d476522e028;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ObjComboBox.cxx b/src/HYDROGUI/HYDROGUI_ObjComboBox.cxx index 3b199309..6ead5e40 100644 --- a/src/HYDROGUI/HYDROGUI_ObjComboBox.cxx +++ b/src/HYDROGUI/HYDROGUI_ObjComboBox.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -28,6 +24,7 @@ #include #include +#include #include #include #include @@ -44,7 +41,8 @@ HYDROGUI_ObjComboBox::HYDROGUI_ObjComboBox( HYDROGUI_Module* theModule, const QS QBoxLayout* base = new QHBoxLayout( this ); base->setMargin( 0 ); - base->addWidget( new QLabel( theTitle, this ) ); + if ( !theTitle.isEmpty() ) + base->addWidget( new QLabel( theTitle, this ) ); base->addWidget( myObject = new QComboBox( this ) ); myObject->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); @@ -80,9 +78,17 @@ void HYDROGUI_ObjComboBox::setObjectFilter( HYDROGUI_ObjComboBoxFilter* filter ) void HYDROGUI_ObjComboBox::reset() { + bool block = myObject->signalsBlocked(); + myObject->blockSignals( true ); + myObject->clear(); myObject->addItems( objectNames() ); - onSelectionChanged(); + myObject->setCurrentIndex( -1 ); + + myObject->blockSignals( block ); + + onIndexChanged( myObject->currentIndex() ); + updateSelection(); } void HYDROGUI_ObjComboBox::setSectedObject( const QString& theName ) @@ -129,13 +135,21 @@ void HYDROGUI_ObjComboBox::onIndexChanged( int idx ) } void HYDROGUI_ObjComboBox::onSelectionChanged() +{ + if ( !objectFilter() || objectFilter()->isActive( this ) ) + QTimer::singleShot( 0, this, SLOT( updateSelection() ) ); +} + +void HYDROGUI_ObjComboBox::updateSelection() { int idx = -1; Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::GetSelectedObject( module() ); if ( !anObject.IsNull() ) idx = myObject->findText( anObject->GetName() ); - myObject->setCurrentIndex( idx ); - if ( idx >= 0 ) + if ( idx >= 0 && myObject->currentIndex() != idx ) + { + myObject->setCurrentIndex( idx ); emit objectSelected( myObject->itemText( idx ) ); + } }