Index: /CKEditor/branches/versions/3.2.x/CHANGES.html
===================================================================
--- /CKEditor/branches/versions/3.2.x/CHANGES.html	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/CHANGES.html	(revision 5358)
@@ -126,4 +126,8 @@
 		<li><a href="http://dev.fckeditor.net/ticket/5465">#5465</a> : ShiftEnter=DIV doesn't respect list item when pressing enter at end of list item.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/5454">#5454</a> : After replaced success, the popup window couldn't been closed and a js error occured.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4784">#4784</a> : Incorrect cursor position after delete table cells.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5149">#5149</a> : [FF] Cursor dissapears after maximize when editor has focus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5220">#5220</a> : DTD now shows tolerance to &lt;style&gt; appear inside content.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5540">#5540</a> : Mobile browsers (iPhone, Android...) are marked as incompatible as they don't support the editable features.</li>
 		<li>Updated the following language files:<ul>
 			<li>Faroese;</li>
Index: /CKEditor/branches/versions/3.2.x/_source/core/dtd.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/core/dtd.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/core/dtd.js	(revision 5358)
@@ -40,5 +40,5 @@
 		D = X({iframe:1},C),
 		E = {hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},
-		F = {ins:1,del:1,script:1},
+		F = {ins:1,del:1,script:1,style:1},
 		G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F),
 		H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G),
Index: /CKEditor/branches/versions/3.2.x/_source/core/env.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/core/env.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/core/env.js	(revision 5358)
@@ -71,4 +71,6 @@
 
 			quirks : ( document.compatMode == 'BackCompat' ),
+
+			mobile : ( agent.indexOf( 'mobile' ) > -1 ),
 
 			isCustomDomain : function()
@@ -177,4 +179,5 @@
 		 */
 		env.isCompatible =
+			!env.mobile && (
 			( env.ie && version >= 6 ) ||
 			( env.gecko && version >= 10801 ) ||
@@ -182,5 +185,5 @@
 			( env.air && version >= 1 ) ||
 			( env.webkit && version >= 522 ) ||
-			false;
+			false );
 
 		// The CSS class to be appended on the main UI containers, making it
Index: /CKEditor/branches/versions/3.2.x/_source/plugins/div/dialogs/div.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/plugins/div/dialogs/div.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/plugins/div/dialogs/div.js	(revision 5358)
@@ -485,4 +485,5 @@
 			onOk : function()
 			{
+				editor.fire( 'saveSnapshot' );
 				if ( command == 'editdiv' )
 					containers = [ this._element ];
@@ -499,4 +500,5 @@
 					!containers[ i ].getAttribute( 'style' ) && containers[ i ].removeAttribute( 'style' );
 				}
+				editor.fire( 'saveSnapshot' );
 
 				this.hide();
Index: /CKEditor/branches/versions/3.2.x/_source/plugins/maximize/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/plugins/maximize/plugin.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/plugins/maximize/plugin.js	(revision 5358)
@@ -86,4 +86,20 @@
 			editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
 		};
+	}
+
+	function refreshCursor( editor )
+	{
+		if ( editor.focusManager.hasFocus )
+		{
+			var focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml(
+				'<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>' ) );
+
+			focusGrabber.on( 'focus', function()
+				{
+					editor.focus();
+				} );
+			focusGrabber.focus();
+			focusGrabber.remove();
+		}
 	}
 
@@ -191,4 +207,7 @@
 								} );
 
+							// Fixing positioning editor chrome in Firefox break design mode. (#5149)
+							CKEDITOR.env.gecko && refreshCursor( editor );
+
 							// Add cke_maximized class.
 							container.addClass( 'cke_maximized' );
@@ -243,4 +262,7 @@
 							if ( savedSelection )
 							{
+								// Fixing positioning editor chrome in Firefox break design mode. (#5149)
+								CKEDITOR.env.gecko && refreshCursor( editor );
+
 								editor.getSelection().selectRanges(savedSelection);
 								var element = editor.getSelection().getStartElement();
Index: /CKEditor/branches/versions/3.2.x/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5358)
@@ -291,5 +291,5 @@
 
 						html.push(
-							'<td class="cke_dark_background" style="cursor: default">' +
+							'<td class="cke_dark_background" style="cursor: default" role="presentation">' +
 							'<a href="javascript: void(0);" role="option"' +
 							' aria-posinset="' + ( i +1 ) + '"',
Index: /CKEditor/branches/versions/3.2.x/_source/plugins/tabletools/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.2.x/_source/plugins/tabletools/plugin.js	(revision 5357)
+++ /CKEditor/branches/versions/3.2.x/_source/plugins/tabletools/plugin.js	(revision 5358)
@@ -85,4 +85,41 @@
 
 		return retval;
+	}
+	
+	function getFocusedCell( cellsToDelete ) {
+		var i = 0,
+			last = cellsToDelete.length - 1,
+			database = {},
+			cell,focusedCell,
+			tr;
+	
+		while ( cell = cellsToDelete[ i++ ] )
+			CKEDITOR.dom.element.setMarker( database, cell, 'delete_cell', true );
+		
+		// 1.first we check left or right side focusable cell row by row;
+		i = 0;
+		while ( cell = cellsToDelete[ i++ ] )
+		{
+			if ( ( focusedCell = cell.getPrevious() ) && !focusedCell.getCustomData( 'delete_cell' )			  
+			  || ( focusedCell = cell.getNext()     ) && !focusedCell.getCustomData( 'delete_cell' ) )
+			{
+				CKEDITOR.dom.element.clearAllMarkers( database );
+				return focusedCell;
+			}
+		}
+
+		CKEDITOR.dom.element.clearAllMarkers( database );
+
+		// 2. then we check the toppest row (outside the selection area square) focusable cell
+		tr = cellsToDelete[ 0 ].getParent();
+		if ( tr = tr.getPrevious() )
+			return tr.getLast();
+		
+		// 3. last we check the lowerest  row focusable cell
+		tr = cellsToDelete[ last ].getParent();
+		if ( tr = tr.getNext() )
+			return tr.getChild( 0 );
+
+		return null;
 	}
 
@@ -278,11 +315,20 @@
 		{
 			var cellsToDelete = getSelectedCells( selectionOrCell );
+			var table = cellsToDelete[ 0 ] && cellsToDelete[ 0 ].getAscendant( 'table' );
+			var cellToFocus   = getFocusedCell( cellsToDelete );
+
 			for ( var i = cellsToDelete.length - 1 ; i >= 0 ; i-- )
 				deleteCells( cellsToDelete[ i ] );
+			
+			if ( cellToFocus )
+				placeCursorInCell( cellToFocus, true );
+			else if ( table )
+				table.remove();
 		}
 		else if ( selectionOrCell instanceof CKEDITOR.dom.element )
 		{
-			if ( selectionOrCell.getParent().getChildCount() == 1 )
-				selectionOrCell.getParent().remove();
+			var tr = selectionOrCell.getParent();
+			if ( tr.getChildCount() == 1 )
+				tr.remove();
 			else
 				selectionOrCell.remove();
