Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 3993)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 3994)
@@ -14,5 +14,5 @@
     private boolean useRealWidth;
     private boolean showDirectionArrow;
-    private boolean showRelevantDirectionsOnly;
+    private boolean showOnewayArrow;
     private int defaultSegmentWidth;
     private boolean showOrderNumber;
@@ -46,5 +46,5 @@
     private void load() {
         showDirectionArrow = Main.pref.getBoolean("draw.segment.direction", true);
-        showRelevantDirectionsOnly = Main.pref.getBoolean("draw.segment.relevant_directions_only", true);
+        showOnewayArrow = Main.pref.getBoolean("draw.oneway", true);
         useRealWidth = Main.pref.getBoolean("mappaint.useRealWidth", false);
         defaultSegmentWidth = Main.pref.getInteger("mappaint.segment.default-width", 2);
@@ -81,5 +81,5 @@
 
         outlineOnly = Main.pref.getBoolean("draw.data.area_outline_only", false);
-        
+
     }
 
@@ -96,6 +96,6 @@
     }
 
-    public boolean isShowRelevantDirectionsOnly() {
-        return showRelevantDirectionsOnly;
+    public boolean isShowOnewayArrow() {
+        return showOnewayArrow;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java	(revision 3993)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java	(revision 3994)
@@ -63,5 +63,5 @@
     protected Color taggedConnectionColor;
     protected boolean showDirectionArrow;
-    protected boolean showRelevantDirectionsOnly;
+    protected boolean showOnewayArrow;
     protected boolean showHeadArrowOnly;
     protected boolean showOrderNumber;
@@ -109,5 +109,5 @@
         MapPaintSettings settings = MapPaintSettings.INSTANCE;
         showDirectionArrow = settings.isShowDirectionArrow();
-        showRelevantDirectionsOnly = settings.isShowRelevantDirectionsOnly();
+        showOnewayArrow = settings.isShowOnewayArrow();
         showHeadArrowOnly = settings.isShowHeadArrowOnly();
         showOrderNumber = settings.isShowOrderNumber();
@@ -333,6 +333,5 @@
            (even if the tag is negated as in oneway=false) or the way is selected */
 
-        boolean showThisDirectionArrow = ds.isSelected(w)
-        || (showDirectionArrow && (!showRelevantDirectionsOnly || w.hasDirectionKeys()));
+        boolean showThisDirectionArrow = ds.isSelected(w) || showDirectionArrow;
         /* head only takes over control if the option is true,
            the direction should be shown at all and not only because it's selected */
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3993)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3994)
@@ -121,5 +121,5 @@
                 }
             }
