Explorar el Código

Update the transfer function before updating the current point

If the current point is the last point, and a point is added anywhere
before the last point, there was an assert, because the new number of points
wasn't updated (max of the spinbox), however the current point id was
incremented.
Julien Finet hace 13 años
padre
commit
fd9baa04cb
Se han modificado 1 ficheros con 12 adiciones y 1 borrados
  1. 12 1
      Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp

+ 12 - 1
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp

@@ -265,13 +265,24 @@ void ctkVTKScalarsToColorsWidget::onBoundsChanged()
 // ----------------------------------------------------------------------------
 void ctkVTKScalarsToColorsWidget::setCurrentPoint(vtkObject* caller, void* callData)
 {
+  Q_D(ctkVTKScalarsToColorsWidget);
   vtkControlPointsItem* controlPoints = reinterpret_cast<vtkControlPointsItem*>(caller);
   long newPoint = reinterpret_cast<long>(callData);
   if (!controlPoints || newPoint < -1)
     {
     return;
     }
-  this->setCurrentControlPointsItem(controlPoints);
+  if (d->CurrentControlPointsItem != item)
+    {
+    this->setCurrentControlPointsItem(controlPoints);
+    }
+  else
+    {
+    // When a new point is added, the modified event is fired later.
+    // however we need to update the max of the current spin box before
+    // setting the new value.
+    this->updateCurrentPoint();
+    }
   this->setCurrentPoint(newPoint);
 }