Index: /CKEditor/branches/versions/3.4.x/CHANGES.html
===================================================================
--- /CKEditor/branches/versions/3.4.x/CHANGES.html	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/CHANGES.html	(revision 6235)
@@ -1,3 +1,3 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+﻿﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
@@ -36,5 +36,5 @@
 	</h1>
 	<h3>
-			CKEditor 3.5 (SVN)</h3>
+			CKEditor 3.4.3 (SVN)</h3>
 	<p>
 			New features:</p>
@@ -45,22 +45,27 @@
 			Fixed issues:</p>
 	<ul>
-		<li><a href="http://dev.ckeditor.com/ticket/6419">#6419</a> : IE: List creation by merging problem.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/5599">#5599</a> : Labels for special characters need to be resourced.</li>
-	</ul>
-	<h3>
-			CKEditor 3.4.3 (SVN)</h3>
-	<p>
-			New features:</p>
-	<ul>
-		<li></li>
-	</ul>
-	<p>
-			Fixed issues:</p>
-	<ul>
+		<li><a href="http://dev.ckeditor.com/ticket/6554">#6554</a> : Webkit: cannot type after inserting Page Break.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6569">#6569</a> : Indentation now honors text direction of the only item.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6579">#6579</a> : The jQuery adapter wasn't working properly tunning on incompatible environments.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6644">#6644</a> : Restrict onmousedown handler to the toolbar area.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6656">#6656</a> : Panelbutton's buttons became active when clicking on source.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/5404">#5404</a> : Whitespaces (NBSP) were incorrectly added into empty table cells and list items.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6248">#6248</a> : Whitespaces (NBSP) were incorrectly added into empty table cells and list items.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6575">#6575</a> : Tabs disappearing in Link dialog after specific action sequence.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6510">#6510</a> : Margin mirroring doesn't respect style configuration.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6471">#6471</a> : BIDI: Pressing decrease indent in an RTL bulleted list causes incorrect behaviour.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6479">#6479</a> : BIDI: Language direction is not being preserved when pressing Enter after a paragraph format has been applied.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6670">#6670</a> : BIDI: Indent & List icons are not reversed when we apply RTL direction to a paragraph with any of Paragraph Formatting options.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6640">#6640</a> : Floating panels are now being closed when switching modes.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/4790">#4790</a> : Remove list with multiple items in enterBr doesn't preserve line-breaks.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6297">#6297</a> : Floated inline elements are no anymore acting in behavior of blocks.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6171">#6171</a> : [Firefox] Open rich combo scrolls host page to top when editor has vertical scrollbar.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6330">#6330</a> : List bullet form MS Word with Roman numbering are not preserved.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6720">#6720</a> : Attribute protection might detect wrong elements.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6580">#6580</a> : [IE9] Flash dialog doesn't get filled up.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6447">#6447</a> : Outdent list with "indentClasses" config doesn't work.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5894">#5894</a> : Custom buttons added at bottom of dialogs don't expand to include their contents.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6513">#6513</a> : Wrong ARIA attributes created on list options of "Styles" rich combo.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6150">#6150</a> : [Safari] Color dialog was broken.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6629">#6629</a> : Pre-formatted block is not anymore been listed as unexitable element.</li>
 	</ul>
 	<h3>
