X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=_source%2Fplugins%2Fspecialchar%2Fdialogs%2Fspecialchar.js;h=5e706c763d92c3148171e1fbd671bbca8b2f156c;hb=c9fdde67e6384bd5a66adc2b3bba5c4ce9db56c7;hp=597f7e13d47fb5990925c690fa78b6f057529862;hpb=059b4c2fef02528bf1af189f7996e80652faddfb;p=ckeditor.git diff --git a/_source/plugins/specialchar/dialogs/specialchar.js b/_source/plugins/specialchar/dialogs/specialchar.js index 597f7e1..5e706c7 100644 --- a/_source/plugins/specialchar/dialogs/specialchar.js +++ b/_source/plugins/specialchar/dialogs/specialchar.js @@ -11,6 +11,33 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) */ var dialog, lang = editor.lang.specialChar; + + var insertSpecialChar = function ( specialChar ) + { + var selection = editor.getSelection(), + ranges = selection.getRanges( true ), + range, textNode; + + editor.fire( 'saveSnapshot' ); + + for ( var i = ranges.length - 1; i >= 0 ; i-- ) + { + range = ranges[ i ]; + range.deleteContents(); + + textNode = CKEDITOR.dom.element.createFromHtml( specialChar ); + range.insertNode( textNode ); + } + + if ( range ) + { + range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END ); + range.select(); + } + + editor.fire( 'saveSnapshot' ); + }; + var onChoice = function( evt ) { var target, value; @@ -23,7 +50,12 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) { target.removeClass( "cke_light_background" ); dialog.hide(); - editor.insertHtml( value ); + + // Firefox has bug on insert chars into a element use its own API. (#5170) + if ( CKEDITOR.env.gecko ) + insertSpecialChar( value ); + else + editor.insertHtml( value ); } }; @@ -81,6 +113,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) var element = ev.getTarget(); var relative, nodeToMove; var keystroke = ev.getKeystroke(); + var rtl = editor.lang.dir == 'rtl'; switch ( keystroke ) { @@ -119,7 +152,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) break; // RIGHT-ARROW - case 39 : + case rtl ? 37 : 39 : // TAB case 9 : // relative is TD @@ -153,7 +186,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) break; // LEFT-ARROW - case 37 : + case rtl ? 39 : 37 : // SHIFT + TAB case CKEDITOR.SHIFT + 9 : // relative is TD @@ -232,7 +265,8 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) var columns = this.definition.charColumns, chars = this.definition.chars; - var html = [ '
' + + ' | ' + '' + character + '' + - '' + + '' + charDesc + ''); } @@ -284,7 +320,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) html.push( '' ); } - html.push( ' |