Forráskód Böngészése

Don't fire unnecessary events

When updating the current point, because of rounding errors, setting the
(almost) same value to a widget would update the transfer function again.
Julien Finet 14 éve
szülő
commit
e8368abbf7

+ 15 - 0
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp

@@ -55,6 +55,9 @@ protected:
 public:
 public:
   ctkVTKScalarsToColorsWidgetPrivate(ctkVTKScalarsToColorsWidget& object);
   ctkVTKScalarsToColorsWidgetPrivate(ctkVTKScalarsToColorsWidget& object);
   void setupUi(QWidget* widget);
   void setupUi(QWidget* widget);
+
+  bool blockSignals(bool);
+
   vtkControlPointsItem* CurrentControlPointsItem;
   vtkControlPointsItem* CurrentControlPointsItem;
 };
 };
 
 
@@ -106,6 +109,15 @@ void ctkVTKScalarsToColorsWidgetPrivate::setupUi(QWidget* widget)
 }
 }
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
+bool ctkVTKScalarsToColorsWidget::blockSignals(bool block)
+{
+  d->ColorPickerButton->blockSignals(block);
+  d->OpacitySpinBox->blockSignals(block);
+  d->MidPointSpinBox->blockSignals(block);
+  return d->SharpnessSpinBox->blockSignals(block);
+}
+
+// ----------------------------------------------------------------------------
 // ctkVTKScalarsToColorsWidget methods
 // ctkVTKScalarsToColorsWidget methods
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
@@ -283,6 +295,8 @@ void ctkVTKScalarsToColorsWidget::updateCurrentPoint()
 
 
   double point[4];
   double point[4];
   d->CurrentControlPointsItem->GetControlPoint(pointId, point);
   d->CurrentControlPointsItem->GetControlPoint(pointId, point);
+
+  bool oldBlock = d->blockSignals(true);
   d->OpacitySpinBox->setValue(point[1]);
   d->OpacitySpinBox->setValue(point[1]);
   d->MidPointSpinBox->setValue(point[2]);
   d->MidPointSpinBox->setValue(point[2]);
   d->SharpnessSpinBox->setValue(point[3]);
   d->SharpnessSpinBox->setValue(point[3]);
@@ -298,6 +312,7 @@ void ctkVTKScalarsToColorsWidget::updateCurrentPoint()
     QColor color = QColor::fromRgbF(xrgbms[1], xrgbms[2], xrgbms[3]);
     QColor color = QColor::fromRgbF(xrgbms[1], xrgbms[2], xrgbms[3]);
     d->ColorPickerButton->setColor(color);
     d->ColorPickerButton->setColor(color);
     }
     }
+  d->blockSignals(oldBlock);
 }
 }
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------