Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 4970)
+++ CKEditor/trunk/CHANGES.html	(revision 4971)
@@ -58,4 +58,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4618">#4618</a> : Selecting an emoticon or the lock and reset buttons in the image dialog fired the onBeforeUnload event in IE.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4678">#4678</a> : Respect empty width in tables.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5012">#5012</a> : Fixed dependency issues with the menu plugin.</li>
 	</ul>
 	<h3>
Index: CKEditor/trunk/_source/plugins/menu/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 4970)
+++ CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 4971)
@@ -9,41 +9,36 @@
 	{
 		var groups = editor.config.menu_groups.split( ',' ),
-			groupsOrder = {};
+			groupsOrder = editor._.menuGroups = {},
+			menuItems = editor._.menuItems = {};
 
 		for ( var i = 0 ; i < groups.length ; i++ )
 			groupsOrder[ groups[ i ] ] = i + 1;
 
-		editor._.menuGroups = groupsOrder;
-		editor._.menuItems = {};
+		editor.addMenuGroup = function( name, order )
+			{
+				groupsOrder[ name ] = order || 100;
+			};
+
+		editor.addMenuItem = function( name, definition )
+			{
+				if ( groupsOrder[ definition.group ] )
+					menuItems[ name ] = new CKEDITOR.menuItem( this, name, definition );
+			};
+
+		editor.addMenuItems = function( definitions )
+			{
+				for ( var itemName in definitions )
+				{
+					this.addMenuItem( itemName, definitions[ itemName ] );
+				}
+			};
+
+		editor.getMenuItem = function( name )
+			{
+				return menuItems[ name ];
+			};
 	},
 
 	requires : [ 'floatpanel' ]
-});
-
-CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
-{
-	addMenuGroup : function( name, order )
-	{
-		this._.menuGroups[ name ] = order || 100;
-	},
-
-	addMenuItem : function( name, definition )
-	{
-		if ( this._.menuGroups[ definition.group ] )
-			this._.menuItems[ name ] = new CKEDITOR.menuItem( this, name, definition );
-	},
-
-	addMenuItems : function( definitions )
-	{
-		for ( var itemName in definitions )
-		{
-			this.addMenuItem( itemName, definitions[ itemName ] );
-		}
-	},
-
-	getMenuItem : function( name )
-	{
-		return this._.menuItems[ name ];
-	}
 });
 
