Index: CKEditor/branches/versions/3.5.x/CHANGES.html
===================================================================
--- CKEditor/branches/versions/3.5.x/CHANGES.html	(revision 5935)
+++ CKEditor/branches/versions/3.5.x/CHANGES.html	(revision 5937)
@@ -49,4 +49,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/4821">#4821</a> : Icons in the toolbar were distorted with IE and zoom != 100%.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/5587">#5587</a> : Visual improvements in dialogs.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/4652">#4652</a> : Config for disable editor context menu.</li>
 		<li>Updated the following language files:<ul>
 			<li>Hebrew;</li>
Index: CKEditor/branches/versions/3.5.x/_source/plugins/contextmenu/plugin.js
===================================================================
--- CKEditor/branches/versions/3.5.x/_source/plugins/contextmenu/plugin.js	(revision 5935)
+++ CKEditor/branches/versions/3.5.x/_source/plugins/contextmenu/plugin.js	(revision 5937)
@@ -7,4 +7,135 @@
 {
 	requires : [ 'menu' ],
+	
+	// Make sure the base class (CKEDITOR.menu) is loaded before it (#3318).
+	onLoad : function()
+	{
+		CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass(
+		{
+			base : CKEDITOR.menu,
+
+			$ : function( editor )
+			{
+				this.base.call( this, editor,
+				{
+					panel:
+					{
+						className : editor.skinClass + ' cke_contextmenu',
+						attributes :
+						{
+							'aria-label' : editor.lang.contextmenu.options
+						}
+					}
+				});
+			},
+
+			proto :
+			{
+				addTarget : function( element, nativeContextMenuOnCtrl )
+				{
+					// Opera doesn't support 'contextmenu' event, we have duo approaches employed here:
+					// 1. Inherit the 'button override' hack we introduced in v2 (#4530), while this require the Opera browser
+					//  option 'Allow script to detect context menu/right click events' to be always turned on.
+					// 2. Considering the fact that ctrl/meta key is not been occupied
+					//  for multiple range selecting (like Gecko), we use this key
+					//  combination as a fallback for triggering context-menu. (#4530)
+					if ( CKEDITOR.env.opera )
+					{
+						var contextMenuOverrideButton;
+						element.on( 'mousedown', function( evt )
+						{
+							evt = evt.data;
+							if ( evt.$.button != 2 )
+							{
+								if ( evt.getKeystroke() == CKEDITOR.CTRL + 1 )
+									element.fire( 'contextmenu', evt );
+								return;
+							}
+
+							if ( nativeContextMenuOnCtrl
+								 && ( CKEDITOR.env.mac ? evt.$.metaKey : evt.$.ctrlKey ) )
+								return;
+
+							var target = evt.getTarget();
+
+							if ( !contextMenuOverrideButton )
+							{
+								var ownerDoc =  target.getDocument();
+								contextMenuOverrideButton = ownerDoc.createElement( 'input' ) ;
+								contextMenuOverrideButton.$.type = 'button' ;
+								ownerDoc.getBody().append( contextMenuOverrideButton ) ;
+							}
+
+							contextMenuOverrideButton.setAttribute( 'style', 'position:absolute;top:' + ( evt.$.clientY - 2 ) +
+								'px;left:' + ( evt.$.clientX - 2 ) +
+								'px;width:5px;height:5px;opacity:0.01' );
+
+						} );
+
+						element.on( 'mouseup', function ( evt )
+						{
+							if ( contextMenuOverrideButton )
+							{
+								contextMenuOverrideButton.remove();
+								contextMenuOverrideButton = undefined;
+								// Simulate 'contextmenu' event.
+								element.fire( 'contextmenu', evt.data );
+							}
+						} );
+					}
+
+					element.on( 'contextmenu', function( event )
+						{
+							var domEvent = event.data;
+
+							if ( nativeContextMenuOnCtrl &&
+								 // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
+								// which make this property unreliable. (#4826)
+								 ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ) )
+								return;
+
+
+							// Cancel the browser context menu.
+							domEvent.preventDefault();
+
+							var offsetParent = domEvent.getTarget().getDocument().getDocumentElement(),
+								offsetX = domEvent.$.clientX,
+								offsetY = domEvent.$.clientY;
+
+							CKEDITOR.tools.setTimeout( function()
+								{
+									this.open( offsetParent, null, offsetX, offsetY );
+								},
+								0, this );
+						},
+						this );
+
+					if ( CKEDITOR.env.webkit )
+					{
+						var holdCtrlKey,
+							onKeyDown = function( event )
+							{
+								holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey ;
+							},
+							resetOnKeyUp = function()
+							{
+								holdCtrlKey = 0;
+							};
+
+						element.on( 'keydown', onKeyDown );
+						element.on( 'keyup', resetOnKeyUp );
+						element.on( 'contextmenu', resetOnKeyUp );
+					}
+				},
+
+				open : function( offsetParent, corner, offsetX, offsetY )
+				{
+					this.editor.focus();
+					offsetParent = offsetParent || CKEDITOR.document.getDocumentElement();
+					this.show( offsetParent, corner, offsetX, offsetY );
+				}
+			}
+		});
+	},
 
 	beforeInit : function( editor )
