X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetMultiSelector.cpp;h=40149e343af3eaa76486ab8e32c62541712a22ed;hb=8cd56d486b6e96b8814002f9f0f4acadd6cea11b;hp=8a703d3208963f6d253f7ad3863b2b09510c431c;hpb=898d1167030566b812400aee9ec5f57ec9643deb;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp index 8a703d320..40149e343 100755 --- a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp @@ -32,18 +32,25 @@ #include #include #include +#include #include #include +/** +* Customization of a List Widget to make it to be placed on full width of container +*/ class CustomListWidget : public QListWidget { public: + /// Constructor + /// \param theParent a parent widget CustomListWidget( QWidget* theParent ) : QListWidget( theParent ) { } + /// Redefinition of virtual method virtual QSize sizeHint() const { int aHeight = 2*QFontMetrics( font() ).height(); @@ -51,12 +58,24 @@ public: return QSize( aSize.width(), aHeight ); } + /// Redefinition of virtual method virtual QSize minimumSizeHint() const { - int aHeight = 2*QFontMetrics( font() ).height(); + int aHeight = 4/*2*/*QFontMetrics( font() ).height(); QSize aSize = QListWidget::minimumSizeHint(); return QSize( aSize.width(), aHeight ); } + +#ifndef WIN32 +// The code is necessary only for Linux because +//it can not update viewport on widget resize +protected: + void resizeEvent(QResizeEvent* theEvent) + { + QListWidget::resizeEvent(theEvent); + QTimer::singleShot(5, viewport(), SLOT(repaint())); + } +#endif }; ModuleBase_WidgetMultiSelector::ModuleBase_WidgetMultiSelector(QWidget* theParent, @@ -106,6 +125,9 @@ ModuleBase_WidgetMultiSelector::ModuleBase_WidgetMultiSelector(QWidget* theParen } myListControl = new CustomListWidget(this); + QString anObjName = QString::fromStdString(attributeID()); + myListControl->setObjectName(anObjName); + aMainLay->addWidget(myListControl, 2, 0, 1, -1); aMainLay->setRowStretch(2, 1); //aMainLay->addWidget(new QLabel(this)); //FIXME(sbh)??? @@ -297,8 +319,7 @@ QList ModuleBase_WidgetMultiSelector::getControls() const //******************************************************************** void ModuleBase_WidgetMultiSelector::onSelectionTypeChanged() { - activateSelection(true); - activateFilters(true); + activateSelectionAndFilters(true); QList anEmptyList; // This method will call Selection changed event which will call onSelectionChanged // To clear mySelection, myListControl and storeValue() @@ -311,7 +332,8 @@ void ModuleBase_WidgetMultiSelector::updateFocus() // Set focus to List control in order to make possible // to use Tab key for transfer the focus to next widgets myListControl->setCurrentRow(myListControl->model()->rowCount() - 1); - myListControl->setFocus(); + ModuleBase_Tools::setFocus(myListControl, + "ModuleBase_WidgetMultiSelector::onSelectionTypeChanged()"); } //******************************************************************** @@ -347,14 +369,12 @@ void ModuleBase_WidgetMultiSelector::setCurrentShapeType(const TopAbs_ShapeEnum aShapeTypeName = myTypeCombo->itemText(idx); TopAbs_ShapeEnum aRefType = ModuleBase_Tools::shapeType(aShapeTypeName); if(aRefType == theShapeType && idx != myTypeCombo->currentIndex()) { - activateSelection(false); - activateFilters(false); + activateSelectionAndFilters(false); bool isBlocked = myTypeCombo->blockSignals(true); myTypeCombo->setCurrentIndex(idx); myTypeCombo->blockSignals(isBlocked); - activateSelection(true); - activateFilters(true); + activateSelectionAndFilters(true); break; } }