Index: CKEditor/branches/versions/3.6.x/CHANGES.html
===================================================================
--- CKEditor/branches/versions/3.6.x/CHANGES.html	(revision 6804)
+++ CKEditor/branches/versions/3.6.x/CHANGES.html	(revision 6805)
@@ -62,4 +62,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6521">#6521</a> : Added sample for the TableResize plugin.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6664">#6664</a> : Page-break sometimes is merged into block elements.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/7594">#7594</a> : Toolbar keyboard navigation inefficacy after recreating editor.</li>
 		<li>Updated the following language files:<ul>
 			<li>Hebrew;</li>
Index: CKEditor/branches/versions/3.6.x/_source/plugins/button/plugin.js
===================================================================
--- CKEditor/branches/versions/3.6.x/_source/plugins/button/plugin.js	(revision 6804)
+++ CKEditor/branches/versions/3.6.x/_source/plugins/button/plugin.js	(revision 6805)
@@ -56,43 +56,6 @@
 };
 
-/**
- * Handles a button click.
- * @private
- */
-CKEDITOR.ui.button._ =
-{
-	instances : [],
-
-	keydown : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ];
-
-		if ( instance.onkey )
-		{
-			ev = new CKEDITOR.dom.event( ev );
-			return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
-		}
-	},
-
-	focus : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ],
-			retVal;
-
-		if ( instance.onfocus )
-			retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
-
-		// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
-		if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
-			ev.preventBubble();
-		return retVal;
-	}
-};
-
 ( function()
 {
-	var keydownFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.keydown, CKEDITOR.ui.button._ ),
-		focusFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.focus, CKEDITOR.ui.button._ );
-
 CKEDITOR.ui.button.prototype =
 {
@@ -113,6 +76,5 @@
 			classes = '',
 			command = this.command, // Get the command name.
-			clickFn,
-			index;
+			clickFn;
 
 		this._.editor = editor;
@@ -134,7 +96,28 @@
 		};
 
+		var keydownFn = CKEDITOR.tools.addFunction( function( ev )
+			{
+				if ( instance.onkey )
+				{
+					ev = new CKEDITOR.dom.event( ev );
+					return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
+				}
+			});
+
+		var focusFn = CKEDITOR.tools.addFunction( function( ev )
+			{
+				var retVal;
+
+				if ( instance.onfocus )
+					  retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
+
+				// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
+				if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+					  ev.preventBubble();
+				return retVal;
+			});
+
 		instance.clickFn = clickFn = CKEDITOR.tools.addFunction( instance.execute, instance );
 
-		instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 
 		// Indicate a mode sensitive button.
@@ -225,6 +208,6 @@
 
 		output.push(
-					' onkeydown="return CKEDITOR.tools.callFunction(', keydownFn, ', ', index, ', event);"' +
-					' onfocus="return CKEDITOR.tools.callFunction(', focusFn,', ', index, ', event);"' +
+					' onkeydown="return CKEDITOR.tools.callFunction(', keydownFn, ', event);"' +
+					' onfocus="return CKEDITOR.tools.callFunction(', focusFn,', event);"' +
 				' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
 					'<span class="cke_icon"' );
@@ -303,7 +286,2 @@
 	this.add( name, CKEDITOR.UI_BUTTON, definition );
 };
-
-CKEDITOR.on( 'reset', function()
-	{
-		CKEDITOR.ui.button._.instances = [];
-	});
Index: CKEditor/branches/versions/3.6.x/_source/plugins/toolbar/plugin.js
===================================================================
--- CKEditor/branches/versions/3.6.x/_source/plugins/toolbar/plugin.js	(revision 6804)
+++ CKEditor/branches/versions/3.6.x/_source/plugins/toolbar/plugin.js	(revision 6805)
@@ -394,6 +394,4 @@
 						if ( instance.clickFn ) CKEDITOR.tools.removeFunction( instance.clickFn );
 						if ( instance.keyDownFn ) CKEDITOR.tools.removeFunction( instance.keyDownFn );
-
-						if ( instance.index ) CKEDITOR.ui.button._.instances[ instance.index ] = null;
 					}
 				}
