Index: /CKEditor/branches/versions/3.3.x/CHANGES.html
===================================================================
--- /CKEditor/branches/versions/3.3.x/CHANGES.html	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/CHANGES.html	(revision 5582)
@@ -35,4 +35,29 @@
 		CKEditor Changelog
 	</h1>
+	<h3>
+			CKEditor 3.3.1 (SVN)</h3>
+	<p>
+			New features:</p>
+	<ul>
+			<li></li>
+	</ul>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5780">#5780</a> : Text selection lost when opening some of the dialogs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5787">#5787</a> : Liststyle plugin wasn't packaged into the core (CKEDITOR.resourceManager.load exception).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5637">#5637</a> : Fix wrong nesting that generated "&lt;head&gt; must be a child of &lt;html&gt;" warning in Webkit.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5790">#5790</a> : Internal only attributes output on fullpage &lt;html&gt; tag.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5761">#5761</a> : [IE] Color dialog matrix buttons are barely clickable in quirks mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5759">#5759</a> : [IE] Clicking on the scrollbar and then on the host page causes error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5772">#5772</a> : List style dialog is missing tab page ids.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5782">#5782</a> : [FF] Wysiwyg mode is broken by 'display' style changes on editor's parent DOM tree.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5801">#5801</a> : [IE] contentEditable="false" doesn't apply in effect on inline-elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5794">#5794</a> : Empty find matching twice results in JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5732">#5732</a> : If it isn't possible to connect to the SCAYT servers the dialogs might hang in Firefox. Fix for Firefox>=3.6.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5807">#5807</a> : [FF2] New page command results in uneditable document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5807">#5807</a> : [FF2] SCAYT plugin is disabled in Firefox2 due to selection interference.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5772">#5772</a> : [IE] Some numbered list style types are not supported by IE6/7 and causes JavaScript error.</li>
+	</ul>
 	<h3>
 		CKEditor 3.3</h3>
Index: /CKEditor/branches/versions/3.3.x/_source/core/dom/range.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/core/dom/range.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/core/dom/range.js	(revision 5582)
@@ -1790,6 +1790,13 @@
 		getEnclosedNode : function()
 		{
-			var walkerRange = this.clone(),
-				walker = new CKEDITOR.dom.walker( walkerRange ),
+			var walkerRange = this.clone();
+
+			// Optimize and analyze the range to avoid DOM destructive nature of walker. (#
+			walkerRange.optimize();
+			if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT
+					|| walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )
+				return null;
+
+			var walker = new CKEDITOR.dom.walker( walkerRange ),
 				isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),
 				isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
Index: /CKEditor/branches/versions/3.3.x/_source/lang/_translationstatus.txt
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/lang/_translationstatus.txt	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/lang/_translationstatus.txt	(revision 5582)
@@ -17,5 +17,5 @@
 en-gb.js   Found: 370 Missing: 154
 eo.js      Found: 259 Missing: 265
-es.js      Found: 467 Missing: 57
+es.js      Found: 524 Missing: 0
 et.js      Found: 301 Missing: 223
 eu.js      Found: 403 Missing: 121
Index: /CKEditor/branches/versions/3.3.x/_source/lang/es.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/lang/es.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/lang/es.js	(revision 5582)
@@ -32,9 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+	editorTitle : 'Editor de texto, %1, pulse ALT 0 para ayuda.',
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbar	: 'Barra de herramientas',
+	editor	: 'Editor de texto enriquecido',
 
 	// Toolbar buttons without dialogs.
@@ -93,6 +93,6 @@
 		ok				: 'Aceptar',
 		cancel			: 'Cancelar',
-		close			: 'Close', // MISSING
-		preview			: 'Preview', // MISSING
+		close			: 'Cerrar',
+		preview			: 'Previsualización',
 		generalTab		: 'General',
 		advancedTab		: 'Avanzado',
@@ -100,10 +100,10 @@
 		confirmNewPage	: 'Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?',
 		confirmCancel	: 'Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?',
