Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Address.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Address.java	(revision 25135)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Address.java	(revision 25136)
@@ -132,36 +132,48 @@
             setNewSelection(currentMouseNode);
             String num = currentMouseNode.get(tagHouseNumber);
-            if (num != null) {
-                try {
-                    // add new address
-                    Integer.parseInt(num); 
-                    inputNumber.setText(num);
-                    applyInputNumberChange();
-                } catch (NumberFormatException en) {
-                    System.out.println("Unable to parse house number \"" + num + "\"");
+            if (num != null //
+                    && currentMouseNode.get(tagHouseStreet) == null //
+                    && findWayInRelationAddr(currentMouseNode) == null //
+                    && !inputStreet.getText().equals("")) {
+                // address already present but not linked to a street
+                Collection<Command> cmds = new LinkedList<Command>();
+                addStreetNameOrRelation(currentMouseNode, cmds);
+                Command c = new SequenceCommand("Add node address", cmds);
+                Main.main.undoRedo.add(c);
+                setNewSelection(currentMouseNode);
+            } else {
+                if (num != null) {
+                    try {
+                        // add new address
+                        Integer.parseInt(num); 
+                        inputNumber.setText(num);
+                        applyInputNumberChange();
+                    } catch (NumberFormatException en) {
+                        System.out.println("Unable to parse house number \"" + num + "\"");
+                    }
                 }
-            }
-            if (currentMouseNode.get(tagHouseStreet) != null) {
-                inputStreet.setText(currentMouseNode.get(tagHouseStreet));
-                if (ctrl) {
-                    Collection<Command> cmds = new LinkedList<Command>();
-                    addAddrToPrimitive(currentMouseNode, cmds);
-                    if (num == null)
-                        applyInputNumberChange();
-                }
-                setSelectedWay((Way)null);
-            } else {
-                // check if the node belongs to an associatedStreet relation
-                Way wayInRelationAddr = findWayInRelationAddr(currentMouseNode);
-                if (wayInRelationAddr == null) {
-                    // node exists but doesn't carry address information : add tags like a new node
+                if (currentMouseNode.get(tagHouseStreet) != null) {
+                    inputStreet.setText(currentMouseNode.get(tagHouseStreet));
                     if (ctrl) {
-                        applyInputNumberChange();
+                        Collection<Command> cmds = new LinkedList<Command>();
+                        addAddrToPrimitive(currentMouseNode, cmds);
+                        if (num == null)
+                            applyInputNumberChange();
                     }
-                    Collection<Command> cmds = new LinkedList<Command>();
-                    addAddrToPrimitive(currentMouseNode, cmds);
+                    setSelectedWay((Way)null);
                 } else {
-                    inputStreet.setText(wayInRelationAddr.get(tagHighwayName));
-                    setSelectedWay(wayInRelationAddr);
+                    // check if the node belongs to an associatedStreet relation
+                    Way wayInRelationAddr = findWayInRelationAddr(currentMouseNode);
+                    if (wayInRelationAddr == null) {
+                        // node exists but doesn't carry address information : add tags like a new node
+                        if (ctrl) {
+                            applyInputNumberChange();
+                        }
+                        Collection<Command> cmds = new LinkedList<Command>();
+                        addAddrToPrimitive(currentMouseNode, cmds);
+                    } else {
+                        inputStreet.setText(wayInRelationAddr.get(tagHighwayName));
+                        setSelectedWay(wayInRelationAddr);
+                    }
                 }
             }
@@ -234,5 +246,27 @@
 
         }
-        cmds.add(new ChangePropertyCommand(osm, tagHouseNumber, inputNumber.getText()));            
+        cmds.add(new ChangePropertyCommand(osm, tagHouseNumber, inputNumber.getText()));
+        addStreetNameOrRelation(osm, cmds);
+        try {
+            applyInputNumberChange();
+            Command c = new SequenceCommand("Add node address", cmds);
+            Main.main.undoRedo.add(c);
+            setNewSelection(osm);
+        } catch (NumberFormatException en) {
+            System.out.println("Unable to parse house number \"" + inputNumber.getText() + "\"");
+        }
+    }
+    
+    private Relation findRelationAddr(Way w) {
+        List<OsmPrimitive> l = w.getReferrers();
+        for (OsmPrimitive osm : l) {
+            if (osm instanceof Relation && osm.hasKey("type") && osm.get("type").equals(relationAddrType)) {
+                return (Relation)osm;
+            }
+        }
+        return null;
+    }
+    
+    private void addStreetNameOrRelation(OsmPrimitive osm, Collection<Command> cmds) {
         if (Main.pref.getBoolean("cadastrewms.addr.dontUseRelation", false)) {
             cmds.add(new ChangePropertyCommand(osm, tagHouseStreet, inputStreet.getText()));
@@ -255,24 +289,6 @@
             }
         }
-        try {
-            applyInputNumberChange();
-            Command c = new SequenceCommand("Add node address", cmds);
-            Main.main.undoRedo.add(c);
-            setNewSelection(osm);
-        } catch (NumberFormatException en) {
-            System.out.println("Unable to parse house number \"" + inputNumber.getText() + "\"");
-        }
-    }
-    
-    private Relation findRelationAddr(Way w) {
-        List<OsmPrimitive> l = w.getReferrers();
-        for (OsmPrimitive osm : l) {
-            if (osm instanceof Relation && osm.hasKey("type") && osm.get("type").equals(relationAddrType)) {
-                return (Relation)osm;
-            }
-        }
-        return null;
-    }
-    
+    }
+
     private Node createNewNode(MouseEvent e, Collection<Command> cmds) {
         // DrawAction.mouseReleased() but without key modifiers