@@ -16,250 +147,7 @@
 				exec : function()
 					{
-						editor.contextMenu.show( editor.document.getBody() );
+						editor.contextMenu.open( editor.document.getBody() );
 					}
 			});
-	}
-});
-
-CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass(
-{
-	$ : function( editor )
-	{
-		this.id = 'cke_' + CKEDITOR.tools.getNextNumber();
-		this.editor = editor;
-		this._.listeners = [];
-		this._.functionId = CKEDITOR.tools.addFunction( function( commandName )
-			{
-				this._.panel.hide();
-				editor.focus();
-				editor.execCommand( commandName );
-			},
-			this);
-
-		this.definition =
-		{
-			panel:
-			{
-				className : editor.skinClass + ' cke_contextmenu',
-				attributes :
-				{
-					'aria-label' : editor.lang.contextmenu.options
-				}
-			}
-		};
-	},
-
-	_ :
-	{
-		onMenu : function( offsetParent, corner, offsetX, offsetY )
-		{
-			var menu = this._.menu,
-				editor = this.editor;
-
-			if ( menu )
-			{
-				menu.hide();
-				menu.removeAll();
-			}
-			else
-			{
-				menu = this._.menu = new CKEDITOR.menu( editor, this.definition );
-				menu.onClick = CKEDITOR.tools.bind( function( item )
-				{
-					menu.hide();
-
-					if ( item.onClick )
-						item.onClick();
-					else if ( item.command )
-						editor.execCommand( item.command );
-
-				}, this );
-
-				menu.onEscape = function( keystroke )
-				{
-					var parent = this.parent;
-					// 1. If it's sub-menu, restore the last focused item
-					// of upper level menu.
-					// 2. In case of a top-menu, close it.
-					if ( parent )
-					{
-						parent._.panel.hideChild();
-						// Restore parent block item focus.
-						var parentBlock = parent._.panel._.panel._.currentBlock,
-							parentFocusIndex =  parentBlock._.focusIndex;
-						parentBlock._.markItem( parentFocusIndex );
-					}
-					else if ( keystroke == 27 )
-					{
-						this.hide();
-						editor.focus();
-					}
-					return false;
-				};
-			}
-
-			var listeners = this._.listeners,
-				includedItems = [];
-
-			var selection = this.editor.getSelection(),
-				element = selection && selection.getStartElement();
-
-			menu.onHide = CKEDITOR.tools.bind( function()
-				{
-					menu.onHide = null;
-
-					if ( CKEDITOR.env.ie )
-					{
-						var selection = editor.getSelection();
-						selection && selection.unlock();
-					}
-
-					this.onHide && this.onHide();
-				},
-				this );
-
-			// Call all listeners, filling the list of items to be displayed.
-			for ( var i = 0 ; i < listeners.length ; i++ )
-			{
-				var listenerItems = listeners[ i ]( element, selection );
-
-				if ( listenerItems )
-				{
-					for ( var itemName in listenerItems )
-					{
-						var item = this.editor.getMenuItem( itemName );
-
-						if ( item )
-						{
-							item.state = listenerItems[ itemName ];
-							menu.add( item );
-						}
-					}
-				}
-			}
-
-			// Don't show context menu with zero items.
-			menu.items.length && menu.show( offsetParent, corner || ( editor.lang.dir == 'rtl' ? 2 : 1 ), offsetX, offsetY );
-		}
-	},
-
-	proto :
-	{
-		addTarget : function( element, nativeContextMenuOnCtrl )
-		{
-			// Opera doesn't support 'contextmenu' event, we have duo approaches employed here:
-			// 1. Inherit the 'button override' hack we introduced in v2 (#4530), while this require the Opera browser
-			//  option 'Allow script to detect context menu/right click events' to be always turned on.
-			// 2. Considering the fact that ctrl/meta key is not been occupied
-			//  for multiple range selecting (like Gecko), we use this key
-			//  combination as a fallback for triggering context-menu. (#4530)
-			if ( CKEDITOR.env.opera )
-			{
-				var contextMenuOverrideButton;
-				element.on( 'mousedown', function( evt )
-				{
-					evt = evt.data;
-					if ( evt.$.button != 2 )
-					{
-						if ( evt.getKeystroke() == CKEDITOR.CTRL + 1 )
-							element.fire( 'contextmenu', evt );
-						return;
-					}
-
-					if ( nativeContextMenuOnCtrl
-						 && ( CKEDITOR.env.mac ? evt.$.metaKey : evt.$.ctrlKey ) )
-						return;
-
-					var target = evt.getTarget();
-
-					if ( !contextMenuOverrideButton )
-					{
-						var ownerDoc =  target.getDocument();
-						contextMenuOverrideButton = ownerDoc.createElement( 'input' ) ;
-						contextMenuOverrideButton.$.type = 'button' ;
-						ownerDoc.getBody().append( contextMenuOverrideButton ) ;
-					}
-
-					contextMenuOverrideButton.setAttribute( 'style', 'position:absolute;top:' + ( evt.$.clientY - 2 ) +
-						'px;left:' + ( evt.$.clientX - 2 ) +
-						'px;width:5px;height:5px;opacity:0.01' );
-
-				} );
-
-				element.on( 'mouseup', function ( evt )
-				{
-					if ( contextMenuOverrideButton )
-					{
-						contextMenuOverrideButton.remove();
-						contextMenuOverrideButton = undefined;
-						// Simulate 'contextmenu' event.
-						element.fire( 'contextmenu', evt.data );
-					}
-				} );
-			}
-
-			element.on( 'contextmenu', function( event )
-				{
-					var domEvent = event.data;
-
-					if ( nativeContextMenuOnCtrl &&
-					     // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
-						// which make this property unreliable. (#4826)
-					     ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ) )
-						return;
-
-
-					// Cancel the browser context menu.
-					domEvent.preventDefault();
-
-					var offsetParent = domEvent.getTarget().getDocument().getDocumentElement(),
-						offsetX = domEvent.$.clientX,
-						offsetY = domEvent.$.clientY;
-
-					CKEDITOR.tools.setTimeout( function()
-						{
-							this.show( offsetParent, null, offsetX, offsetY );
-						},
-						0, this );
-				},
-				this );
-
-			if ( CKEDITOR.env.webkit )
-			{
-				var holdCtrlKey,
-					onKeyDown = function( event )
-					{
-						holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey ;
-					},
-					resetOnKeyUp = function()
-					{
-						holdCtrlKey = 0;
-					};
-
-				element.on( 'keydown', onKeyDown );
-				element.on( 'keyup', resetOnKeyUp );
-				element.on( 'contextmenu', resetOnKeyUp );
-			}
-		},
-
-		addListener : function( listenerFn )
-		{
-			this._.listeners.push( listenerFn );
-		},
-
-		show : function( offsetParent, corner, offsetX, offsetY )
-		{
-			this.editor.focus();
-
-			// Selection will be unavailable after context menu shows up
-			// in IE, lock it now.
-			if ( CKEDITOR.env.ie )
-			{
-				var selection = this.editor.getSelection();
-				selection && selection.lock();
-			}
-
-			this._.onMenu( offsetParent || CKEDITOR.document.getDocumentElement(), corner, offsetX || 0, offsetY || 0 );
-		}
 	}
 });
