Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 7485)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 7486)
@@ -148,5 +148,5 @@
     @Override
     public void visit(Way w) {
-        if (!w.isArea() && ElemStyles.hasAreaElemStyle(w, false)) {
+        if (!w.isArea() && ElemStyles.hasOnlyAreaElemStyle(w)) {
             List<Node> nodes = w.getNodes();
             if (nodes.size()<1) return; // fix zero nodes bug
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 7485)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 7486)
@@ -472,3 +472,29 @@
         return getAreaElemStyle(p, pretendWayIsClosed) != null;
     }
+
+    /**
+     * Determines whether primitive has <b>only</b> an AreaElemStyle.
+     * @param p the OSM primitive
+     * @return {@code true} if primitive has only an AreaElemStyle
+     * @since 7486
+     */
+    public static boolean hasOnlyAreaElemStyle(OsmPrimitive p) {
+        MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
+        try {
+            if (MapPaintStyles.getStyles() == null)
+                return false;
+            StyleList styles = MapPaintStyles.getStyles().generateStyles(p, 1.0, null, false).a;
+            if (styles.isEmpty()) {
+                return false;
+            }
+            for (ElemStyle s : styles) {
+                if (!(s instanceof AreaElemStyle)) {
+                    return false;
+                }
+            }
+            return true;
+        } finally {
+            MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
+        }
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java	(revision 7486)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java	(revision 7486)
@@ -0,0 +1,79 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.validation.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.mappaint.ElemStyles;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+
+/**
+ * JUnit Test of Multipolygon validation test.
+ */
+public class MultipolygonTestTest {
+
+    private static final MultipolygonTest MULTIPOLYGON_TEST = new MultipolygonTest();
+
+    /**
+     * Setup test.
+     * @throws Exception if test cannot be initialized
+     */
+    @Before
+    public void setUp() throws Exception {
+        JOSMFixture.createUnitTestFixture().init();
+        MapPaintStyles.readFromPreferences();
+        MULTIPOLYGON_TEST.initialize();
+    }
+
+    private static Way createUnclosedWay(String tags) {
+        List<Node> nodes = new ArrayList<>();
+        nodes.add(new Node(new LatLon(0, 1)));
+        nodes.add(new Node(new LatLon(0, 2)));
+
+        Way w = (Way)OsmUtils.createPrimitive("way "+tags);
+        w.setNodes(nodes);
+        return w;
+    }
+
+    /**
+     * Non-regression test for bug #10469.
+     */
+    @Test
+    public void testTicket10469() {
+        MULTIPOLYGON_TEST.startTest(null);
+
+        List<Node> nodes = new ArrayList<>();
+        nodes.add(new Node(new LatLon(0, 1)));
+        nodes.add(new Node(new LatLon(0, 2)));
+
+        // Erroneous tag
+        Way w = createUnclosedWay("amenity=parking");
+        MULTIPOLYGON_TEST.visit(w);
+        assertTrue(ElemStyles.hasAreaElemStyle(w, false));
+        assertEquals(1, MULTIPOLYGON_TEST.getErrors().size());
+
+        // Erroneous tag, but managed by another test
+        w = createUnclosedWay("building=yes");
+        MULTIPOLYGON_TEST.visit(w);
+        assertTrue(ElemStyles.hasAreaElemStyle(w, false));
+        assertEquals(1, MULTIPOLYGON_TEST.getErrors().size());
+
+        // Correct tag, but has also an area style
+        w = createUnclosedWay("aeroway=taxiway");
+        MULTIPOLYGON_TEST.visit(w);
+        assertTrue(ElemStyles.hasAreaElemStyle(w, false));
+        assertEquals(1, MULTIPOLYGON_TEST.getErrors().size());
+
+        MULTIPOLYGON_TEST.endTest();
+    }
+}
