Index: src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java	(revision 14913)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java	(working copy)
@@ -66,7 +66,11 @@
         int y2;
 
         if (value.linkPrev) {
-            g.setColor(Color.black);
+            if (value.onewayFollowsPrevious) {
+                g.setColor(Color.black);
+            } else {
+                g.setColor(Color.lightGray);
+            }
             if (value.isOnewayHead) {
                 g.fillRect(xoff - 1, 0, 3, 1);
             } else {
@@ -92,7 +96,11 @@
         }
 
         if (value.linkNext) {
-            g.setColor(Color.black);
+            if (value.onewayFollowsNext) {
+                g.setColor(Color.black);
+            } else {
+                g.setColor(Color.lightGray);
+            }
             if (value.isOnewayTail) {
                 g.fillRect(xoff - 1, ymax, 3, 1);
             } else {
@@ -119,7 +127,11 @@
         }
 
         /* vertical lines */
-        g.setColor(Color.black);
+        if (value.onewayFollowsNext && value.onewayFollowsPrevious) {
+            g.setColor(Color.black);
+        } else {
+            g.setColor(Color.lightGray);
+        }
         if (value.isLoop) {
             g.drawLine(xoff+xloop, y1, xoff+xloop, y2);
         }
Index: src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(revision 14913)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java	(working copy)
@@ -21,6 +21,10 @@
      * direction is FORWARD if the first node of this way is connected to the previous way
      * and / or the last node of this way is connected to the next way.
      * direction is BACKWARD if it is the other way around.
+     * direction has a ONEWAY value, if it is tagged as such and it is connected
+     * to the previous / next member.
+     * ONEWAY_FORWARD == the first node of the oneway is the last node of the previous way
+     * ONEWAY_BACKWARD == the last node of the oneway is the last node of the previous way
      * direction has a ROUNDABOUT value, if it is tagged as such and it is somehow
      * connected to the previous / next member.
      * If there is no connection to the previous or next member, then
@@ -44,6 +48,11 @@
     public boolean isOnewayHead;
     public boolean isOnewayTail;
 
+    /** False, if the way is oneway and it doesn't follow the flow of the previous member */
+    public boolean onewayFollowsPrevious = true;
+    /** True, if the way is oneway and it doesn't follow the flow of the next member */
+    public boolean onewayFollowsNext = true;
+
     public WayConnectionType(boolean linkPrev, boolean linkNext, Direction direction) {
         this.linkPrev = linkPrev;
         this.linkNext = linkNext;
@@ -82,14 +91,21 @@
      * @since 10248
      */
     public String getTooltip() {
+        boolean onewayGood = onewayFollowsPrevious && onewayFollowsNext;
         if (!isValid())
             return "";
-        else if (linkPrev && linkNext)
+        else if (linkPrev && linkNext && onewayGood)
             return tr("way is connected");
-        else if (linkPrev)
+        else if (linkPrev && linkNext && !onewayGood)
+            return tr("way is connected but has a wrong oneway direction");
+        else if (linkPrev && onewayGood)
             return tr("way is connected to previous relation member");
-        else if (linkNext)
+        else if (linkPrev && !onewayGood)
+            return tr("way is connected to previous relation member but has a wrong oneway direction");
+        else if (linkNext && onewayGood)
             return tr("way is connected to next relation member");
+        else if (linkNext && !onewayGood)
+            return tr("way is connected to next relation member but has a wrong oneway direction");
         else
             return tr("way is not connected to previous or next relation member");
     }
Index: src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(revision 14913)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(working copy)
@@ -13,6 +13,7 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -119,6 +120,23 @@
         if (lastWct != null) {
             lastWct.linkNext = wct.linkPrev;
         }
+
+        if (lastWct != null && i > 0 && m.getMember() instanceof Way && members.get(i - 1).getMember() instanceof Way
+                && (m.getWay().isOneway() != 0 || members.get(i - 1).getWay().isOneway() != 0)) {
+            Way way = m.getWay();
+            Way previousWay = members.get(i - 1).getWay();
+            Logging.setLogLevel(Logging.LEVEL_INFO);
+            if (way.isOneway() != 0 && ((!previousWay.isFirstLastNode(way.firstNode(true))) ||
+                    (previousWay.isOneway() != 0 && !way.firstNode(true).equals(previousWay.lastNode(true))))) {
+                Logging.info("{0} is doesn't follow the previous way", way);
+                wct.onewayFollowsPrevious = false;
+            }
+            if (previousWay.isOneway() != 0 && ((!way.isFirstLastNode(previousWay.lastNode(true))) ||
+                    (way.isOneway() != 0 && !previousWay.lastNode(true).equals(way.firstNode())))) {
+                Logging.info("{0} is doesn't follow the next way", previousWay);
+                lastWct.onewayFollowsNext = false;
+            }
+        }
         con.set(i, wct);
         return wct;
     }
