diff --git a/subform.module b/subform.module
index df90d97..0b7c49b 100644
--- a/subform.module
+++ b/subform.module
@@ -364,10 +364,10 @@ function subform_wrapper_after_build(&$element, &$form_state) {
 
         if (isset($form_state['triggering_element']['#subform_triggering_element'])) {
           $element_exists = NULL;
-          $triggering_element = drupal_array_get_nested_value($subform_state['complete form'], $form_state['triggering_element']['#subform_triggering_element'], $element_exists);
+          $triggering_element = drupal_array_get_nested_value($form_state['complete form'], $form_state['triggering_element']['#subform_triggering_element'], $element_exists);
 
           if ($element_exists) {
-            subform_set_triggering_element($triggering_element, $subform_state);
+            subform_set_triggering_element($triggering_element, $form_state, $subform_state);
           }
         }
       }
@@ -539,29 +539,30 @@ function &subform_get_state($subform_name, &$form_state) {
  *
  * @see form_builder()
  */
-function subform_set_triggering_element($element, &$form_state) {
+function subform_set_triggering_element($element, &$form_state, &$subform_state) {
   $form_state['triggering_element'] = $element;
+  $subform_state['triggering_element'] = $element;
 
   // If the triggering element specifies "button-level" validation and submit
   // handlers to run instead of the default form-level ones, then add those to
   // the form state.
   foreach (array('validate', 'submit') as $type) {
-    if (isset($form_state['triggering_element']['#' . $type])) {
-      $form_state[$type . '_handlers'] = $form_state['triggering_element']['#' . $type];
+    if (isset($subform_state['triggering_element']['#' . $type])) {
+      $subform_state[$type . '_handlers'] = $subform_state['triggering_element']['#' . $type];
     }
   }
 
   // If the triggering element executes submit handlers, then set the form
   // state key that's needed for those handlers to run.
-  if (!empty($form_state['triggering_element']['#executes_submit_callback'])) {
-    $form_state['submitted'] = TRUE;
+  if (!empty($subform_state['triggering_element']['#executes_submit_callback'])) {
+    $subform_state['submitted'] = TRUE;
   }
 
   // Special processing if the triggering element is a button.
-  if (isset($form_state['triggering_element']['#button_type'])) {
-    $form_state['values'][$form_state['triggering_element']['#name']] = $form_state['triggering_element']['#value'];
+  if (isset($subform_state['triggering_element']['#button_type'])) {
+    $subform_state['values'][$subform_state['triggering_element']['#name']] = $subform_state['triggering_element']['#value'];
 
-    $form_state['clicked_button'] = $form_state['triggering_element'];
+    $subform_state['clicked_button'] = $subform_state['triggering_element'];
   }
 }
 
