--- nodereference_url.module-6.x-1.3	2009-07-26 01:48:29.000000000 +0100
+++ nodereference_url.module	2010-03-01 08:43:01.000000000 +0000
@@ -192,6 +192,11 @@ function nodereference_url_widget_settin
           '#required' => TRUE,
           '#element_validate' => array('nodereference_url_fallback_validate'),
         );
+        $form['edit_fallback'] = array(
+          '#type' => 'checkbox',
+          '#title' => t('Use fallback behavior during edit mode.'),
+          '#default_value' => isset($widget['edit_fallback']) ? $widget['edit_fallback'] : FALSE,
+        );        
 
         $form['node_link'] = array(
           '#tree' => TRUE,
@@ -237,7 +242,7 @@ function nodereference_url_widget_settin
       return $form;
 
     case 'save':
-      return array('node_link', 'fallback');
+      return array('node_link', 'fallback', 'edit_fallback');
   }
 }
 
@@ -282,8 +287,8 @@ function nodereference_url_widget(&$form
     }
   }
 
-  // If no NID is available, use the fallback behavior.
-  if (!isset($referenced_nid)) {
+  // If no NID is available or edit_fallback is true, use the fallback behavior.
+  if ( !isset($referenced_nid) || (isset($referenced_nid) && $field['widget']['edit_fallback'] == TRUE && count($items) > 0) ){
     // Page not found error.
     // Check for the form_build_id to prevent throwing a page not found on
     // manual builds. See http://drupal.org/node/397606.
@@ -314,7 +319,7 @@ function nodereference_url_widget(&$form
     }
   }
 
-  if (isset($referenced_nid)) {
+  if (isset($referenced_nid) && $field['widget']['edit_fallback'] == FALSE || count($items) == 0) {
     $element[0]['nid'] = array(
       '#title' => $field['widget']['label'],
       '#type' => 'nodereference_url',
