Index: trunk/src/org/openstreetmap/josm/data/osm/IWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/IWay.java	(revision 18018)
+++ trunk/src/org/openstreetmap/josm/data/osm/IWay.java	(revision 18019)
@@ -133,3 +133,12 @@
      */
     boolean isInnerNode(INode n);
+
+    /**
+     * Replies true if this way has incomplete nodes, false otherwise.
+     * @return true if this way has incomplete nodes, false otherwise.
+     * @since 18019
+     */
+    default boolean hasIncompleteNodes() {
+        return false;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 18018)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 18019)
@@ -606,9 +606,5 @@
     }
 
-    /**
-     * Replies true if this way has incomplete nodes, false otherwise.
-     * @return true if this way has incomplete nodes, false otherwise.
-     * @since 2587
-     */
+    @Override
     public boolean hasIncompleteNodes() {
         return Arrays.stream(nodes).anyMatch(Node::isIncomplete);
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java	(revision 18018)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java	(revision 18019)
@@ -850,4 +850,8 @@
             if (e.osm instanceof IRelation<?>) {
                 return !((IRelation<?>) e.osm).hasIncompleteMembers();
+            } else if (e.osm instanceof IWay<?>) {
+                return !((IWay<?>) e.osm).hasIncompleteNodes();
+            } else if (e.osm instanceof INode) {
+                return ((INode) e.osm).isLatLonKnown();
             } else {
                 return true;
