--- tinymce.module.4.7.0	2006-04-25 08:23:48.000000000 -0300
+++ tinymce.module	2006-09-09 20:43:26.290375000 -0300
@@ -527,7 +527,10 @@
       foreach ($plugins as $rname => $rplugin) { // Plugin name
         foreach ($rplugin as $mce_key => $mce_value) { // TinyMCE key
           foreach ($mce_value as $k => $v) { // Buttons
-            if ($settings['buttons'][$rname . '-' . $v]) {
+            if ( $v == 'separator' ) {
+              $init[$mce_key][] = $v;
+            }
+            else if ( $settings['buttons'][$rname . '-' . $v]) {
               // Font isn't a true plugin, rather it's buttons made available by the advanced theme
               if (!in_array($rname, $plugin_tracker) && $rname != 'font') $plugin_tracker[] = $rname;
               $init[$mce_key][] = $v;
@@ -557,11 +560,12 @@
         }
       }
 
-      // Cleanup
+      /* Cleanup - DISABLED in order to keep separators... why was this necessary?
       foreach ($init as $mce_key => $mce_value) {
         if (is_array($mce_value)) $mce_value = array_unique($mce_value);
         $init[$mce_key] = $mce_value;
       }
+      */
 
       // Shuffle buttons around so that row 1 always has the most buttons,
       // followed by row 2, etc. Note: These rows need to be set to NULL otherwise
@@ -784,6 +788,9 @@
   foreach($metadata as $name => $meta) {
     if (is_array($meta['buttons'])) {
       foreach ($meta['buttons'] as $button) {
+        // ignore separators when generating the settings form
+        if ($button == 'separator') continue;
+      
         if ($name != 'default') {
           $img_src = drupal_get_path('module', 'tinymce'). "/tinymce/jscripts/tiny_mce/plugins/$name/images/$name.gif";
 