Index: /CKEditor/branches/versions/3.4.x/_source/core/config.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/config.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/config.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -350,5 +350,5 @@
 	/**
 	 * List of regular expressions to be executed over the input HTML,
-	 * indicating code that must stay untouched.
+	 * indicating HTML source code that matched must <strong>not</strong> present in WYSIWYG mode for editing.
 	 * @type Array
 	 * @default [] (empty array)
Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/document.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/document.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/document.js	(revision 6235)
@@ -151,5 +151,5 @@
 		getElementsByTag : function( tagName, namespace )
 		{
-			if ( !CKEDITOR.env.ie && namespace )
+			if ( !( CKEDITOR.env.ie && ! ( document.documentMode > 8 ) ) && namespace )
 				tagName = namespace + ':' + tagName;
 			return new CKEDITOR.dom.nodeList( this.$.getElementsByTagName( tagName ) );
Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/domobject.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/domobject.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/domobject.js	(revision 6235)
@@ -168,7 +168,4 @@
 	 * Sets a data slot value for this object. These values are shared by all
 	 * instances pointing to that same DOM object.
-	 * <strong>Note:</strong> The created data slot is only guarantied to be available on this unique dom node,
-	 * thus any wish to continue access it from other element clones (either created by clone node or from innerHtml)
-	 * will fail, for such usage, please use {@link CKEDITOR.dom.element::setAttribute} instead.
 	 * @name CKEDITOR.dom.domObject.prototype.setCustomData
 	 * @function
Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/element.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/element.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/element.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -614,5 +614,5 @@
 			var nodeName = this.$.nodeName.toLowerCase();
 
-			if ( CKEDITOR.env.ie )
+			if ( CKEDITOR.env.ie && ! ( document.documentMode > 8 ) )
 			{
 				var scopeName = this.$.scopeName;
@@ -721,7 +721,4 @@
 			var thisLength = thisAttribs.length,
 				otherLength = otherAttribs.length;
-
-			if ( !CKEDITOR.env.ie && thisLength != otherLength )
-				return false;
 
 			for ( var i = 0 ; i < thisLength ; i++ )
Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js	(revision 6235)
@@ -108,23 +108,22 @@
 			var $clone = this.$.cloneNode( includeChildren );
 
-			var removeIds = function( node )
-			{
-				if ( node.nodeType != CKEDITOR.NODE_ELEMENT )
-					return;
-
-				if ( !cloneId )
-					node.removeAttribute( 'id', false );
-				node.removeAttribute( '_cke_expando', false );
-
-				if ( includeChildren )
-				{
+			if ( !cloneId )
+			{
+				var removeIds = function( node )
+				{
+					if ( node.nodeType != CKEDITOR.NODE_ELEMENT )
+						return;
+
+					node.removeAttribute( 'id', false ) ;
+					node.removeAttribute( '_cke_expando', false ) ;
+
 					var childs = node.childNodes;
-					for ( var i=0; i < childs.length; i++ )
+					for ( var i=0 ; i < childs.length ; i++ )
 						removeIds( childs[ i ] );
-				}
-			};
-
-			// The "id" attribute should never be cloned to avoid duplication.
-			removeIds( $clone );
+				};
+
+				// The "id" attribute should never be cloned to avoid duplication.
+				removeIds( $clone );
+			}
 
 			return new CKEDITOR.dom.node( $clone );
@@ -661,4 +660,22 @@
 		},
 
+		/**
+		 * Checks is this node is read-only (should not be changed). It
+		 * additionaly returns the element, if any, which defines the read-only
+		 * state of this node. It may be the node itself or any of its parent
+		 * nodes.
+		 * @returns {CKEDITOR.dom.element|Boolean} An element containing
+		 *		read-only attributes or "false" if none is found.
+		 * @since 3.5
+		 * @example
+		 * // For the following HTML:
+		 * // <div contenteditable="false">Some <b>text</b></div>
+		 * 
+		 * // If "ele" is the above <div>
+		 * ele.getReadOnlyRoot();  // the <div> element
+		 *
+		 * // If "ele" is the above <b>
+		 * ele.getReadOnlyRoot();  // the <div> element
+		 */
 		isReadOnly : function()
 		{
Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/walker.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/walker.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/walker.js	(revision 6235)
@@ -335,14 +335,13 @@
 		'table-cell' : 1,
 		'table-caption' : 1
-	},
-	blockBoundaryNodeNameMatch = { hr : 1 };
+	};
 
 	CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames )
 	{
-		var nodeNameMatches = CKEDITOR.tools.extend( {},
-													blockBoundaryNodeNameMatch, customNodeNames || {} );
-
-		return blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] ||
-			nodeNameMatches[ this.getName() ];
+		var nodeNameMatches = CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$block, customNodeNames || {} );
+
+		// Don't consider floated formatting as block boundary, fall back to dtd check in that case. (#6297)  
+		return this.getComputedStyle( 'float' ) == 'none' && blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ]
+				|| nodeNameMatches[ this.getName() ];
 	};
 
Index: /CKEditor/branches/versions/3.4.x/_source/lang/de.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/lang/de.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/lang/de.js	(revision 6235)
@@ -722,5 +722,5 @@
 		title		: 'Über CKEditor',
 		dlgTitle	: 'Über CKEditor',
-		moreInfo	: 'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',
+		moreInfo	: 'Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:',
 		copy		: 'Copyright &copy; $1. Alle Rechte vorbehalten.'
 	},
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/bidi/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/bidi/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/bidi/plugin.js	(revision 6235)
@@ -49,5 +49,5 @@
 		var editor = evt.editor,
 			chromeRoot = editor.container.getChild( 1 ),
-			directionNode = getElementForDirection( evt.data.path.lastElement );
+			directionNode = evt.data.path.block || evt.data.path.blockLimit;
 
 		if ( directionNode && editor.lang.dir != directionNode.getComputedStyle( 'direction' ) )
@@ -124,5 +124,11 @@
 		// like a mirror. (#5910)
 		if ( dir != dirBefore )
-			editor.fire( 'dirChanged', element );
+		{
+			editor.fire( 'dirChanged',
+				{
+					node : element,
+					dir : dir
+				} );
+		}
 
 		editor.forceNextSelectionCheck();
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/colordialog/dialogs/colordialog.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/colordialog/dialogs/colordialog.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/colordialog/dialogs/colordialog.js	(revision 6235)
@@ -237,4 +237,5 @@
 		var table = new $el( 'table' );
 		createColorTable();
+		var html = table.getHtml();
 
 		var numbering = function( id )