Index: CKEditor/branches/versions/3.5.x/_source/plugins/menu/plugin.js
===================================================================
--- CKEditor/branches/versions/3.5.x/_source/plugins/menu/plugin.js	(revision 5935)
+++ CKEditor/branches/versions/3.5.x/_source/plugins/menu/plugin.js	(revision 5937)
@@ -54,4 +54,5 @@
 			this.editor = editor;
 			this.items = [];
+			this._.listeners = [];
 
 			this._.level = definition.level || 1;
@@ -72,4 +73,82 @@
 		_ :
 		{
+			onShow : function()
+			{
+				var selection = this.editor.getSelection();
+
+				// Selection will be unavailable after menu shows up
+				// in IE, lock it now.
+				if ( CKEDITOR.env.ie )
+					selection && selection.lock();
+
+				var element = selection && selection.getStartElement(),
+					listeners = this._.listeners,
+					includedItems = [];
+
+				this.removeAll();
+				// Call all listeners, filling the list of items to be displayed.
+				for ( var i = 0 ; i < listeners.length ; i++ )
+				{
+					var listenerItems = listeners[ i ]( element, selection );
+
+					if ( listenerItems )
+					{
+						for ( var itemName in listenerItems )
+						{
+							var item = this.editor.getMenuItem( itemName );
+
+							if ( item )
+							{
+								item.state = listenerItems[ itemName ];
+								this.add( item );
+							}
+						}
+					}
+				}
+			},
+
+			onClick : function( item )
+			{
+				this.hide();
+
+				if ( item.onClick )
+					item.onClick();
+				else if ( item.command )
+					this.editor.execCommand( item.command );
+			},
+
+			onEscape : function( keystroke )
+			{
+				var parent = this.parent;
+				// 1. If it's sub-menu, restore the last focused item
+				// of upper level menu.
+				// 2. In case of a top-menu, close it.
+				if ( parent )
+				{
+					parent._.panel.hideChild();
+					// Restore parent block item focus.
+					var parentBlock = parent._.panel._.panel._.currentBlock,
+						parentFocusIndex =  parentBlock._.focusIndex;
+					parentBlock._.markItem( parentFocusIndex );
+				}
+				else if ( keystroke == 27 )
+				{
+					this.hide();
+					this.editor.focus();
+				}
+				return false;
+			},
+
+			onHide : function()
+			{
+				if ( CKEDITOR.env.ie )
+				{
+					var selection = this.editor.getSelection();
+					selection && selection.unlock();
+				}
+
+				this.onHide && this.onHide();
+			},
+
 			showSubMenu : function( index )
 			{
@@ -99,7 +178,5 @@
 								   CKEDITOR.tools.extend( {}, this._.definition, { level : this._.level + 1 }, true ) );
 					menu.parent = this;
-					menu.onClick = CKEDITOR.tools.bind( this.onClick, this );
-					// Sub menu use their own scope for binding onEscape.
-					menu.onEscape = this.onEscape;
+					menu._.onClick = CKEDITOR.tools.bind( this._.onClick, this );
 				}
 
