Index: /CKEditor/trunk/_source/lang/en.js
===================================================================
--- /CKEditor/trunk/_source/lang/en.js	(revision 3482)
+++ /CKEditor/trunk/_source/lang/en.js	(revision 3483)
@@ -528,4 +528,6 @@
 	{
 		label : 'Styles',
+		voiceLabel : 'Styles',
+		panelVoiceLabel : 'Select a style',
 		panelTitle1 : 'Block Styles',
 		panelTitle2 : 'Inline Styles',
@@ -536,5 +538,7 @@
 	{
 		label : 'Format',
+		voiceLabel : 'Format',
 		panelTitle : 'Paragraph Format',
+		panelVoiceLabel : 'Select a paragraph format',
 
 		tag_p : 'Normal',
@@ -553,5 +557,7 @@
 	{
 		label : 'Font',
-		panelTitle : 'Font Name'
+		voiceLabel : 'Font',
+		panelTitle : 'Font Name',
+		panelVoiceLabel : 'Select a font'
 	},
 
@@ -559,5 +565,7 @@
 	{
 		label : 'Size',
-		panelTitle : 'Font Size'
+		voiceLabel : 'Font Size',
+		panelTitle : 'Font Size',
+		panelVoiceLabel : 'Select a font size'
 	},
 
Index: /CKEditor/trunk/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3482)
+++ /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3483)
@@ -104,4 +104,5 @@
 				var element = this.element,
 					iframe = this._.iframe,
+					definition = this._.definition,
 					position = offsetParent.getDocumentPosition( element.getDocument() ),
 					rtl = this._.dir == 'rtl';
@@ -200,4 +201,15 @@
 						setTimeout( function()
 							{
+								if ( definition.voiceLabel )
+								{
+									if ( CKEDITOR.env.gecko )
+									{
+										var container = iframe.getParent();
+										container.setAttribute( 'role', 'region' );
+										container.setAttribute( 'title', definition.voiceLabel );
+										iframe.setAttribute( 'role', 'region' );
+										iframe.setAttribute( 'title', ' ' );
+									}
+								}
 								iframe.$.contentWindow.focus();
 							}, 0);
Index: /CKEditor/trunk/_source/plugins/font/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/font/plugin.js	(revision 3482)
+++ /CKEditor/trunk/_source/plugins/font/plugin.js	(revision 3483)
@@ -31,4 +31,5 @@
 				label : lang.label,
 				title : lang.panelTitle,
+				voiceLabel : lang.voiceLabel,
 				className : 'cke_' + ( styleType == 'size' ? 'fontSize' : 'font' ),
 				multiSelect : false,
@@ -36,5 +37,6 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+					voiceLabel : lang.panelVoiceLabel
 				},
 
Index: /CKEditor/trunk/_source/plugins/format/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/format/plugin.js	(revision 3482)
+++ /CKEditor/trunk/_source/plugins/format/plugin.js	(revision 3483)
@@ -28,4 +28,5 @@
 				label : lang.label,
 				title : lang.panelTitle,
+				voiceLabel : lang.voiceLabel,
 				className : 'cke_format',
 				multiSelect : false,
@@ -33,5 +34,6 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+					voiceLabel : lang.panelVoiceLabel
 				},
 
Index: /CKEditor/trunk/_source/plugins/richcombo/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 3482)
+++ /CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 3483)
@@ -187,5 +187,7 @@
 					' onkeydown="CKEDITOR.tools.callFunction( ', keyDownFn, ', event, this );"' +
 					' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
-						'<span id="', id, '_text" class=cke_text>&nbsp;</span>' +
+						'<span>' +
+							'<span class="cke_accessibility">' + ( this.voiceLabel ? this.voiceLabel + ' ' : '' ) + '</span>' +
+							'<span id="' + id + '_text" class="cke_text">&nbsp;</span></span>' +
 						'<span class=cke_openbutton></span>' +
 					'</a>' +
Index: /CKEditor/trunk/_source/plugins/stylescombo/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 3482)
+++ /CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 3483)
@@ -21,4 +21,5 @@
 					label : lang.label,
 					title : lang.panelTitle,
+					voiceLabel : lang.voiceLabel,
 					className : 'cke_styles',
 					multiSelect : true,
@@ -26,5 +27,6 @@
 					panel :
 					{
-						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
+						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+						voiceLabel : lang.panelVoiceLabel
 					},
 
Index: /CKEditor/trunk/_source/skins/v2/toolbar.css
===================================================================
--- /CKEditor/trunk/_source/skins/v2/toolbar.css	(revision 3482)
+++ /CKEditor/trunk/_source/skins/v2/toolbar.css	(revision 3483)
@@ -157,4 +157,10 @@
 	padding-left: 3px;
 	vertical-align: 3px;
+}
+
+.cke_skin_v2 .cke_accessibility
+{
+	position: absolute;
+	top: -1000000px;
 }
 
