summaryrefslogtreecommitdiff
path: root/includes/form.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/form.inc')
-rw-r--r--includes/form.inc13
1 files changed, 7 insertions, 6 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;