render : function( editor, output )\r
{\r
var env = CKEDITOR.env,\r
- id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber(),\r
+ id = this._.id = CKEDITOR.tools.getNextId(),\r
classes = '',\r
command = this.command, // Get the command name.\r
clickFn,\r
\r
instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1;\r
\r
+ // Indicate a mode sensitive button.\r
if ( this.modes )\r
{\r
+ var modeStates = {};\r
+ editor.on( 'beforeModeUnload', function()\r
+ {\r
+ modeStates[ editor.mode ] = this._.state;\r
+ }, this );\r
+\r
editor.on( 'mode', function()\r
{\r
- this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );\r
+ var mode = editor.mode;\r
+ // Restore saved button state.\r
+ this.setState( this.modes[ mode ] ?\r
+ modeStates[ mode ] != undefined ? modeStates[ mode ] :\r
+ CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );\r
}, this);\r
}\r
else if ( command )\r
'<span class="cke_button">',\r
'<a id="', id, '"' +\r
' class="', classes, '"',\r
- env.gecko && env.version >= 10900 && !env.hc ? '' : '" href="javascript:void(\''+ ( this.title || '' ).replace( "'"+ '' )+ '\')"',\r
+ env.gecko && env.version >= 10900 && !env.hc ? '' : '" href="javascript:void(\''+ ( this.title || '' ).replace( "'", '' )+ '\')"',\r
' title="', this.title, '"' +\r
' tabindex="-1"' +\r
' hidefocus="true"' +\r