summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/form.inc13
-rw-r--r--modules/system/system.module1
2 files changed, 7 insertions, 7 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 757228743..affd82b0e 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 621c7e146..f50d6f1c4 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'),