@@ -143,4 +220,15 @@
 			show : function( offsetParent, corner, offsetX, offsetY )
 			{
+				// Not for sub menu.
+				if ( !this.parent )
+				{
+					this._.onShow();
+					// Don't menu with zero items.
+					if ( ! this.items.length )
+						return;
+				}
+
+				corner = corner || ( this.editor.lang.dir == 'rtl' ? 2 : 1 );
+
 				var items = this.items,
 					editor = this.editor,
@@ -158,5 +246,5 @@
 					panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
 					{
-						if ( this.onEscape && this.onEscape( keystroke ) === false )
+						if ( this._.onEscape( keystroke ) === false )
 							return false;
 					},
@@ -165,5 +253,5 @@
 					panel.onHide = CKEDITOR.tools.bind( function()
 					{
-						this.onHide && this.onHide();
+						this._.onHide && this._.onHide();
 					},
 					this );
@@ -214,5 +302,5 @@
 								this._.showSubMenu( index );
 							else
-								this.onClick && this.onClick( item );
+								this._.onClick( item );
 						},
 						this);
@@ -257,6 +345,12 @@
 			},
 
+			addListener : function( listenerFn )
+			{
+				this._.listeners.push( listenerFn );
+			},
+
 			hide : function()
 			{
+				this._.onHide && this._.onHide();
 				this._.panel && this._.panel.hide();
 			}
