mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 17:23:02 +00:00
Adjust tree for force-rebased entities
Previously, entities that already existed in the rtree prior to the rebase option would end up duplicated in the tree afterward. Fixes #2637
This commit is contained in:
@@ -45,9 +45,17 @@ iD.Tree = function(head) {
|
||||
for (var i = 0; i < entities.length; i++) {
|
||||
var entity = entities[i];
|
||||
|
||||
if (!entity.visible || (!force && (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id])))
|
||||
if (!entity.visible)
|
||||
continue;
|
||||
|
||||
if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
|
||||
if (!force) {
|
||||
continue;
|
||||
} else if (rectangles[entity.id]) {
|
||||
rtree.remove(rectangles[entity.id]);
|
||||
}
|
||||
}
|
||||
|
||||
insertions[entity.id] = entity;
|
||||
updateParents(entity, insertions, {});
|
||||
}
|
||||
|
||||
@@ -56,6 +56,21 @@ describe("iD.Tree", function() {
|
||||
|
||||
expect(tree.intersects(iD.geo.Extent([0, 0], [2, 2]), graph)).to.eql([relation]);
|
||||
});
|
||||
|
||||
it("adjusts entities that are force-rebased", function() {
|
||||
var graph = iD.Graph(),
|
||||
tree = iD.Tree(graph),
|
||||
node = iD.Node({id: 'n', loc: [1, 1]});
|
||||
|
||||
graph.rebase([node], [graph]);
|
||||
tree.rebase([node]);
|
||||
|
||||
node = node.move([-1, -1]);
|
||||
graph.rebase([node], [graph], true);
|
||||
tree.rebase([node], true);
|
||||
|
||||
expect(tree.intersects(iD.geo.Extent([0, 0], [2, 2]), graph)).to.eql([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#intersects", function() {
|
||||
|
||||
Reference in New Issue
Block a user