@@ -271,10 +272,13 @@
 								{
 									type : 'html',
-									html : '<table role="listbox" aria-labelledby="' + tableLabelId + '" onmouseout="CKEDITOR.tools.callFunction( ' + onMouseout + ' );">' + table.getHtml() + '</table>' +
-												'<span id="' + tableLabelId + '" class="cke_voice_label">' + lang.options +'</span>',
+									html :	'<table role="listbox" aria-labelledby="' + tableLabelId + '" onmouseout="CKEDITOR.tools.callFunction( ' + onMouseout + ' );">' +
+											( !CKEDITOR.env.webkit ? html : '' ) +
+										'</table><span id="' + tableLabelId + '" class="cke_voice_label">' + lang.options +'</span>',
 									onLoad : function()
 									{
 										var table = CKEDITOR.document.getById( this.domId );
 										table.on( 'mouseover', updateHighlight );
+										// In WebKit, the table content must be inserted after this event call (#6150)
+										CKEDITOR.env.webkit && table.setHtml( html );
 									},
 									focus: function()
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/dialog/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/dialog/plugin.js	(revision 6235)
@@ -1030,5 +1030,5 @@
 		{
 			var tab = this._.tabs[id] && this._.tabs[id][0];
-			if ( !tab || this._.pageCount == 1 )
+			if ( !tab || this._.pageCount == 1 || !tab.isVisible() )
 				return;
 			// Switch to other tab first when we're hiding the active tab.
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/floatpanel/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/floatpanel/plugin.js	(revision 6235)
@@ -61,4 +61,6 @@
 				dir : editor.lang.dir
 			};
+
+			editor.on( 'mode', function(){ this.hide(); }, this );
 		},
 
@@ -124,8 +126,9 @@
 				element.setStyles(
 					{
-						top : 0,
+						top : top + 'px',
 						left: 0,
 						display	: ''
 					});
+
 				// Don't use display or visibility style because we need to
 				// calculate the rendering layout later and focus the element.
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/htmldataprocessor/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/htmldataprocessor/plugin.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -273,5 +273,5 @@
 	}
 