@@ -278,106 +372,107 @@
 			});
 	}
+	CKEDITOR.menuItem = CKEDITOR.tools.createClass(
+	{
+		$ : function( editor, name, definition )
+		{
+			CKEDITOR.tools.extend( this, definition,
+				// Defaults
+				{
+					order : 0,
+					className : 'cke_button_' + name
+				});
+
+			// Transform the group name into its order number.
+			this.group = editor._.menuGroups[ this.group ];
+
+			this.editor = editor;
+			this.name = name;
+		},
+
+		proto :
+		{
+			render : function( menu, index, output )
+			{
+				var id = menu.id + String( index ),
+					state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state;
+
+				var classes = ' cke_' + (
+					state == CKEDITOR.TRISTATE_ON ? 'on' :
+					state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
+					'off' );
+
+				var htmlLabel = this.label;
+
+				if ( this.className )
+					classes += ' ' + this.className;
+
+				var hasSubMenu = this.getItems;
+
+				output.push(
+					'<span class="cke_menuitem">' +
+					'<a id="', id, '"' +
+						' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
+						' title="', this.label, '"' +
+						' tabindex="-1"' +
+						'_cke_focus=1' +
+						' hidefocus="true"' +
+						' role="menuitem"' +
+						( hasSubMenu ? 'aria-haspopup="true"' : '' ) +
+						( state == CKEDITOR.TRISTATE_DISABLED ? 'aria-disabled="true"' : '' ) +
+						( state == CKEDITOR.TRISTATE_ON ? 'aria-pressed="true"' : '' ) );
+
+				// Some browsers don't cancel key events in the keydown but in the
+				// keypress.
+				// TODO: Check if really needed for Gecko+Mac.
+				if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+				{
+					output.push(
+						' onkeypress="return false;"' );
+				}
+
+				// With Firefox, we need to force the button to redraw, otherwise it
+				// will remain in the focus state.
+				if ( CKEDITOR.env.gecko )
+				{
+					output.push(
+						' onblur="this.style.cssText = this.style.cssText;"' );
+				}
+
+				var offset = ( this.iconOffset || 0 ) * -16;
+				output.push(
+//					' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
+						' onmouseover="CKEDITOR.tools.callFunction(', menu._.itemOverFn, ',', index, ');"' +
+						' onmouseout="CKEDITOR.tools.callFunction(', menu._.itemOutFn, ',', index, ');"' +
+						' onclick="CKEDITOR.tools.callFunction(', menu._.itemClickFn, ',', index, '); return false;"' +
+						'>' +
+							'<span class="cke_icon_wrapper"><span class="cke_icon"' +
+								( this.icon ? ' style="background-image:url(' + CKEDITOR.getUrl( this.icon ) + ');background-position:0 ' + offset + 'px;"'
+								: '' ) +
+								'></span></span>' +
+							'<span class="cke_label">' );
+
+				if ( hasSubMenu )
+				{
+					output.push(
+								'<span class="cke_menuarrow">',
+									'<span>&#',
+										( this.editor.lang.dir == 'rtl' ?
+											'9668' :	// BLACK LEFT-POINTING POINTER
+											'9658' ),	// BLACK RIGHT-POINTING POINTER
+									';</span>',
+								'</span>' );
+				}
+
+				output.push(
+								htmlLabel,
+							'</span>' +
+					'</a>' +
+					'</span>' );
+			}
+		}
+	});
+
 })();
 
