From c6a9c5c075779c40b03c2868dc31f1827a3401d6 Mon Sep 17 00:00:00 2001
From: casey <casey@32403.no-reply.drupal.org>
Date: Sun, 28 Aug 2011 23:22:48 -0400
Subject: [PATCH] Issue #1187010 by casey: Store field_collection_item in the widget's form state.

---
 field_collection.module |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/field_collection.module b/field_collection.module
index 35e2ec7..b48f3bd 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -851,7 +851,6 @@ function field_collection_field_widget_form(&$form, &$form_state, $field, $insta
       $field_parents = $element['#field_parents'];
       $field_name = $element['#field_name'];
       $language = $element['#language'];
-      $field_collection_item = field_collection_field_get_entity($items[$delta], $field_name);
 
       // Nest the field-collection-item entity form in a dedicated parent space,
       // by appending [field_name, langcode, delta] to the current parent space.
@@ -863,10 +862,17 @@ function field_collection_field_widget_form(&$form, &$form_state, $field, $insta
         '#parents' => $parents,
       );
 
-      // Put our entity in the form state, so FAPI callbacks can access it.
       $field_state = field_form_get_state($field_parents, $field_name, $language, $form_state);
-      $field_state['entity'][$delta] = $field_collection_item;
-      field_form_set_state($field_parents, $field_name, $language, $form_state, $field_state);
+      if (isset($field_state['entity'][$delta])) {
+        $field_collection_item = $field_state['entity'][$delta];
+      }
+      else {
+        $field_collection_item = field_collection_field_get_entity($items[$delta], $field_name);
+
+        // Put our entity in the form state, so FAPI callbacks can access it.
+        $field_state['entity'][$delta] = $field_collection_item;
+        field_form_set_state($field_parents, $field_name, $language, $form_state, $field_state);
+      }
 
       field_attach_form('field_collection_item', $field_collection_item, $element, $form_state, $language);
 
-- 
1.7.3.2