-		options			: 'Options', // MISSING
-		target			: 'Target', // MISSING
-		targetNew		: 'New Window (_blank)', // MISSING
-		targetTop		: 'Topmost Window (_top)', // MISSING
-		targetSelf		: 'Same Window (_self)', // MISSING
-		targetParent	: 'Parent Window (_parent)', // MISSING
+		options			: 'Opciones',
+		target			: 'Destino',
+		targetNew		: 'Nueva ventana (_blank)',
+		targetTop		: 'Ventana principal (_top)',
+		targetSelf		: 'Misma ventana (_self)',
+		targetParent	: 'Ventana padre (_parent)',
 
 		// Put the voice-only part of the label in the span.
@@ -113,5 +113,5 @@
 	contextmenu :
 	{
-		options : 'Context Menu Options' // MISSING
+		options : 'Opciones del menú contextual'
 	},
 
@@ -121,5 +121,5 @@
 		toolbar		: 'Insertar Caracter Especial',
 		title		: 'Seleccione un caracter especial',
-		options : 'Special Character Options' // MISSING
+		options : 'Opciones de caracteres especiales'
 	},
 
@@ -136,5 +136,5 @@
 		advanced	: 'Avanzado',
 		type		: 'Tipo de vínculo',
-		toUrl		: 'URL', // MISSING
+		toUrl		: 'URL',
 		toAnchor	: 'Referencia en esta página',
 		toEmail		: 'E-Mail',
@@ -193,22 +193,22 @@
 	list:
 	{
-		numberedTitle		: 'Numbered List Properties', // MISSING
-		bulletedTitle		: 'Bulleted List Properties', // MISSING
-		type				: 'Type', // MISSING
-		start				: 'Start', // MISSING
-		circle				: 'Circle', // MISSING
-		disc				: 'Disc', // MISSING
-		square				: 'Square', // MISSING
-		none				: 'None', // MISSING
-		notset				: '<not set>', // MISSING
-		armenian			: 'Armenian numbering', // MISSING
-		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
-		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
-		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
-		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
-		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
-		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
-		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
-		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+		numberedTitle		: 'Propiedades de lista numerada',
+		bulletedTitle		: 'Propiedades de viñetas',
+		type				: 'Tipo',
+		start				: 'Inicio',
+		circle				: 'Círculo',
+		disc				: 'Disco',
+		square				: 'Cuadrado',
+		none				: 'Ninguno',
+		notset				: '<sin establecer>',
+		armenian			: 'Numeración armenia',
+		georgian			: 'Numeración georgiana (an, ban, gan, etc.)',
+		lowerRoman			: 'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)',
+		upperRoman			: 'Números romanos en mayúsculas (I, II, III, IV, V, etc.)',
+		lowerAlpha			: 'Alfabeto en minúsculas (a, b, c, d, e, etc.)',
+		upperAlpha			: 'Alfabeto en mayúsculas  (A, B, C, D, E, etc.)',
+		lowerGreek			: 'Letras griegas (alpha, beta, gamma, etc.)',
+		decimal				: 'Decimal (1, 2, 3, etc.)',
+		decimalLeadingZero	: 'Decimal con cero inicial (01, 02, 03, etc.)'
 	},
 
@@ -246,5 +246,5 @@
 		widthPx		: 'pixeles',
 		widthPc		: 'porcentaje',
-		widthUnit	: 'width unit', // MISSING
+		widthUnit	: 'unidad de la anchura',
 		height		: 'Altura',
 		cellSpace	: 'Esp. e/celdas',
@@ -409,5 +409,5 @@
 		height		: 'Altura',
 		lockRatio	: 'Proporcional',
-		unlockRatio	: 'Unlock Ratio', // MISSING
+		unlockRatio	: 'Desbloquear el proporcional',
 		resetSize	: 'Tamaño Original',
 		border		: 'Borde',
@@ -422,9 +422,9 @@
 		img2Button	: '¿Desea convertir la imagen en un botón de imagen?',
 		urlMissing	: 'Debe indicar la URL de la imagen.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
-		validateBorder	: 'Border must be a whole number.', // MISSING
-		validateHSpace	: 'HSpace must be a whole number.', // MISSING
-		validateVSpace	: 'VSpace must be a whole number.' // MISSING
+		validateWidth	: 'La anchura debe ser un número.',
+		validateHeight	: 'La altura debe ser un número.',
+		validateBorder	: 'El borde debe ser un número.',
+		validateHSpace	: 'El espaciado horizontal debe ser un número.',
+		validateVSpace	: 'El espaciado vertical debe ser un número.'
 	},
 
