Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 14401)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 14402)
@@ -1298,25 +1298,19 @@
             boolean useSelected, Collection<OsmPrimitive> preferredRefs) {
         WaySegment wayseg = null;
-        WaySegment ntsel = null;
-        WaySegment ntref = null;
         if (preferredRefs != null && preferredRefs.isEmpty())
             preferredRefs = null;
 
-        searchLoop: for (List<WaySegment> wslist : getNearestWaySegmentsImpl(p, predicate).values()) {
+        for (List<WaySegment> wslist : getNearestWaySegmentsImpl(p, predicate).values()) {
             for (WaySegment ws : wslist) {
                 if (wayseg == null) {
                     wayseg = ws;
                 }
-                if (ntsel == null && ws.way.isSelected()) {
-                    ntsel = ws;
-                    break searchLoop;
-                }
-                if (ntref == null && preferredRefs != null) {
+                if (useSelected && ws.way.isSelected()) {
+                    return ws;
+                }
+                if (preferredRefs != null && !preferredRefs.isEmpty()) {
                     // prefer ways containing given nodes
-                    for (Node nd: ws.way.getNodes()) {
-                        if (preferredRefs.contains(nd)) {
-                            ntref = ws;
-                            break searchLoop;
-                        }
+                    if (preferredRefs.contains(ws.getFirstNode()) || preferredRefs.contains(ws.getSecondNode())) {
+                        return ws;
                     }
                     Collection<OsmPrimitive> wayRefs = ws.way.getReferrers();
@@ -1324,6 +1318,5 @@
                     for (OsmPrimitive ref: preferredRefs) {
                         if (ref instanceof Relation && wayRefs.contains(ref)) {
-                            ntref = ws;
-                            break searchLoop;
+                            return ws;
                         }
                     }
@@ -1331,8 +1324,4 @@
             }
         }
-        if (ntsel != null && useSelected)
-            return ntsel;
-        if (ntref != null)
-            return ntref;
         return wayseg;
     }