-CKEDITOR.menuItem = CKEDITOR.tools.createClass(
-{
-	$ : function( editor, name, definition )
-	{
-		CKEDITOR.tools.extend( this, definition,
-			// Defaults
-			{
-				order : 0,
-				className : 'cke_button_' + name
-			});
-
-		// Transform the group name into its order number.
-		this.group = editor._.menuGroups[ this.group ];
-
-		this.editor = editor;
-		this.name = name;
-	},
-
-	proto :
-	{
-		render : function( menu, index, output )
-		{
-			var id = menu.id + String( index ),
-				state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state;
-
-			var classes = ' cke_' + (
-				state == CKEDITOR.TRISTATE_ON ? 'on' :
-				state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
-				'off' );
-
-			var htmlLabel = this.label;
-
-			if ( this.className )
-				classes += ' ' + this.className;
-
-			var hasSubMenu = this.getItems;
-
-			output.push(
-				'<span class="cke_menuitem">' +
-				'<a id="', id, '"' +
-					' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
-					' title="', this.label, '"' +
-					' tabindex="-1"' +
-					'_cke_focus=1' +
-					' hidefocus="true"' +
-					' role="menuitem"' +
-					( hasSubMenu ? 'aria-haspopup="true"' : '' ) +
-					( state == CKEDITOR.TRISTATE_DISABLED ? 'aria-disabled="true"' : '' ) +
-					( state == CKEDITOR.TRISTATE_ON ? 'aria-pressed="true"' : '' ) );
-
-			// Some browsers don't cancel key events in the keydown but in the
-			// keypress.
-			// TODO: Check if really needed for Gecko+Mac.
-			if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
-			{
-				output.push(
-					' onkeypress="return false;"' );
-			}
-
-			// With Firefox, we need to force the button to redraw, otherwise it
-			// will remain in the focus state.
-			if ( CKEDITOR.env.gecko )
-			{
-				output.push(
-					' onblur="this.style.cssText = this.style.cssText;"' );
-			}
-
-			var offset = ( this.iconOffset || 0 ) * -16;
-			output.push(
-//					' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
-					' onmouseover="CKEDITOR.tools.callFunction(', menu._.itemOverFn, ',', index, ');"' +
-					' onmouseout="CKEDITOR.tools.callFunction(', menu._.itemOutFn, ',', index, ');"' +
-					' onclick="CKEDITOR.tools.callFunction(', menu._.itemClickFn, ',', index, '); return false;"' +
-					'>' +
-						'<span class="cke_icon_wrapper"><span class="cke_icon"' +
-							( this.icon ? ' style="background-image:url(' + CKEDITOR.getUrl( this.icon ) + ');background-position:0 ' + offset + 'px;"'
-							: '' ) +
-							'></span></span>' +
-						'<span class="cke_label">' );
-
-			if ( hasSubMenu )
-			{
-				output.push(
-							'<span class="cke_menuarrow">',
-								'<span>&#',
-									( this.editor.lang.dir == 'rtl' ?
-										'9668' :	// BLACK LEFT-POINTING POINTER
-										'9658' ),	// BLACK RIGHT-POINTING POINTER
-								';</span>',
-							'</span>' );
-			}
-
-			output.push(
-							htmlLabel,
-						'</span>' +
-				'</a>' +
-				'</span>' );
-		}
-	}
-});
 
 /**
Index: CKEditor/branches/versions/3.5.x/_source/plugins/menubutton/plugin.js
===================================================================
--- CKEditor/branches/versions/3.5.x/_source/plugins/menubutton/plugin.js	(revision 5935)
+++ CKEditor/branches/versions/3.5.x/_source/plugins/menubutton/plugin.js	(revision 5937)
@@ -6,5 +6,5 @@
 CKEDITOR.plugins.add( 'menubutton',
 {
-	requires : [ 'button', 'contextmenu' ],
+	requires : [ 'button', 'menu' ],
 	beforeInit : function( editor )
 	{
@@ -36,6 +36,12 @@
 		if ( !menu )
 		{
-			menu = _.menu = new CKEDITOR.plugins.contextMenu( editor );
-			menu.definition.panel.attributes[ 'aria-label' ] = editor.lang.common.options;
+			menu = _.menu = new CKEDITOR.menu( editor,
+			{
+				panel:
+				{
+					className : editor.skinClass + ' cke_contextmenu',
+					attributes : { 'aria-label' : editor.lang.common.options }
+				}
+			});
 
 			menu.onHide = CKEDITOR.tools.bind( function()