@@ -506,12 +506,12 @@
 	smiley :
 	{
-		toolbar	: 'Emoticons',
+		toolbar	: 'Emoticonos',
 		title	: 'Insertar un Emoticon',
-		options : 'Smiley Options' // MISSING
+		options : 'Opciones de emoticonos'
 	},
 
 	elementsPath :
 	{
-		eleLabel : 'Elements path', // MISSING
+		eleLabel : 'Ruta de los elementos',
 		eleTitle : '%1 elemento'
 	},
@@ -539,5 +539,5 @@
 		pasteMsg	: 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.',
 		securityMsg	: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.',
-		pasteArea	: 'Paste Area' // MISSING
+		pasteArea	: 'Zona de pegado'
 	},
 
@@ -560,5 +560,5 @@
 		button			: 'Plantillas',
 		title			: 'Contenido de Plantillas',
-		options : 'Template Options', // MISSING
+		options : 'Opciones de plantillas',
 		insertOption	: 'Reemplazar el contenido actual',
 		selectPromptMsg	: 'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',
@@ -571,5 +571,5 @@
 	{
 		label		: 'Estilo',
-		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle	: 'Estilos para formatear',
 		panelTitle1	: 'Estilos de párrafo',
 		panelTitle2	: 'Estilos de carácter',
@@ -629,5 +629,5 @@
 		textColorTitle	: 'Color de Texto',
 		bgColorTitle	: 'Color de Fondo',
-		panelTitle		: 'Colors', // MISSING
+		panelTitle		: 'Colores',
 		auto			: 'Automático',
 		more			: 'Más Colores...'
@@ -681,5 +681,5 @@
 	{
 		title			: 'Comprobar Ortografía Mientras Escribe',
-		opera_title		: 'Not supported by Opera', // MISSING
+		opera_title		: 'No soportado en Opera',
 		enable			: 'Activar Corrector',
 		disable			: 'Desactivar Corrector',
@@ -695,18 +695,18 @@
 
 		optionsTab		: 'Opciones',
-		allCaps			: 'Ignore All-Caps Words', // MISSING
-		ignoreDomainNames : 'Ignore Domain Names', // MISSING
-		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
-		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+		allCaps			: 'Omitir palabras en MAYÚSCULAS',
+		ignoreDomainNames : 'Omitir nombres de dominio',
+		mixedCase		: 'Ignorar palabras con combinación de mayúsculas y minúsculas',
+		mixedWithDigits	: 'Omitir palabras con números',
 
 		languagesTab	: 'Idiomas',
 
 		dictionariesTab	: 'Diccionarios',
-		dic_field_name	: 'Dictionary name', // MISSING
-		dic_create		: 'Create', // MISSING
-		dic_restore		: 'Restore', // MISSING
-		dic_delete		: 'Delete', // MISSING
-		dic_rename		: 'Rename', // MISSING
-		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+		dic_field_name	: 'Nombre del diccionario',
+		dic_create		: 'Crear',
+		dic_restore		: 'Recuperar',
+		dic_delete		: 'Borrar',
+		dic_rename		: 'Renombrar',
+		dic_info		: 'Inicialmente el Diccionario de usuario se guarda en una Cookie. Sin embargo, las cookies están limitadas en tamaño. Cuando el diccionario crece a un punto en el que no se puede guardar en una Cookie, el diccionario puede ser almacenado en nuestro servidor. Para almacenar su diccionario personalizado en nuestro servidor debe especificar un nombre para su diccionario. Si ya ha guardado un diccionaro, por favor, escriba su nombre y pulse el botón Recuperar',
 
 		aboutTab		: 'Acerca de'
@@ -737,5 +737,5 @@
 	{
 		title		: 'Elegir color',
-		options	:	'Color Options', // MISSING
+		options	:	'Opciones de colores',
 		highlight	: 'Muestra',
 		selected	: 'Elegido',
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/colordialog/dialogs/colordialog.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/colordialog/dialogs/colordialog.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/colordialog/dialogs/colordialog.js	(revision 5582)
@@ -215,5 +215,5 @@
 						' onkeydown="CKEDITOR.tools.callFunction( ' + onKeydownHandler + ', event, this )"' +
 						' onclick="CKEDITOR.tools.callFunction(' + onClickHandler + ', event, this ); return false;"' +
-						' tabindex="-1"><span class="cke_voice_label">' + color + '</span></a>', CKEDITOR.document ) );
+						' tabindex="-1"><span class="cke_voice_label">' + color + '</span>&nbsp;</a>', CKEDITOR.document ) );
 			}
 
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/find/dialogs/find.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/find/dialogs/find.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/find/dialogs/find.js	(revision 5582)
@@ -325,5 +325,5 @@
 						cursors = this._.cursors;
 
