Index: /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js	(revision 5470)
+++ /CKEditor/branches/versions/3.3.x/_source/plugins/wysiwygarea/plugin.js	(revision 5471)
@@ -374,7 +374,8 @@
 							{
 								// Prefer 'contentEditable' instead of 'designMode'. (#3593)
-								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900
+										|| CKEDITOR.env.opera )
 									domDocument.$.body.contentEditable = true;
-								else if ( CKEDITOR.env.webkit || CKEDITOR.env.opera )
+								else if ( CKEDITOR.env.webkit )
 									domDocument.$.body.parentNode.contentEditable = true;
 								else
@@ -455,5 +456,6 @@
 						if ( CKEDITOR.env.ie
 							&& domDocument.$.compatMode == 'CSS1Compat'
-								|| CKEDITOR.env.gecko )
+								|| CKEDITOR.env.gecko
+								|| CKEDITOR.env.opera )
 						{
 							var htmlElement = domDocument.getDocumentElement();
@@ -481,4 +483,6 @@
 						focusTarget.on( 'focus', function()
 							{
+								// Force the cursor blinking. (#5622
+								CKEDITOR.env.gecko && blinkCursor();
 								editor.focusManager.focus();
 							});
@@ -766,5 +770,13 @@
 								else if ( editor.window )
 								{
-									editor.window.focus();
+									// [Webkit] Force the cursor blinking
+									// when setting focus manually. (#5622)
+									CKEDITOR.env.webkit && blinkCursor();
+
+									if ( CKEDITOR.env.opera )
+										editor.document.getBody().focus();
+									else
+										editor.window.focus();
+
 									editor.selectionChange();
 								}
@@ -804,5 +816,5 @@
 
 			// Create an invisible element to grab focus.
-			if ( CKEDITOR.env.gecko || CKEDITOR.env.ie )
+			if ( CKEDITOR.env.gecko || CKEDITOR.env.ie || CKEDITOR.env.opera )
 			{
 				var focusGrabber;
