diff --git a/includes/form.inc b/includes/form.inc index 75722874328bdb7cb1b5e7d8b608328808673b21..affd82b0e30b926ee3f801265f35f6184cc85c50 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -1291,6 +1291,13 @@ function form_builder($form_id, $element, &$form_state) { // Recurse through all child elements. $count = 0; foreach (element_children($element) as $key) { + // Prior to checking properties of child elements, their default properties + // need to be loaded. + if (isset($element[$key]['#type']) && empty($element[$key]['#defaults_loaded']) && ($info = element_info($element[$key]['#type']))) { + $element[$key] += $info; + $element[$key]['#defaults_loaded'] = TRUE; + } + // Don't squash an existing tree value. if (!isset($element[$key]['#tree'])) { $element[$key]['#tree'] = $element['#tree']; @@ -1312,12 +1319,6 @@ function form_builder($form_id, $element, &$form_state) { $array_parents[] = $key; $element[$key]['#array_parents'] = $array_parents; - // Prior to handling #weight, default element properties need to be applied. - if (isset($element[$key]['#type']) && empty($element[$key]['#defaults_loaded']) && ($info = element_info($element[$key]['#type']))) { - $element[$key] += $info; - $element[$key]['#defaults_loaded'] = TRUE; - } - // Assign a decimal placeholder weight to preserve original array order. if (!isset($element[$key]['#weight'])) { $element[$key]['#weight'] = $count/1000; diff --git a/modules/system/system.module b/modules/system/system.module index 621c7e1462e623990b45b2456f69cbc2c5598fb5..f50d6f1c4eb338a54f010e25af124d4eb4350b25 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -384,7 +384,6 @@ function system_element_info() { ); $types['checkboxes'] = array( '#input' => TRUE, - '#tree' => TRUE, '#process' => array('form_process_checkboxes'), '#theme_wrappers' => array('checkboxes'), '#pre_render' => array('form_pre_render_conditional_form_element'),