--- content_taxonomy.module.ori	Sun May 18 16:30:36 2008
+++ content_taxonomy.module	Wed Aug 13 22:07:40 2008
@@ -243,10 +243,35 @@ function content_taxonomy_form_alter($fo
     $content_type = $info['content types'][$form['type']['#value']];
     foreach ($content_type['fields'] as $field_name => $field) {
       if ($field['type'] == 'content_taxonomy') {
-        unset($form['taxonomy']);
-        break;
+        if (is_array($form['taxonomy'])) {
+          if (($field['tid'] == 0) && (array_key_exists($field['vid'], $form['taxonomy']))) {  // line 246
+            unset($form['taxonomy'][$field['vid']]);
+          }
+        }
+        else {
+          if (empty($field['depth'])) {
+            $tree = taxonomy_get_tree($field['vid'], $field['tid']);
+          }
+          else {
+            $tree = taxonomy_get_tree($field['vid'], $field['tid'], -1, $field['depth']);
+          }
+          if (is_array($form['taxonomy'][$field['vid']]['#options'])) {
+            $tids = array_map(create_function('$leaf', 'return $leaf->tid;'), $tree);
+            $form_tids = array_map(create_function('$element', 'return key((array)$element->option);'), $form['taxonomy'][$field['vid']]['#options']);
+            foreach ($form['taxonomy'][$field['vid']]['#options'] as $key => $element) {
+              if (is_array($element->option) && key($element->option)) {
+                $tid = key($element->option);
+                if (in_array($tid, $tids)) {
+                  unset($form['taxonomy'][$field['vid']]['#options'][$key]);
+                }
+              }
+            }
+          }
+        }
       }
     }
+
+
   }
 }
 