-	var protectAttributeRegex = /<((?:a|area|img|input)[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,
+	var protectAttributeRegex = /<((?:a|area|img|input)\b[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,
 		findSavedSrcRegex = /\s_cke_saved_src\s*=/;
 
@@ -502,7 +502,7 @@
 /**
  * Whether to force using "&" instead of "&amp;amp;" in elements attributes
- * values. It's not recommended to change this setting for compliance with the
- * W3C XHTML 1.0 standards
- * (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>).
+ * values, it's not recommended to change this setting for compliance with the
+ * W3C XHTML 1.0 standards (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>).
+ * @name CKEDITOR.config.forceSimpleAmpersand
  * @type Boolean
  * @default false
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/image/dialogs/image.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/image/dialogs/image.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/image/dialogs/image.js	(revision 6235)
@@ -1149,6 +1149,5 @@
 							setup : function( type, element )
 							{
-								if ( type == LINK )
-									this.setValue( element.getAttribute( 'target' ) );
+								this.setValue( element.getAttribute( 'target' ) || '' );
 							},
 							commit : function( type, element )
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/indent/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/indent/plugin.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -248,8 +248,6 @@
 					indentStep = Math.min( indentStep, editor.config.indentClasses.length );
 					indentStep = Math.max( indentStep, 0 );
-					var className = CKEDITOR.tools.ltrim( element.$.className.replace( self.classNameRegex, '' ) );
-					if ( indentStep < 1 )
-						element.$.className = className;
-					else
+					element.$.className = CKEDITOR.tools.ltrim( element.$.className.replace( self.classNameRegex, '' ) );
+					if ( indentStep > 0 )
 						element.addClass( editor.config.indentClasses[ indentStep - 1 ] );
 				}
@@ -393,6 +391,6 @@
 			{
 				var range = new CKEDITOR.dom.range( editor.document );
-				range.setStartBefore( e.data );
-				range.setEndAfter( e.data );
+				range.setStartBefore( e.data.node );
+				range.setEndAfter( e.data.node );
 
 				var walker = new CKEDITOR.dom.walker( range ),
@@ -404,5 +402,5 @@
 					{
 						// A child with the defined dir is to be ignored.
-						if ( !node.equals( e.data ) && node.getDirection() )
+						if ( !node.equals( e.data.node ) && node.getDirection() )
 						{
 							range.setStartAfter( node );
@@ -411,4 +409,19 @@
 						}
 
+						// Switch alignment classes.
+						var classes = editor.config.indentClasses;
+						if ( classes )
+						{
+							var suffix = ( e.data.dir == 'ltr' ) ? [ '_rtl', '' ] : [ '', '_rtl' ];
+							for ( var i = 0; i < classes.length; i++ )
+							{
+								if ( node.hasClass( classes[ i ] + suffix[ 0 ] ) )
+								{
+									node.removeClass( classes[ i ] + suffix[ 0 ] );
+									node.addClass( classes[ i ] + suffix[ 1 ] );
+								}
+							}
+						}
+
 						// Switch the margins.
 						var marginLeft = node.getStyle( 'margin-right' ),
@@ -428,4 +441,5 @@
 /**
  * Size of each indentation step
+ * @name CKEDITOR.config.indentOffset
  * @type Number
  * @default 40
@@ -436,4 +450,5 @@
  /**
  * Unit for the indentation style
+ * @name CKEDITOR.config.indentUnit
  * @type String
  * @default 'px'
@@ -445,4 +460,5 @@
  * List of classes to use for indenting the contents. If it's null, no classes will be used
  * and instead the {@link #indentUnit} and {@link #indentOffset} properties will be used.
+ * @name CKEDITOR.config.indentClasses
  * @type Array
  * default null
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/justify/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/justify/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/justify/plugin.js	(revision 6235)
@@ -88,6 +88,6 @@
 
 		var range = new CKEDITOR.dom.range( editor.document );
-		range.setStartBefore( e.data );
-		range.setEndAfter( e.data );
+		range.setStartBefore( e.data.node );
+		range.setEndAfter( e.data.node );
 
 		var walker = new CKEDITOR.dom.walker( range ),
@@ -99,5 +99,5 @@
 			{
 				// A child with the defined dir is to be ignored.
-				if ( !node.equals( e.data ) && node.getDirection() )
+				if ( !node.equals( e.data.node ) && node.getDirection() )
 				{
 					range.setStartAfter( node );
@@ -107,4 +107,22 @@
 
 				// Switch the alignment.
+				var classes = editor.config.justifyClasses;
+				if ( classes )
+				{
+					// The left align class.
+					if ( node.hasClass( classes[ 0 ] ) )
+					{
+						node.removeClass( classes[ 0 ] );
+						node.addClass( classes[ 2 ] );
+					}
+					// The right align class.
+					else if ( node.hasClass( classes[ 2 ] ) )
+					{
+						node.removeClass( classes[ 2 ] );
+						node.addClass( classes[ 0 ] );
+					}
+				}
+
+				// Always switch CSS margins.
 				var style = 'text-align';
 				var align = node.getStyle( style );
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/link/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/link/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/link/plugin.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -70,8 +70,11 @@
 				var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element;
 
-				if ( element.is( 'a' ) )
-					evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
-				else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
-					evt.data.dialog = 'anchor';
+				if ( !element.isReadOnly() )
+				{
+					if ( element.is( 'a' ) )
+						evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
+					else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+						evt.data.dialog = 'anchor';
+				}
 			});
 
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js	(revision 6235)
@@ -12,4 +12,8 @@
 	var listNodeNames = { ol : 1, ul : 1 },
 		emptyTextRegex = /^[\n\r\t ]*$/;
+
+	var whitespaces = CKEDITOR.dom.walker.whitespaces(),
+		bookmarks = CKEDITOR.dom.walker.bookmark(),
+		nonEmpty = function( node ){ return !( whitespaces( node ) || bookmarks( node ) ); };
 
 	CKEDITOR.plugins.list = {
@@ -134,9 +138,17 @@
 						 && currentIndex != listArray.length - 1 )
 					{
-						if ( currentListItem.getLast()
-								&& currentListItem.getLast().type == CKEDITOR.NODE_ELEMENT
-								&& currentListItem.getLast().getAttribute( 'type' ) == '_moz' )
-							currentListItem.getLast().remove();
-						currentListItem.appendBogus();
+						var last = currentListItem.getLast();
+						if ( last && last.type == CKEDITOR.NODE_ELEMENT
+								&& last.getAttribute( 'type' ) == '_moz' )
+						{
+							last.remove();
+						}
+
+						if ( !( last = currentListItem.getLast( nonEmpty )
+							&& last.type == CKEDITOR.NODE_ELEMENT
+							&& last.getName() in CKEDITOR.dtd.$block ) )
+						{
+							currentListItem.append( doc.createElement( 'br' ) );
+						}
 					}
 
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/menubutton/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/menubutton/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/menubutton/plugin.js	(revision 6235)
@@ -41,5 +41,5 @@
 			menu.onHide = CKEDITOR.tools.bind( function()
 				{
-					this.setState( _.previousState );
+					this.setState( this.modes && this.modes[ editor.mode ] ? _.previousState : CKEDITOR.TRISTATE_DISABLED );
 				},
 				this );
@@ -47,7 +47,5 @@
 			// Initialize the menu items at this point.
 			if ( this.onMenu )
-			{
 				menu.addListener( this.onMenu );
-			}
 		}
 
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/pastefromword/filter/default.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/pastefromword/filter/default.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/pastefromword/filter/default.js	(revision 6235)
@@ -121,4 +121,7 @@
 	var cssLengthRelativeUnit = /^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i;
 	var emptyMarginRegex = /^(?:\b0[^\s]*\s*){1,4}$/;		// e.g. 0px 0pt 0px
+	var romanLiternalPattern = '^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$',
+		lowerRomanLiteralRegex = new RegExp( romanLiternalPattern ),
+		upperRomanLiteralRegex = new RegExp( romanLiternalPattern.toUpperCase() );
 
 	var listBaseIndent = 0,
@@ -145,6 +148,8 @@
 					if ( !isNaN( bulletStyle[ 1 ] ) )
 						bulletStyle = 'decimal';
-					// No way to distinguish between Roman numerals and Alphas,
-					// detect them as a whole.
+					else if ( lowerRomanLiteralRegex.test( bulletStyle[ 1 ] ) )
+						bulletStyle = 'lower-roman';
+					else if ( upperRomanLiteralRegex.test( bulletStyle[ 1 ] ) )
+						bulletStyle = 'upper-roman';
 					else if ( /^[a-z]+$/.test( bulletStyle[ 1 ] ) )
 						bulletStyle = 'lower-alpha';
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/richcombo/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/richcombo/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/richcombo/plugin.js	(revision 6235)
@@ -107,9 +107,5 @@
 					}
 
-					if ( !_.committed )
-					{
-						_.list.commit();
-						_.committed = 1;
-					}
+					!_.committed && this.commit();
 
 					var value = this.getValue();
@@ -245,5 +241,5 @@
 						this.element.getFirst().removeClass( me.className + '_panel' );
 
-					me.setState( CKEDITOR.TRISTATE_OFF );
+					me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
 
 					me._.on = 0;
@@ -351,4 +347,5 @@
 		{
 			this._.list.commit();
+			this._.committed = 1;
 		},
 
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/dialogs/specialchar.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/dialogs/specialchar.js	(revision 6235)
@@ -223,9 +223,46 @@
 		buttons : [ CKEDITOR.dialog.cancelButton ],
 		charColumns : 17,
+		chars :
+			[
+				'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
+				'0','1','2','3','4','5','6','7','8','9',':',';',
+				'&lt;','=','&gt;','?','@',
+				'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
+				'P','Q','R','S','T','U','V','W','X','Y','Z',
+				'[',']','^','_','`',
+				'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
+				'q','r','s','t','u','v','w','x','y','z',
+				'{','|','}','~','&euro;(EURO SIGN)','&lsquo;(LEFT SINGLE QUOTATION MARK)','&rsquo;(RIGHT SINGLE QUOTATION MARK)','&ldquo;(LEFT DOUBLE QUOTATION MARK)',
+				'&rdquo;(RIGHT DOUBLE QUOTATION MARK)','&ndash;(EN DASH)','&mdash;(EM DASH)','&iexcl;(INVERTED EXCLAMATION MARK)','&cent;(CENT SIGN)','&pound;(POUND SIGN)',
+				'&curren;(CURRENCY SIGN)','&yen;(YEN SIGN)','&brvbar;(BROKEN BAR)','&sect;(SECTION SIGN)','&uml;(DIAERESIS)','&copy;(COPYRIGHT SIGN)','&ordf;(FEMININE ORDINAL INDICATOR)',
+				'&laquo;(LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)','&not;(NOT SIGN)','&reg;(REGISTERED SIGN)','&macr;(MACRON)','&deg;(DEGREE SIGN)','&plusmn;(PLUS-MINUS SIGN)','&sup2;(SUPERSCRIPT TWO)',
+				'&sup3;(SUPERSCRIPT THREE)','&acute;(ACUTE ACCENT)','&micro;(MICRO SIGN)','&para;(PILCROW SIGN)','&middot;(MIDDLE DOT)','&cedil;(CEDILLA)',
+				'&sup1;(SUPERSCRIPT ONE)','&ordm;(MASCULINE ORDINAL INDICATOR)','&raquo;(RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)','&frac14;(VULGAR FRACTION ONE QUARTER)','&frac12;(VULGAR FRACTION ONE HALF)','&frac34;(VULGAR FRACTION THREE QUARTERS)',
+				'&iquest;(INVERTED QUESTION MARK)','&Agrave;(LATIN CAPITAL LETTER A WITH GRAVE)','&Aacute;(LATIN CAPITAL LETTER A WITH ACUTE)','&Acirc;(LATIN CAPITAL LETTER A WITH CIRCUMFLEX)','&Atilde;(LATIN CAPITAL LETTER A WITH TILDE)','&Auml;(LATIN CAPITAL LETTER A WITH DIAERESIS)',
+				'&Aring;(LATIN CAPITAL LETTER A WITH RING ABOVE)','&AElig;(LATIN CAPITAL LETTER AE)','&Ccedil;(LATIN CAPITAL LETTER C WITH CEDILLA)','&Egrave;(LATIN CAPITAL LETTER E WITH GRAVE)','&Eacute;(LATIN CAPITAL LETTER E WITH ACUTE)','&Ecirc;(LATIN CAPITAL LETTER E WITH CIRCUMFLEX)',
+				'&Euml;(LATIN CAPITAL LETTER E WITH DIAERESIS)','&Igrave;(LATIN CAPITAL LETTER I WITH GRAVE)','&Iacute;(LATIN CAPITAL LETTER I WITH ACUTE)','&Icirc;(LATIN CAPITAL LETTER I WITH CIRCUMFLEX)','&Iuml;(LATIN CAPITAL LETTER I WITH DIAERESIS)','&ETH;(LATIN CAPITAL LETTER ETH)',
+				'&Ntilde;(LATIN CAPITAL LETTER N WITH TILDE)','&Ograve;(LATIN CAPITAL LETTER O WITH GRAVE)','&Oacute;(LATIN CAPITAL LETTER O WITH ACUTE)','&Ocirc;(LATIN CAPITAL LETTER O WITH CIRCUMFLEX)','&Otilde;(LATIN CAPITAL LETTER O WITH TILDE)','&Ouml;(LATIN CAPITAL LETTER O WITH DIAERESIS)',
+				'&times;(MULTIPLICATION SIGN)','&Oslash;(LATIN CAPITAL LETTER O WITH STROKE)','&Ugrave;(LATIN CAPITAL LETTER U WITH GRAVE)','&Uacute;(LATIN CAPITAL LETTER U WITH ACUTE)','&Ucirc;(LATIN CAPITAL LETTER U WITH CIRCUMFLEX)','&Uuml;(LATIN CAPITAL LETTER U WITH DIAERESIS)',
+				'&Yacute;(LATIN CAPITAL LETTER Y WITH ACUTE)','&THORN;(LATIN CAPITAL LETTER THORN)','&szlig;(LATIN SMALL LETTER SHARP S)','&agrave;(LATIN SMALL LETTER A WITH GRAVE)','&aacute;(LATIN SMALL LETTER A WITH ACUTE)','&acirc;(LATIN SMALL LETTER A WITH CIRCUMFLEX)',
+				'&atilde;(LATIN SMALL LETTER A WITH TILDE)','&auml;(LATIN SMALL LETTER A WITH DIAERESIS)','&aring;(LATIN SMALL LETTER A WITH RING ABOVE)','&aelig;(LATIN SMALL LETTER AE)','&ccedil;(LATIN SMALL LETTER C WITH CEDILLA)','&egrave;(LATIN SMALL LETTER E WITH GRAVE)',
+				'&eacute;(LATIN SMALL LETTER E WITH ACUTE)','&ecirc;(LATIN SMALL LETTER E WITH CIRCUMFLEX)','&euml;(LATIN SMALL LETTER E WITH DIAERESIS)','&igrave;(LATIN SMALL LETTER I WITH GRAVE)','&iacute;(LATIN SMALL LETTER I WITH ACUTE)','&icirc;(LATIN SMALL LETTER I WITH CIRCUMFLEX)',
+				'&iuml;(LATIN SMALL LETTER I WITH DIAERESIS)','&eth;(LATIN SMALL LETTER ETH)','&ntilde;(LATIN SMALL LETTER N WITH TILDE)','&ograve;(LATIN SMALL LETTER O WITH GRAVE)','&oacute;(LATIN SMALL LETTER O WITH ACUTE)','&ocirc;(LATIN SMALL LETTER O WITH CIRCUMFLEX)',
+				'&otilde;(LATIN SMALL LETTER O WITH TILDE)','&ouml;(LATIN SMALL LETTER O WITH DIAERESIS)',
+				'&divide;(DIVISION SIGN)','&oslash;(LATIN SMALL LETTER O WITH STROKE)',
+				'&ugrave;(LATIN SMALL LETTER U WITH GRAVE)','&uacute;(LATIN SMALL LETTER U WITH ACUTE)',
+				'&ucirc;(LATIN SMALL LETTER U WITH CIRCUMFLEX)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)',
+				'&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&yacute;(LATIN SMALL LETTER Y WITH ACUTE)','&thorn;(LATIN SMALL LETTER THORN)','&yuml;(LATIN SMALL LETTER Y WITH DIAERESIS)',
+				'&OElig;(LATIN CAPITAL LIGATURE OE)',
+				'&oelig;(LATIN SMALL LIGATURE OE)','&#372;(LATIN CAPITAL LETTER W WITH CIRCUMFLEX)',
+				'&#374(LATIN CAPITAL LETTER Y WITH CIRCUMFLEX)','&#373(LATIN SMALL LETTER W WITH CIRCUMFLEX)',
+				'&#375;(LATIN SMALL LETTER Y WITH CIRCUMFLEX)','&sbquo;(SINGLE LOW-9 QUOTATION MARK)',
+				'&#8219;(SINGLE HIGH-REVERSED-9 QUOTATION MARK)','&bdquo;(DOUBLE LOW-9 QUOTATION MARK)','&hellip;(HORIZONTAL ELLIPSIS)',
+				'&trade;(TRADE MARK SIGN)','&#9658;(BLACK RIGHT-POINTING POINTER)','&bull;(BULLET)',
+				'&rarr;(RIGHTWARDS ARROW)','&rArr;(RIGHTWARDS DOUBLE ARROW)','&hArr;(LEFT RIGHT DOUBLE ARROW)','&diams;(BLACK DIAMOND SUIT)','&asymp;(ALMOST EQUAL TO)'
+			],
 		onLoad :  function()
 		{
 			var columns = this.definition.charColumns,
-				extraChars = editor.config.extraSpecialChars,
-				chars = editor.config.specialChars;
+				chars = this.definition.chars;
 
 			var charsTableLabel =  CKEDITOR.tools.getNextId() + '_specialchar_table_label';
@@ -248,17 +285,12 @@
 					{
 						charDesc = '';
-						
-						if ( character instanceof Array )
-						{
-							charDesc = character[ 1 ];
-							character = character[ 0 ];
-						}
-						else
-						{
-							var _tmpName = character.toLowerCase().replace( '&', '' ).replace( ';', '' ).replace( '#', '' );
-
-							// Use character in case description unavailable.
-							charDesc = lang[ _tmpName ] || character;
-						}
+						character = character.replace( /\((.*?)\)/, function( match, desc )
+							{
+								charDesc = desc;
+								return '';
+							} );
+
+						// Use character in case description unavailable.
+						charDesc = charDesc || character;
 
 						var charLabelId =  'cke_specialchar_label_' + i + '_' + CKEDITOR.tools.getNextNumber();
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/plugin.js	(revision 6235)
@@ -10,33 +10,13 @@
 CKEDITOR.plugins.add( 'specialchar',
 {
-	// List of available localizations.
-	availableLangs : { en:1 },
-	
 	init : function( editor )
 	{
-		var pluginName = 'specialchar',
-			plugin = this;
+		var pluginName = 'specialchar';
 
 		// Register the dialog.
 		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' );
 
-		editor.addCommand( pluginName,
-			{
-				exec : function()
-				{
-					var langCode = editor.langCode;
-					langCode = plugin.availableLangs[ langCode ] ? langCode : 'en';
-
-					CKEDITOR.scriptLoader.load(
-							CKEDITOR.getUrl( plugin.path + 'lang/' + langCode + '.js' ),
-							function()
-							{
-								CKEDITOR.tools.extend( editor.lang.specialChar, plugin.lang[ langCode ] );
-								editor.openDialog( pluginName );
-							});
-				},
-				modes : { wysiwyg:1 },
-				canUndo : false
-			});
+		// Register the command.
+		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
 
 		// Register the toolbar button.
@@ -48,23 +28,2 @@
 	}
 } );
-
-/**
-  * The list of special characters visible in Special Character dialog.
-  * @type Array
-  * @example
-  * config.specialChars = [ '&quot;', '&rsquo;', [ '&custom;', 'Custom label' ] ];
-  * config.specialChars = config.specialChars.concat( [ '&quot;', [ '&rsquo;', 'Custom label' ] ] );
-  */
-CKEDITOR.config.specialChars = 
-	[
-		'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
-		'0','1','2','3','4','5','6','7','8','9',':',';',
-		'&lt;','=','&gt;','?','@',
-		'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
-		'P','Q','R','S','T','U','V','W','X','Y','Z',
-		'[',']','^','_','`',
-		'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
-		'q','r','s','t','u','v','w','x','y','z',
-		'{','|','}','~',
-		"&euro;", "&lsquo;", "&rsquo;", "&ldquo;", "&rdquo;", "&ndash;", "&mdash;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&reg;", "&macr;", "&deg;", "&", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&OElig;", "&oelig;", "&#372;", "&#374", "&#373", "&#375;", "&sbquo;", "&#8219;", "&bdquo;", "&hellip;", "&trade;", "&#9658;", "&bull;", "&rarr;", "&rArr;", "&hArr;", "&diams;", "&asymp;"
-	];
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/styles/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/styles/plugin.js	(revision 6235)
@@ -13,6 +13,6 @@
  * editing area. The current state is passed to the function. The possible
  * states are {@link CKEDITOR.TRISTATE_ON} and {@link CKEDITOR.TRISTATE_OFF}.
- * @param {CKEDITOR.style} The style to be watched.
- * @param {Function} The function to be called when the style state changes.
+ * @param {CKEDITOR.style} style The style to be watched.
+ * @param {Function} callback The function to be called when the style state changes.
  * @example
  * // Create a style object for the &lt;b&gt; element.
@@ -1409,5 +1409,5 @@
 /**
  * Gets the current styleSet for this instance
- * @param {Function} The function to be called with the styles data.
+ * @param {Function} callback The function to be called with the styles data.
  * @example
  * editor.getStylesSet( function( stylesDefinitions ) {} );
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js	(revision 6235)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -12,5 +12,5 @@
 {
 	// List of elements in which has no way to move editing focus outside.
-	var nonExitableElementNames = { table:1,pre:1 };
+	var nonExitableElementNames = { table:1 };
 
 	// Matching an empty paragraph at the end of document.
@@ -18,4 +18,11 @@
 
 	var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true );
+
+	// Elements that could have empty new line around, including table, pre-formatted block, hr, page-break. (#6554)
+	function nonExitable( element )
+	{
+		return ( element.getName() in nonExitableElementNames )
+				|| element.isBlockBoundary() && CKEDITOR.dtd.$empty[ element.getName() ];
+	}
 
 	function checkReadOnly( selection )
@@ -318,5 +325,5 @@
 				if ( element &&
 					 element.type == CKEDITOR.NODE_ELEMENT &&
-					 !nonExitableElementNames[ element.getName() ] )
+					 !nonExitable( element ) )
 				{
 					range.moveToElementEditStart( element );
@@ -328,5 +335,5 @@
 					if ( element &&
 						 element.type == CKEDITOR.NODE_ELEMENT &&
-						 !nonExitableElementNames[ element.getName() ] )
+						 !nonExitable( element ) )
 					{
 						range.moveToElementEditEnd( element );
@@ -1027,5 +1034,5 @@
 					focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml(
 						// Use 'span' instead of anything else to fly under the screen-reader radar. (#5049)
-						'<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>' ) );
+						'<span tabindex="-1" style="position:absolute;" role="presentation"></span>' ) );
 
 					focusGrabber.on( 'focus', function()
Index: /CKEditor/branches/versions/3.4.x/_source/skins/kama/dialog.css
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/skins/kama/dialog.css	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/skins/kama/dialog.css	(revision 6235)
@@ -395,4 +395,5 @@
 .cke_skin_kama a.cke_dialog_ui_button_cancel span
 {
+	width:60px;
 	padding-right: 20px;
 	padding-left: 20px;
@@ -518,5 +519,4 @@
 {
 	margin: 7px 0;
-	width: 60px;
 	text-align: center;
 }
Index: /CKEditor/branches/versions/3.4.x/_source/skins/office2003/dialog.css
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/skins/office2003/dialog.css	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/skins/office2003/dialog.css	(revision 6235)
@@ -430,4 +430,10 @@
 }
 
+.cke_skin_office2003 a.cke_dialog_ui_button_ok span,
+.cke_skin_office2003 a.cke_dialog_ui_button_cancel span
+{
+	width:60px;
+}
+
 .cke_skin_office2003 span.cke_dialog_ui_button
 {
@@ -486,5 +492,4 @@
 .cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button
 {
-	width: 60px;
 	margin: 7px 0;
 }
Index: /CKEditor/branches/versions/3.4.x/_source/skins/v2/dialog.css
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/skins/v2/dialog.css	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/skins/v2/dialog.css	(revision 6235)
@@ -429,4 +429,10 @@
 }
 
+.cke_skin_v2 a.cke_dialog_ui_button_ok span,
+.cke_skin_v2 a.cke_dialog_ui_button_cancel span
+{
+	width:60px;
+}
+
 .cke_skin_v2 span.cke_dialog_ui_button
 {
@@ -482,5 +488,4 @@
 .cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button
 {
-	width: 60px;
 	margin: 7px 0;
 }
Index: /CKEditor/branches/versions/3.4.x/_source/themes/default/theme.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/themes/default/theme.js	(revision 6234)
+++ /CKEditor/branches/versions/3.4.x/_source/themes/default/theme.js	(revision 6235)
@@ -185,8 +185,12 @@
 								'<a id="%close_button#" class="%close_button" href="javascript:void(0)" title="' +  editor.lang.common.close+'" role="button"><span class="cke_label">X</span></a>' +
 								'<div id="%tabs#" class="%tabs" role="tablist"></div>' +
-								'<table class="%contents" role="presentation"><tr>' +
+								'<table class="%contents" role="presentation">' +
+								'<tr>' +
 								  '<td id="%contents#" class="%contents" role="presentation"></td>' +
-								'</tr></table>' +
-								'<div id="%footer#" class="%footer" role="presentation"></div>' +
+								'</tr>' +
+								'<tr>' +
+								  '<td id="%footer#" class="%footer" role="presentation"></td>' +
+								'</tr>' +
+								'</table>' +
 							'</div>' +
 							'<div id="%tl#" class="%tl"></div>' +
@@ -227,5 +231,5 @@
 					tabs		: body.getChild( 2 ),
 					contents	: body.getChild( [ 3, 0, 0, 0 ] ),
-					footer		: body.getChild( 4 )
+					footer		: body.getChild( [ 3, 0, 1, 0 ] )
 				}
 			};
