It now calculates proper orthogonal projections and finds
the minimal one. Rename it iD.geo.chooseEdge and minimize
its coupling to context.
This version also copes with 0- and 1-node ways.
Fixes#1428.
Auto-focus the search field only right after finishing drawing.
At that point, the radial menu isn't shown anyway. So then the
flow for correcting geometry before assigning a preset is:
1. Draw.
2. Finish drawing. The search field is focused, and no
radial menu is open.
3. Click again to reselect the feature and show menu.
Now the search field is blurred.
In other words: when the menu is shown, search should not be
focused. When search is focused, the menu should not be shown.
Can't unconditionally delete the node; it may be a member
of other ways.
I didn't preserve the behavior of dragging a midpoint to
an adjacent node being a no-op. In general we don't try to
eliminate compound operations whose net result is a no-op;
I don't think it's important to do so for this special case.
The degenerate case of connecting the endpoints of a two-vertex
line now results in a point. This is what naturally resulted
from the code, and seems ok.
Fixes#983.
This makes the CSS more consistent and makes fixing #953
easier. Also, dragging now clears the selection and closes
any operations menu, which is good.
There's still a minor Chrome bug: it doesn't refresh the
cursor when the .behavior-hover class is removed.
Due to differenced redraw, midpoint.ways was getting stale,
so sometimes dragging a midpoint didn't add the new node to
all ways. Better to calculate participating ways when needed.
This also simplifies the code for adding a midpoint via double
click. It does make filtering midpoints on redraw a bit more
expensive, but a cursory profile didn't show it being a problem.
Fixes#763.