Index: _source/plugins/clipboard/dialogs/paste.js
===================================================================
--- _source/plugins/clipboard/dialogs/paste.js	(wersja 7360)
+++ _source/plugins/clipboard/dialogs/paste.js	(kopia robocza)
@@ -45,7 +45,7 @@
 
 				case 9 :
 				case CKEDITOR.SHIFT + 9 :
-					this.changeFocus( true );
+					this.changeFocus( 1 );
 					processed = 1;
 			}
 
Index: _source/plugins/dialogui/plugin.js
===================================================================
--- _source/plugins/dialogui/plugin.js	(wersja 7360)
+++ _source/plugins/dialogui/plugin.js	(kopia robocza)
@@ -970,8 +970,14 @@
 					{
 						/** @ignore */
 						onClick : function( dialog, func )
-						{
-							this.on( 'click', func );
+						{	
+							this.on( 'click', function()
+								{
+									// Some browsers (Chrome, IE8, IE7 compat mode) don't move
+									// focus to clicked button. Force this.
+									this.getElement().focus();
+									func.apply( this, arguments );
+								});
 						}
 					}, true ),
 
Index: _source/plugins/dialog/plugin.js
===================================================================
--- _source/plugins/dialog/plugin.js	(wersja 7360)
+++ _source/plugins/dialog/plugin.js	(kopia robocza)
@@ -360,10 +360,11 @@
 				focusList[ i ].focusIndex = i;
 		}
 
-		function changeFocus( forward )
+		function changeFocus( offset )
 		{
-			var focusList = me._.focusList,
-				offset = forward ? 1 : -1;
+			var focusList = me._.focusList;
+			offset = offset || 0;
+
 			if ( focusList.length < 1 )
 				return;
 
@@ -376,15 +377,16 @@
 				focusList[ current ].getInputElement().$.blur();
 			}
 			catch( e ){}
-
+		
 			var startIndex = ( current + offset + focusList.length ) % focusList.length,
 				currentIndex = startIndex;
-			while ( !focusList[ currentIndex ].isFocusable() )
+			while ( offset && !focusList[ currentIndex ].isFocusable() )
 			{
 				currentIndex = ( currentIndex + offset + focusList.length ) % focusList.length;
 				if ( currentIndex == startIndex )
 					break;
 			}
+			
 			focusList[ currentIndex ].focus();
 
 			// Select whole field content.
@@ -420,7 +422,7 @@
 				else
 				{
 					// Change the focus of inputs.
-					changeFocus( !shiftPressed );
+					changeFocus( shiftPressed ? -1 : 1 );
 				}
 
 				processed = 1;
@@ -445,7 +447,7 @@
 				this.selectPage( this._.currentTabId );
 				this._.tabBarMode = false;
 				this._.currentFocusIndex = -1;
-				changeFocus( true );
+				changeFocus( 1 );
 				processed = 1;
 			}
 
@@ -513,7 +515,7 @@
 					}
 					// Focus the first field in layout order.
 					else
-						changeFocus( true );
+						changeFocus( 1 );
 
 					/*
 					 * IE BUG: If the initial focus went into a non-text element (e.g. button),
@@ -579,7 +581,7 @@
 						{
 							this._.tabBarMode = false;
 							this._.currentFocusIndex = -1;
-							changeFocus( true );
+							changeFocus( 1 );
 						}
 						evt.data.preventDefault();
 					}
Index: _source/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- _source/plugins/tabletools/dialogs/tableCell.js	(wersja 7360)
+++ _source/plugins/tabletools/dialogs/tableCell.js	(kopia robocza)
@@ -26,7 +26,7 @@
 			{
 				releaseHandlers( this );
 				callback( this, this._.parentDialog );
-				this._.parentDialog.changeFocus( true );
+				this._.parentDialog.changeFocus();
 			};
 			var onCancel = function()
 			{
