How can I pick a modified polydata?(complete code supplied)

The following program display a triangle firstly.
When you hit the triangle, it splits into 2 triangles.
The problem is: after splitting, you can’t hit the large triangle.
What is the reason?
Hope your reply.

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

#include “vtkPolyData.h”
#include “vtkPolyDataMapper.h”
#include “vtkRenderWindow.h”
#include “vtkRenderWindowInteractor.h”
#include “vtkActor.h”
#include “vtkProperty.h”
#include “vtkCallbackCommand.h”
#include “vtkCellPicker.h”
#include “vtkRenderer.h”
#include “vtkInteractorStyleTrackballCamera.h”

void eventfunc(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata);
vtkRenderer *renderer;

int main()
{
vtkPolyData *triangles = vtkPolyData::New();
vtkPoints *points = vtkPoints::New();
points->InsertNextPoint(0.0, 0.0, 0.0);
points->InsertNextPoint(1.0, 0.0, 0.0);
points->InsertNextPoint(1.0, 1.0, 0.0);
triangles->SetPoints(points);
points->Delete();
vtkCellArray *polys = vtkCellArray::New();
polys->InsertNextCell(3);
polys->InsertCellPoint(0);
polys->InsertCellPoint(1);
polys->InsertCellPoint(2);
triangles->SetPolys(polys);
polys->Delete();

vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();
mapper->SetInputData(triangles);

vtkActor *actor = vtkActor::New();
actor->SetMapper(mapper);
vtkProperty *prop = actor->GetProperty();
actor->GetProperty()->SetColor(1.0, 0.0, 0.0);
actor->GetProperty()->SetEdgeVisibility(true);
actor->GetProperty()->SetEdgeColor(0.0, 1.0, 0.0);

renderer= vtkRenderer::New(); //global var
renderer->AddActor(actor);
renderer->SetBackground(0.1, 0.2, 0.4);

vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(renderer);
renWin->SetSize(300, 300);

vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);

vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();
iren->SetInteractorStyle(style);

vtkCallbackCommand *callback = vtkCallbackCommand::New();
callback->SetCallback(eventfunc);
callback->SetClientData(triangles);
renWin->GetInteractor()->AddObserver(vtkCommand::LeftButtonPressEvent, callback, 1.0);
callback->Delete();

iren->Initialize();
iren->Start();

triangles->Delete();
mapper->Delete();
actor->Delete();
renderer->Delete();
renWin->Delete();
iren->Delete();
style->Delete();

return 0;
}

void eventfunc(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
{
static int hits = 0;
vtkPolyData *triangles = (vtkPolyData *)clientdata;

if(eid == vtkCommand::LeftButtonPressEvent)
{
vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::SafeDownCast(caller);
vtkCellPicker *picker = vtkCellPicker::New();
picker->SetTolerance(0.0);

int X = interactor->GetEventPosition()[0];
int Y = interactor->GetEventPosition()[1];

picker->Pick(X, Y, 0.0, renderer); //renderer: global var
vtkProp *pProp = picker->GetViewProp();
if(pProp == NULL) return;

hits++;
printf("%d hits.\n", hits);
if(hits != 1) return;

vtkPoints *points = triangles->GetPoints();
vtkCellArray *polys = triangles->GetPolys();

double p[3];
p[0] = 0.2;
p[1] = 0.2;
p[2] = 0.0;
points->InsertNextPoint(p);
points->Modified();

vtkIdType pts[3];
pts[0] = 0;
pts[1] = 1;
pts[2] = 3;
polys->ReplaceCell(0, 3, pts);
polys->InsertNextCell(3);
polys->InsertCellPoint(1);
polys->InsertCellPoint(2);
polys->InsertCellPoint(3);
polys->Modified();

}
}

Nobody knows?
I think it is an interesting topic.
You can replace any of the cone examples of vtk tutorials with this gragram to run it.