diff -r 0b2281cc1e32 -r 39945305a572 graph_displayer_canvas.cc --- a/graph_displayer_canvas.cc Tue Jun 14 15:58:12 2005 +0000 +++ b/graph_displayer_canvas.cc Tue Jun 14 16:56:37 2005 +0000 @@ -622,24 +622,33 @@ { if(active_node!=INVALID) { - EdgeIt e; - g.firstOut(e,active_node); - for(;e!=INVALID;g.nextOut(e)) +// EdgeIt e; +// g.firstOut(e,active_node); +// for(;e!=INVALID;g.nextOut(e)) +// { +// if(e!=INVALID)delete_item(e); +// } + +// g.firstIn(e,active_node); +// for(;e!=INVALID;g.nextIn(e)) +// { +// if(e!=INVALID)delete_item(e); +// } + for (EdgeIt i(g); i!=INVALID; ++i) { - delete_item(edgesmap[e]); - //edgesmap[e]->property_points().set_value(coos); - //edgetextmap[e]->property_y().set_value((y1+y2)/2); + //std::cout << g.source(i).id << "-" << g.target(i).id << " " << active_node.id << std::endl; + if((g.source(i)==active_node)||(g.target(i)==active_node)) + { + delete_item(i); + } } + delete_item(active_node); + } + else + { + delete_item(active_edge); + } - g.firstIn(e,active_node); - for(;e!=INVALID;g.nextIn(e)) - { - delete_item(edgesmap[e]); - //edgesmap[e]->get_bounds(x1, y1, x2, y2); - //edgetextmap[e]->property_y().set_value((y1+y2)/2); - } - } - delete_item(active_item); } else @@ -667,9 +676,15 @@ return true; } -void GraphDisplayerCanvas::delete_item(Gnome::Canvas::Item * item_to_delete) +void GraphDisplayerCanvas::delete_item(NodeIt node_to_delete) { - //item_to_delete->hide(); - delete(item_to_delete); + delete(nodesmap[node_to_delete]); + g.erase(node_to_delete); } +void GraphDisplayerCanvas::delete_item(EdgeIt edge_to_delete) +{ + delete(edgesmap[edge_to_delete]); + g.erase(edge_to_delete); +} +