Index: /CKEditor/branches/features/aria/_source/core/dom/element.js
===================================================================
--- /CKEditor/branches/features/aria/_source/core/dom/element.js	(revision 5084)
+++ /CKEditor/branches/features/aria/_source/core/dom/element.js	(revision 5085)
@@ -992,6 +992,14 @@
 		removeAttributes : function ( attributes )
 		{
-			for ( var i = 0 ; i < attributes.length ; i++ )
-				this.removeAttribute( attributes[ i ] );
+			if ( CKEDITOR.tools.isArray( attributes ) )
+			{
+				for ( var i = 0 ; i < attributes.length ; i++ )
+					this.removeAttribute( attributes[ i ] );
+			}
+			else
+			{
+				for ( var attr in attributes )
+					attributes.hasOwnProperty( attr ) && this.removeAttribute( attr );
+			}
 		},
 
Index: /CKEditor/branches/features/aria/_source/plugins/a11ycompat/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/a11ycompat/plugin.js	(revision 5084)
+++ /CKEditor/branches/features/aria/_source/plugins/a11ycompat/plugin.js	(revision 5085)
@@ -126,11 +126,23 @@
 						if ( ( ariaLabel = target.getAttribute( 'aria-label' ) ) )
 						{
-							var labelId = 'cke_label_' + CKEDITOR.tools.getNextNumber();
-							ariaLabel = CKEDITOR.dom.element.createFromHtml(
-									'<span class="cke_label" id="' + labelId + '">' + ariaLabel+ '</span>',
-									target.getDocument() );
-							ariaLabel.insertBefore( target );
+							var next = target.getNext(),
+									label;
+
+							if ( next && next.hasClass( 'cke_voice_label' ) )
+							{
+								label = next;
+								label.setText( ariaLabel );
+							}
+							else
+							{
+								var labelId = 'cke_label_' + CKEDITOR.tools.getNextNumber( );
+								label = CKEDITOR.dom.element.createFromHtml(
+										'<span class="cke_voice_label" id="' + labelId + '">' + ariaLabel + '</span>',
+										target.getDocument() );
+								label.insertAfter( target );
+							}
+							
+							target.setAttribute( 'aria-labelledby', label.getAttribute( 'id' ) );
 							target.removeAttribute( 'aria-label' );
-							target.setAttribute( 'aria-labelledby', labelId );
 						}
 					});
Index: /CKEditor/branches/features/aria/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/floatpanel/plugin.js	(revision 5084)
+++ /CKEditor/branches/features/aria/_source/plugins/floatpanel/plugin.js	(revision 5085)
@@ -267,7 +267,4 @@
 								} );
 
-							// Give focus to the panel block with a delay,
-							// to help screen-readers to speak out the widget.
-							setTimeout( function() { block.element.focus(); }, 500 );
 						} , this );
 
Index: /CKEditor/branches/features/aria/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/panel/plugin.js	(revision 5084)
+++ /CKEditor/branches/features/aria/_source/plugins/panel/plugin.js	(revision 5085)
@@ -221,10 +221,20 @@
 		var blocks = this._.blocks,
 			block = blocks[ name ],
-			current = this._.currentBlock;
+			current = this._.currentBlock,
+			holder = this.forceIFrame ?
+				this.document.getById( 'cke_' + this.id + '_frame' )
+				: this._.holder;
 
 		if ( current )
+		{
+			// Clean up the current block's effects on holder.
+			holder.removeAttributes( current.attributes );
 			current.hide();
+		}
 
 		this._.currentBlock = block;
+
+		holder.setAttributes( block.attributes );
+		CKEDITOR.fire( 'ariaWidget', holder );
 
 		// Reset the focus index, so it will always go into the first one.
@@ -262,10 +272,8 @@
 				}) );
 
-		blockDefinition = blockDefinition || {};
-
-		var attribs = blockDefinition.attributes;
-		attribs && this.element.setAttributes( attribs );
-
-		CKEDITOR.fire( 'ariaWidget', this.element );
+		// Copy all definition properties to this object.
+		if ( blockDefinition )
+			CKEDITOR.tools.extend( this, blockDefinition );
+
 		this.keys = {};
 