-            if (!hasPositive || dashes.length == 0) {
+            if (!hasPositive || (dashes != null && dashes.length == 0)) {
                 dashes = null;
             }
@@ -198,8 +198,8 @@
         the way is tagged with a direction key
         (even if the tag is negated as in oneway=false) or the way is selected */
-        boolean showOrientation = !isModifier && selected && !paintSettings.isUseRealWidth();
+        boolean showOrientation = !isModifier && (selected || paintSettings.isShowDirectionArrow()) && !paintSettings.isUseRealWidth();
         boolean showOneway = !isModifier && !selected &&
-                !paintSettings.isUseRealWidth() &&
-                paintSettings.isShowDirectionArrow() && w.hasDirectionKeys();
+        !paintSettings.isUseRealWidth() &&
+        paintSettings.isShowOnewayArrow() && w.hasDirectionKeys();
         boolean onewayReversed = w.reversedDirection();
         /* head only takes over control if the option is true,
@@ -215,5 +215,5 @@
                 myWidth = line.getLineWidth();
             }
-            myLine = new BasicStroke(myWidth, line.getEndCap(), line.getLineJoin(), 
+            myLine = new BasicStroke(myWidth, line.getEndCap(), line.getLineJoin(),
                     line.getMiterLimit(), line.getDashArray(), line.getDashPhase());
             if (dashesLine != null) {
@@ -259,9 +259,9 @@
         final LineElemStyle other = (LineElemStyle) obj;
         return  equal(line, other.line) &&
-                equal(color, other.color) &&
-                equal(dashesLine, other.dashesLine) &&
-                equal(dashesBackground, other.dashesBackground) &&
-                equal(text, other.text) &&
-                realWidth == other.realWidth;
+        equal(color, other.color) &&
+        equal(dashesLine, other.dashesLine) &&
+        equal(dashesBackground, other.dashesBackground) &&
+        equal(text, other.text) &&
+        realWidth == other.realWidth;
     }
 
@@ -281,8 +281,8 @@
     public String toString() {
         return "LineElemStyle{" + super.toString() + "width=" + line.getLineWidth() +
-                " realWidth=" + realWidth + " color=" + Utils.toString(color) +
-                " dashed=" + Arrays.toString(line.getDashArray()) +
-                (line.getDashPhase() == 0f ? "" : " dashesOffses=" + line.getDashPhase()) +
-                " dashedColor=" + Utils.toString(dashesBackground) + '}';
+        " realWidth=" + realWidth + " color=" + Utils.toString(color) +
+        " dashed=" + Arrays.toString(line.getDashArray()) +
+        (line.getDashPhase() == 0f ? "" : " dashesOffses=" + line.getDashPhase()) +
+        " dashedColor=" + Utils.toString(dashesBackground) + '}';
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 3993)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 3994)
@@ -52,6 +52,6 @@
     private JCheckBox drawGpsArrowsFast = new JCheckBox(tr("Fast drawing (looks uglier)"));
     private JTextField drawGpsArrowsMinDist = new JTextField(8);
-    private JCheckBox interestingDirections = new JCheckBox(tr("Only interesting direction hints (e.g. with oneway tag)."));
     private JCheckBox headArrow = new JCheckBox(tr("Only on the head of a way."));
+    private JCheckBox onewayArrow = new JCheckBox(tr("Draw oneway arrows."));
     private JCheckBox segmentOrderNumber = new JCheckBox(tr("Draw segment order numbers"));
     private JCheckBox sourceBounds = new JCheckBox(tr("Draw boundaries of downloaded data"));
@@ -62,5 +62,5 @@
     private JCheckBox outlineOnly = new JCheckBox(tr("Draw only outlines of areas"));
     private JComboBox waypointLabel = new JComboBox(new String[] {tr("Auto"), /* gpx data field name */ trc("gpx_field", "Name"),
-                                      /* gpx data field name */ trc("gpx_field", "Desc(ription)"), tr("Both"), tr("None")});
+            /* gpx data field name */ trc("gpx_field", "Desc(ription)"), tr("Both"), tr("None")});
 
     public void addGui(PreferenceTabbedPane gui) {
@@ -227,11 +227,8 @@
             public void actionPerformed(ActionEvent e) {
                 if (directionHint.isSelected()){
-                    interestingDirections.setSelected(Main.pref.getBoolean("draw.segment.relevant_directions_only", true));
                     headArrow.setSelected(Main.pref.getBoolean("draw.segment.head_only", false));
                 }else{
-                    interestingDirections.setSelected(false);
                     headArrow.setSelected(false);
                 }
-                interestingDirections.setEnabled(directionHint.isSelected());
                 headArrow.setEnabled(directionHint.isSelected());
             }
@@ -240,10 +237,4 @@
         directionHint.setSelected(Main.pref.getBoolean("draw.segment.direction", true));
         panel.add(directionHint, GBC.eop().insets(20,0,0,0));
-
-        // only interesting directions
-        interestingDirections.setToolTipText(tr("Only interesting direction hints (e.g. with oneway tag)."));
-        interestingDirections.setSelected(Main.pref.getBoolean("draw.segment.relevant_directions_only", true));
-        interestingDirections.setEnabled(directionHint.isSelected());
-        panel.add(interestingDirections, GBC.eop().insets(40,0,0,0));
 
         // only on the head of a way
@@ -252,4 +243,9 @@
         headArrow.setEnabled(directionHint.isSelected());
         panel.add(headArrow, GBC.eop().insets(40, 0, 0, 0));
+
+        // draw oneway arrows
+        onewayArrow.setToolTipText(tr("Draw arrows in the direction of oneways and other directed features."));
+        onewayArrow.setSelected(Main.pref.getBoolean("draw.oneway", true));
+        panel.add(onewayArrow, GBC.eop().insets(20,0,0,0));
 
         // segment order number
@@ -312,6 +308,6 @@
         Main.pref.put("draw.rawgps.large", largeGpsPoints.isSelected());
         Main.pref.put("draw.segment.direction", directionHint.isSelected());
-        Main.pref.put("draw.segment.relevant_directions_only", interestingDirections.isSelected());
         Main.pref.put("draw.segment.head_only", headArrow.isSelected());
+        Main.pref.put("draw.oneway", onewayArrow.isSelected());
         Main.pref.put("draw.segment.order_number", segmentOrderNumber.isSelected());
         Main.pref.put("draw.data.downloaded_area", sourceBounds.isSelected());
