From f8fa114a8e4acb886a24573dd08240f65a9e5fd4 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Mon, 17 May 2010 21:23:32 +0000
Subject: [PATCH] - Patch #67439 by sun, effulgentsia: #tree in
 hook_element_info() does not work.

---
 includes/form.inc            | 13 +++++++------
 modules/system/system.module |  1 -
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/includes/form.inc b/includes/form.inc
index 75722874328b..affd82b0e30b 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 621c7e1462e6..f50d6f1c4eb3 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'),
-- 
GitLab