As to the two events, there may be a bug in bool vtkMRMLMarkupsNode::InsertControlPoint(ControlPoint *controlPoint, int targetIndex), line 689 of vtkMRMLMarkupsNode.cxx:
// let observers know that a markup was added
this->InvokeCustomModifiedEvent(vtkMRMLMarkupsNode::PointAddedEvent, static_cast<void*>(&targetIndex));
if (controlPoint->PositionStatus == vtkMRMLMarkupsNode::PositionDefined)
{
this->InvokeCustomModifiedEvent(vtkMRMLMarkupsNode::PointPositionUndefinedEvent, static_cast<void*>(&targetIndex));
}
this->UpdateMeasurements();
I think PointPositionUndefinedEvent should be PointPositionDefinedEvent?