From 49ecfd9b8c8e30b6621a68cb5a1b5d65ccd02a12 Mon Sep 17 00:00:00 2001
From: Kalle Lampila <kalle.lampila@iki.fi>
Date: Thu, 15 Dec 2011 21:30:43 +0200
Subject: [PATCH] fix #7148 - Make sure that only selectable items are
 selected

Signed-off-by: Kalle Lampila <kalle.lampila@iki.fi>
---
 src/org/openstreetmap/josm/data/osm/DataSet.java   |    2 +-
 .../josm/gui/dialogs/SelectionListDialog.java      |   24 +++++++++++++------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index c25d884..61b2f9c 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -643,7 +643,7 @@ public class DataSet implements Cloneable, ProjectionChangeListener {
         synchronized (selectionLock) {
             for (PrimitiveId id: selection) {
                 OsmPrimitive primitive = getPrimitiveByIdChecked(id);
-                if (primitive != null) {
+                if (primitive != null && primitive.isSelectable()) {
                     changed = changed | selectedPrimitives.add(primitive);
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
index cb44697..17d9408 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
@@ -763,12 +763,14 @@ public class SelectionListDialog extends ToggleDialog  {
             int nodes = 0;
             int relations = 0;
             for (OsmPrimitive o : sel) {
-                if (o instanceof Way) {
-                    ways++;
-                } else if (o instanceof Node) {
-                    nodes++;
-                } else if (o instanceof Relation) {
-                    relations++;
+                if (o.isSelectable()) {
+                    if (o instanceof Way) {
+                        ways++;
+                    } else if (o instanceof Node) {
+                        nodes++;
+                    } else if (o instanceof Relation) {
+                        relations++;
+                    }
                 }
             }
             StringBuffer text = new StringBuffer();
@@ -784,11 +786,17 @@ public class SelectionListDialog extends ToggleDialog  {
                 text.append(text.length() > 0 ? ", " : "")
                 .append(trn("{0} relation", "{0} relations", relations, relations));
             }
-            if(ways + nodes + relations == 1)
+            if(ways + nodes + relations == 0)
+            {
+                setText(tr("None"));
+                setEnabled(false);
+            } else if(ways + nodes + relations == 1)
             {
                 text.append(": ");
                 for(OsmPrimitive o : sel) {
-                    text.append(o.getDisplayName(df));
+                    if (o.isSelectable()) {
+                        text.append(o.getDisplayName(df));
+                    }
                 }
                 setText(text.toString());
             } else {
-- 
1.7.7.3

