var insertSpecialChar = function ( specialChar )\r
{\r
var selection = editor.getSelection(),\r
- ranges = selection.getRanges(),\r
+ ranges = selection.getRanges( true ),\r
range, textNode;\r
\r
editor.fire( 'saveSnapshot' );\r
\r
- for ( var i = 0, len = ranges.length ; i < len ; i++ )\r
+ for ( var i = ranges.length - 1; i >= 0 ; i-- )\r
{\r
range = ranges[ i ];\r
range.deleteContents();\r
\r
- textNode = CKEDITOR.dom.element.createFromHtml( specialChar );\r
+ textNode = CKEDITOR.dom.element.createFromHtml( specialChar );\r
range.insertNode( textNode );\r
}\r
\r
- range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END );\r
- range.select();\r
+ if ( range )\r
+ {\r
+ range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END );\r
+ range.select();\r
+ }\r
\r
editor.fire( 'saveSnapshot' );\r
};\r
var columns = this.definition.charColumns,\r
chars = this.definition.chars;\r
\r
- var charsTableLabel = 'specialchar_table_label' + CKEDITOR.tools.getNextNumber();\r
+ var charsTableLabel = CKEDITOR.tools.getNextId() + '_specialchar_table_label';\r
var html = [ '<table role="listbox" aria-labelledby="' + charsTableLabel + '"' +\r
' style="width: 320px; height: 100%; border-collapse: separate;"' +\r
' align="center" cellspacing="2" cellpadding="2" border="0">' ];\r