-				if ( ( lastCursor = cursors[ cursors.length - 1 ] ) )
+				if ( ( lastCursor = cursors[ cursors.length - 1 ] ) && lastCursor.textNode )
 					nextRangeWalker = new characterWalker( getRangeAfterCursor( lastCursor ) );
 				// In case it's an empty range (no cursors), figure out next range from walker (#4951).
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/htmldataprocessor/plugin.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/htmldataprocessor/plugin.js	(revision 5582)
@@ -177,4 +177,10 @@
 						return false;
 					}
+				},
+
+				html : function( element )
+				{
+					delete element.attributes.contenteditable;
+					delete element.attributes[ 'class' ];
 				},
 
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/liststyle/dialogs/liststyle.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/liststyle/dialogs/liststyle.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/liststyle/dialogs/liststyle.js	(revision 5582)
@@ -38,4 +38,6 @@
 				[
 					{
+						id : 'info',
+						accessKey : 'I',
 						elements :
 						[
@@ -91,4 +93,25 @@
 		else if ( startupPage == 'numberedListStyle'  )
 		{
+
+			var listStyleOptions =
+			[
+				[ editor.lang.list.notset, '' ],
+				[ editor.lang.list.lowerRoman, 'lower-roman' ],
+				[ editor.lang.list.upperRoman, 'upper-roman' ],
+				[ editor.lang.list.lowerAlpha, 'lower-alpha' ],
+				[ editor.lang.list.upperAlpha, 'upper-alpha' ],
+				[ editor.lang.list.decimal, 'decimal' ]
+			];
+
+			if ( !CKEDITOR.env.ie || CKEDITOR.env.version > 7 )
+			{
+				listStyleOptions.concat( [
+					[ editor.lang.list.armenian, 'armenian' ],
+					[ editor.lang.list.decimalLeadingZero, 'decimal-leading-zero' ],
+					[ editor.lang.list.georgian, 'georgian' ],
+					[ editor.lang.list.lowerGreek, 'lower-greek' ]
+				]);
+			}
+
 			return {
 				title : editor.lang.list.numberedTitle,
@@ -98,4 +121,6 @@
 				[
 					{
+						id : 'info',
+						accessKey : 'I',
 						elements :
 						[
@@ -124,17 +149,5 @@
 										id : 'type',
 										style : 'width: 100%;',
-										items :
-										[
-											[ editor.lang.list.notset, '' ],
-											[ editor.lang.list.armenian, 'armenian' ],
-											[ editor.lang.list.georgian, 'georgian' ],
-											[ editor.lang.list.lowerRoman, 'lower-roman' ],
-											[ editor.lang.list.upperRoman, 'upper-roman' ],
-											[ editor.lang.list.lowerAlpha, 'lower-alpha' ],
-											[ editor.lang.list.upperAlpha, 'upper-alpha' ],
-											[ editor.lang.list.lowerGreek, 'lower-greek' ],
-											[ editor.lang.list.decimal, 'decimal' ],
-											[ editor.lang.list.decimalLeadingZero, 'decimal-leading-zero' ]
-										],
+										items : listStyleOptions,
 										setup : function( element )
 										{
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/scayt/plugin.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/scayt/plugin.js	(revision 5582)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -358,6 +358,6 @@
 		loadEngine : function( editor )
 		{
-			// SCAYT doesn't work with Opera.
-			if ( CKEDITOR.env.opera )
+			// SCAYT doesn't work with Firefox2, Opera.
+			if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 || CKEDITOR.env.opera )
 				return editor.fire( 'showScaytState' );
 
@@ -409,4 +409,5 @@
 								{
 									type : 'text/javascript',
+									async : 'true',
 									src : scaytUrl
 								}
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/selection/plugin.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/selection/plugin.js	(revision 5582)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -236,5 +236,5 @@
 								// Avoid saving selection from within text input. (#5747)
 								var parentTag;
-								if ( nativeSel.type == 'Text'
+								if ( nativeSel && nativeSel.type == 'Text'
 									&& ( parentTag = nativeSel.createRange().parentElement().nodeName.toLowerCase() )
 									&& parentTag in { input: 1, textarea : 1 } )
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/sourcearea/plugin.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/sourcearea/plugin.js	(revision 5582)
@@ -192,4 +192,5 @@
 		{
 			modes : { wysiwyg:1, source:1 },
+			editorFocus : false,
 
 			exec : function( editor )
Index: /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js	(revision 5582)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -479,5 +479,6 @@
 								if ( evt.data.getTarget().equals( htmlElement ) )
 								{
-									CKEDITOR.env.gecko && blinkCursor();
+									if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+										blinkCursor();
 									focusGrabber.focus();
 								}
@@ -493,5 +494,8 @@
 							{
 								var doc = editor.document;
-								if ( CKEDITOR.env.gecko || CKEDITOR.env.opera )
+
+								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+									blinkCursor();
+								else if ( CKEDITOR.env.opera )
 									doc.getBody().focus();
 								else if ( CKEDITOR.env.webkit )
@@ -708,6 +712,6 @@
 										'<html dir="' + config.contentsLangDirection + '"' +
 											' lang="' + ( config.contentsLanguage || editor.langCode ) + '">' +
-										'<title>' + frameLabel + '</title>' +
 										'<head>' +
+											'<title>' + frameLabel + '</title>' +
 											baseTag +
 											headExtra +
@@ -816,15 +820,39 @@
 			// IE8 stricts mode doesn't have 'contentEditable' in effect
 			// on element unless it has layout. (#5562)
-			if ( CKEDITOR.env.ie8 )
+			if ( CKEDITOR.env.ie8Compat )
+			{
 				editor.addCss( 'html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}' );
 
+				var selectors = [];
+				for ( var tag in CKEDITOR.dtd.$removeEmpty )
+					selectors.push( 'html.CSS1Compat ' + tag + '[contenteditable=false]' );
+				editor.addCss( selectors.join( ',' ) + '{ display:inline-block;}' );
+			}
+
 			// Switch on design mode for a short while and close it after then.
-			function blinkCursor()
+			function blinkCursor( retry )
 			{
-				editor.document.$.designMode = 'on';
-				setTimeout( function ()
-				{
-					editor.document.$.designMode = 'off';
-				}, 50 );
+				CKEDITOR.tools.tryThese(
+					function()
+					{
+						editor.document.$.designMode = 'on';
+						setTimeout( function ()
+						{
+							editor.document.$.designMode = 'off';
+							editor.document.getBody().focus();
+						}, 50 );
+					},
+					function()
+					{
+						// The above call is known to fail when parent DOM
+						// tree layout changes may break design mode. (#5782)
+						// Refresh the 'contentEditable' is a cue to this.
+						editor.document.$.designMode = 'off';
+						var body = editor.document.getBody();
+						body.setAttribute( 'contentEditable', false );
+						body.setAttribute( 'contentEditable', true );
+						// Try it again once..
+						!retry && blinkCursor( 1 );
+					});
 			}
 
Index: /CKEditor/branches/versions/3.3.x/ckeditor.pack
===================================================================
--- /CKEditor/branches/versions/3.3.x/ckeditor.pack	(revision 5581)
+++ /CKEditor/branches/versions/3.3.x/ckeditor.pack	(revision 5582)
@@ -47,4 +47,6 @@
 		'CKEDITOR.END' : 2,
 		'CKEDITOR.STARTEND' : 3,
+		'CKEDITOR.SHRINK_ELEMENT' : 1,
+		'CKEDITOR.SHRINK_TEXT' : 2,
 		'CKEDITOR.UI_BUTTON' : 1,
 		'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
@@ -158,4 +160,5 @@
 					'_source/plugins/link/plugin.js',
 					'_source/plugins/list/plugin.js',
+					'_source/plugins/liststyle/plugin.js',
 					'_source/plugins/maximize/plugin.js',
 					'_source/plugins/newpage/plugin.js',
