diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
index 10d43d2..697153c 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
@@ -25,6 +25,8 @@
     private int defaultSegmentWidth;
     /** Preference: should the segment numbers of ways be displayed */
     private boolean showOrderNumber;
+    /** Preference: should the segment numbers of ways be displayed on selected way */
+    private boolean showOrderNumberOnSelectedWay;
     /** Preference: should only the last arrow of a way be displayed */
     private boolean showHeadArrowOnly;
     private int showNamesDistance;
@@ -89,6 +91,7 @@ private void load() {
         }
 
         showOrderNumber = Main.pref.getBoolean("draw.segment.order_number", false);
+        showOrderNumberOnSelectedWay = Main.pref.getBoolean("draw.segment.order_number.on_selected", false);
         showHeadArrowOnly = Main.pref.getBoolean("draw.segment.head_only", false);
 
         showNamesDistance = Main.pref.getInteger("mappaint.shownames", 10000000);
@@ -235,6 +238,14 @@ public boolean isShowOrderNumber() {
     }
 
     /**
+     * Determines if the segment numbers of the selected way should be displayed
+     * @return {@code true} if the segment numbers of the selected way should be displayed
+     */
+    public boolean isShowOrderNumberOnSelectedWay() {
+        return showOrderNumberOnSelectedWay;
+    }
+
+    /**
      * Specifies if only the last arrow of a way should be displayed
      * @param showHeadArrowOnly {@code true} if only the last arrow of a way should be displayed
      */
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
index 214b38d..6835a30 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
@@ -59,6 +59,8 @@
     protected boolean showHeadArrowOnly;
     /** Preference: should the segment numbers of ways be displayed */
     protected boolean showOrderNumber;
+    /** Preference: should the segment numbers of the selected be displayed */
+    protected boolean showOrderNumberOnSelectedWay;
     /** Preference: should selected nodes be filled */
     protected boolean fillSelectedNode;
     /** Preference: should unselected nodes be filled */
@@ -133,6 +135,7 @@ protected void getSettings(boolean virtual) {
         showOnewayArrow = settings.isShowOnewayArrow();
         showHeadArrowOnly = settings.isShowHeadArrowOnly();
         showOrderNumber = settings.isShowOrderNumber();
+        showOrderNumberOnSelectedWay = settings.isShowOrderNumberOnSelectedWay();
         selectedNodeSize = settings.getSelectedNodeSize();
         unselectedNodeSize = settings.getUnselectedNodeSize();
         connectionNodeSize = settings.getConnectionNodeSize();
@@ -320,7 +323,7 @@ public void visit(Way w) {
                 if ((pOutside & lastPOutside) == 0) {
                     drawSegment(lastP, p, wayColor,
                             showOnlyHeadArrowOnly ? !it.hasNext() : showThisDirectionArrow);
-                    if (showOrderNumber && !isInactiveMode) {
+                    if ((showOrderNumber || (showOrderNumberOnSelectedWay && w.isSelected())) && !isInactiveMode) {
                         drawOrderNumber(lastP, p, orderNumber, g.getColor());
                     }
                 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
index f66d4e2..4b024bc 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
@@ -115,7 +115,8 @@ public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSetting
         painter.drawWay(w, myColor, myLine, myDashLine, myDashedColor, offset, showOrientation,
                 showOnlyHeadArrowOnly, showOneway, onewayReversed);
 
-        if (paintSettings.isShowOrderNumber() && !painter.isInactiveMode()) {
+        if ((paintSettings.isShowOrderNumber() || (paintSettings.isShowOrderNumberOnSelectedWay() && selected))
+                && !painter.isInactiveMode()) {
             int orderNumber = 0;
             lastN = null;
             for (Node n : w.getNodes()) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
index 6e72b6c..fb388bf 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
@@ -42,6 +42,7 @@ public PreferenceSetting createPreferenceSetting() {
     private final JCheckBox headArrow = new JCheckBox(tr("Only on the head of a way."));
     private final JCheckBox onewayArrow = new JCheckBox(tr("Draw oneway arrows."));
     private final JCheckBox segmentOrderNumber = new JCheckBox(tr("Draw segment order numbers"));
+    private final JCheckBox segmentOrderNumberOnSelectedWay = new JCheckBox(tr("Draw segment order numbers on selected way"));
     private final JCheckBox sourceBounds = new JCheckBox(tr("Draw boundaries of downloaded data"));
     private final JCheckBox virtualNodes = new JCheckBox(tr("Draw virtual nodes in select mode"));
     private final JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color"));
@@ -91,6 +92,8 @@ public void addGui(PreferenceTabbedPane gui) {
         // segment order number
         segmentOrderNumber.setToolTipText(tr("Draw the order numbers of all segments within their way."));
         segmentOrderNumber.setSelected(Main.pref.getBoolean("draw.segment.order_number", false));
+        segmentOrderNumberOnSelectedWay.setToolTipText(tr("Draw the order numbers of all segments within their way."));
+        segmentOrderNumberOnSelectedWay.setSelected(Main.pref.getBoolean("draw.segment.order_number.on_selected", false));
 
         // downloaded area
         sourceBounds.setToolTipText(tr("Draw the boundaries of data loaded from the server."));
@@ -135,6 +138,7 @@ public void addGui(PreferenceTabbedPane gui) {
         panel.add(headArrow, GBC.eop().insets(40, 0, 0, 0));
         panel.add(onewayArrow, GBC.eop().insets(20, 0, 0, 0));
         panel.add(segmentOrderNumber, GBC.eop().insets(20, 0, 0, 0));
+        panel.add(segmentOrderNumberOnSelectedWay, GBC.eop().insets(20, 0, 0, 0));
 
         panel.add(new JLabel(tr("Select and draw mode options")),
                 GBC.eop().insets(5, 10, 0, 0));
@@ -175,6 +179,7 @@ public boolean ok() {
         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.segment.order_number.on_selected", segmentOrderNumberOnSelectedWay.isSelected());
         Main.pref.put("draw.data.downloaded_area", sourceBounds.isSelected());
         Main.pref.put("draw.data.inactive_color", inactive.isSelected());
         Main.pref.put("mappaint.use-antialiasing", useAntialiasing.isSelected());
