Index: modules/field_ui/field_ui.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.admin.inc,v
retrieving revision 1.58
diff -u -r1.58 field_ui.admin.inc
--- modules/field_ui/field_ui.admin.inc	17 Jul 2010 19:19:39 -0000	1.58
+++ modules/field_ui/field_ui.admin.inc	18 Jul 2010 12:35:06 -0000
@@ -463,8 +463,13 @@
   // Add settings for the update selects behavior.
   $js_fields = array();
   foreach ($existing_field_options as $field_name => $fields) {
+    if ($field_name === 0) continue;
+
     $field = field_info_field($field_name);
-    $instance = field_info_instance($form['#entity_type'], $field_name, $form['#bundle']);
+    $existing_field_entity_types = array_keys($field['bundles']);
+    $existing_field_last_entity_type = array_pop($existing_field_entity_types);
+    // Get the last existing instance of the last available entity type.
+    $instance = field_info_instance($existing_field_last_entity_type, $field_name, array_pop($field['bundles'][$existing_field_last_entity_type]));
     $js_fields[$field_name] = array('label' => $instance['label'], 'type' => $field['type'], 'widget' => $instance['widget']['type']);
   }
 
Index: modules/field_ui/field_ui.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.js,v
retrieving revision 1.4
diff -u -r1.4 field_ui.js
--- modules/field_ui/field_ui.js	17 Jul 2010 19:19:39 -0000	1.4
+++ modules/field_ui/field_ui.js	18 Jul 2010 12:35:06 -0000
@@ -32,13 +32,19 @@
     $(this).trigger('change', false);
   });
 
+  // Keep track of manual label input.
+  var hasManualExistingFieldLabel = false;
+  $('#edit-add-existing-field-label', context).bind('keyup', function (e) {
+    hasManualExistingFieldLabel = $(this).val() != '';
+  });
+
   // 'Existing field' select updates its 'Widget' select and 'Label' textfield.
   $('#field-overview .field-select', context).each(function () {
     this.targetSelect = $('.widget-type-select', $(this).parents('tr').eq(0));
     this.targetTextfield = $('.label-textfield', $(this).parents('tr').eq(0));
 
     $(this).bind('change keyup', function (e, updateText) {
-      var updateText = (typeof updateText == 'undefined' ? true : updateText);
+      var updateText = (typeof updateText == 'undefined' ? !hasManualExistingFieldLabel : updateText);
       var selectedField = this.options[this.selectedIndex].value;
       var selectedFieldType = (selectedField in fields ? fields[selectedField].type : null);
       var selectedFieldWidget = (selectedField in fields ? fields[selectedField].widget : null);
