Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.414.2.12
diff -u -p -r1.414.2.12 taxonomy.module
--- modules/taxonomy/taxonomy.module	15 Sep 2009 11:13:08 -0000	1.414.2.12
+++ modules/taxonomy/taxonomy.module	9 Oct 2009 16:57:54 -0000
@@ -502,7 +502,7 @@ function taxonomy_form_alter(&$form, $fo
     }
 
     $c = db_query(db_rewrite_sql("SELECT v.* FROM {vocabulary} v INNER JOIN {vocabulary_node_types} n ON v.vid = n.vid WHERE n.type = '%s' ORDER BY v.weight, v.name", 'v', 'vid'), $node->type);
-
+    $sub_weight = 0;
     while ($vocabulary = db_fetch_object($c)) {
       if ($vocabulary->tags) {
         if (isset($form_state['node_preview'])) {
@@ -542,6 +542,8 @@ function taxonomy_form_alter(&$form, $fo
         $form['taxonomy'][$vocabulary->vid]['#weight'] = $vocabulary->weight;
         $form['taxonomy'][$vocabulary->vid]['#required'] = $vocabulary->required;
       }
+      $form['taxonomy']['tags'][$vocabulary->vid]['#weight'] += $sub_weight;
+      $sub_weight += 0.1;
     }
     if (!empty($form['taxonomy']) && is_array($form['taxonomy'])) {
       if (count($form['taxonomy']) > 1) {
@@ -614,7 +616,7 @@ function taxonomy_node_get_terms($node, 
   static $terms;
 
   if (!isset($terms[$node->vid][$key])) {
-    $result = db_query(db_rewrite_sql('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.vid = %d ORDER BY v.weight, t.weight, t.name', 't', 'tid'), $node->vid);
+    $result = db_query(db_rewrite_sql('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.vid = %d ORDER BY v.weight, v.name, t.weight, t.name', 't', 'tid'), $node->vid);
     $terms[$node->vid][$key] = array();
     while ($term = db_fetch_object($result)) {
       $terms[$node->vid][$key][$term->$key] = $term;
