From 8a7496cff86f3bf3ce0c5a32181836a26a0b89fc Mon Sep 17 00:00:00 2001 From: ouv Date: Sat, 12 May 2012 12:23:26 +0000 Subject: [PATCH] Bug IPAL22876: TC6.5.0: Show error is absent in popup menu for multiply selection --- src/VISUGUI/VisuGUI.cxx | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/VISUGUI/VisuGUI.cxx b/src/VISUGUI/VisuGUI.cxx index 47610c14..a8c76b6b 100644 --- a/src/VISUGUI/VisuGUI.cxx +++ b/src/VISUGUI/VisuGUI.cxx @@ -3528,7 +3528,7 @@ VisuGUI mgr->setRule( action( VISU_FILE_INFO ), "selcount=1 and type in {'VISU::TRESULT'}" ); mgr->setRule( action( VISU_EXPORT_MED ), "selcount=1 and type in {'VISU::TRESULT'}" ); - aRule = "isPlot2dViewer and isVisible and selcount=1 and type='VISU::TCURVE' and hasDeviation"; + aRule = "isPlot2dViewer and isVisible and selcount > 0 and type='VISU::TCURVE' and hasDeviation"; mgr->setRule (action(VISU_SHOW_DEVIATION), aRule , QtxPopupMgr::VisibleRule); aRule = "isPlot2dViewer and isVisible and selcount > 0 and type='VISU::TCURVE' and hasDeviation and isDeviationDisplayed"; mgr->setRule (action(VISU_SHOW_DEVIATION), aRule , QtxPopupMgr::ToggleRule); @@ -4980,22 +4980,31 @@ bool VisuGUI::renameAllowed( const QString& entry) const { void VisuGUI::OnShowDeviation() { - VISU::TSelectionInfo aSelectionInfo = VISU::GetSelectedObjects(this); - if(aSelectionInfo.size() != 1) + if(IsStudyLocked(GetCStudy(GetAppStudy(this)))) return; - VISU::TSelectionItem aSelectionItem = aSelectionInfo.front(); - Handle(SALOME_InteractiveObject) anIO = aSelectionItem.myIO; - VISU::Base_i* aBase = aSelectionItem.myObjectInfo.myBase; - if(!aBase) + QAction* anAction = action(VISU_SHOW_DEVIATION); + if(!anAction) return; - if(aBase->GetType() == VISU::TCURVE) { - if(!IsStudyLocked(GetCStudy(GetAppStudy(this)))){ + bool anIsShow = anAction->isChecked(); + + VISU::TSelectionInfo aSelectionInfo = VISU::GetSelectedObjects(this); + if(aSelectionInfo.empty()) + return; + + TSelectionInfo::iterator anIter = aSelectionInfo.begin(); + for( ; anIter != aSelectionInfo.end(); anIter++ ) + { + VISU::TSelectionItem aSelectionItem = *anIter; + Handle(SALOME_InteractiveObject) anIO = aSelectionItem.myIO; + VISU::Base_i* aBase = aSelectionItem.myObjectInfo.myBase; + if(aBase && aBase->GetType() == VISU::TCURVE) { // Curve object if(VISU::Curve_i* aCurve = dynamic_cast(aBase)) { - aCurve->ShowDeviation(!aCurve->isDeviationShown()); - PlotCurve(this, aCurve, VISU::eDisplay); + aCurve->ShowDeviation(anIsShow); + if( displayer()->IsDisplayed( anIO->getEntry() ) ) + PlotCurve(this, aCurve, VISU::eDisplay); } } } -- 2.30.2