/**\r
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.\r
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r
* For licensing, see LICENSE.md or http://ckeditor.com/license\r
*/\r
\r
if ( editor.toolbox ) {\r
editor.toolbox.focusCommandExecuted = true;\r
\r
- // Make the first button focus accessible for IE. (#3417)\r
+ // Make the first button focus accessible for IE. (http://dev.ckeditor.com/ticket/3417)\r
// Adobe AIR instead need while of delay.\r
if ( CKEDITOR.env.ie || CKEDITOR.env.air ) {\r
setTimeout( function() {\r
CKEDITOR.plugins.add( 'toolbar', {\r
requires: 'button',\r
// jscs:disable maximumLineLength\r
- lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%\r
+ lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%\r
// jscs:enable maximumLineLength\r
\r
init: function( editor ) {\r
return false;\r
case 40: // DOWN-ARROW\r
if ( item.button && item.button.hasArrow ) {\r
- // Note: code is duplicated in plugins\richcombo\plugin.js in keyDownFn().\r
- editor.once( 'panelShow', function( evt ) {\r
- evt.data._.panel._.currentBlock.onKeyDown( 40 );\r
- } );\r
item.execute();\r
} else {\r
// Send left arrow key.\r
output.push( '<span class="cke_toolbox_main"' + ( expanded ? '>' : ' style="display:none">' ) );\r
\r
var toolbars = editor.toolbox.toolbars,\r
- toolbar = getToolbarConfig( editor );\r
+ toolbar = getToolbarConfig( editor ),\r
+ toolbarLength = toolbar.length;\r
\r
- for ( var r = 0; r < toolbar.length; r++ ) {\r
+ for ( var r = 0; r < toolbarLength; r++ ) {\r
var toolbarId,\r
toolbarObj = 0,\r
toolbarName,\r
row = toolbar[ r ],\r
+ lastToolbarInRow = row !== '/' && ( toolbar[ r + 1 ] === '/' || r == toolbarLength - 1 ),\r
items;\r
\r
// It's better to check if the row object is really\r
// available because it's a common mistake to leave\r
// an extra comma in the toolbar definition\r
// settings, which leads on the editor not loading\r
- // at all in IE. (#3983)\r
+ // at all in IE. (http://dev.ckeditor.com/ticket/3983)\r
if ( !row )\r
continue;\r
\r
toolbarName = row.name && ( editor.lang.toolbar.toolbarGroups[ row.name ] || row.name );\r
\r
// Output the toolbar opener.\r
- output.push( '<span id="', toolbarId, '" class="cke_toolbar"', ( toolbarName ? ' aria-labelledby="' + toolbarId + '_label"' : '' ), ' role="toolbar">' );\r
+ output.push( '<span id="', toolbarId, '" class="cke_toolbar' + ( lastToolbarInRow ? ' cke_toolbar_last"' : '"' ),\r
+ ( toolbarName ? ' aria-labelledby="' + toolbarId + '_label"' : '' ), ' role="toolbar">' );\r
\r
// If a toolbar name is available, send the voice label.\r
toolbarName && output.push( '<span id="', toolbarId, '_label" class="cke_voice_label">', toolbarName, '</span>' );\r
itemObj.toolbar = toolbarObj;\r
itemObj.onkey = itemKeystroke;\r
\r
- // Fix for #3052:\r
+ // Fix for http://dev.ckeditor.com/ticket/3052:\r
// Prevent JAWS from focusing the toolbar after document load.\r
itemObj.onfocus = function() {\r
if ( !editor.toolbox.focusCommandExecuted )\r