\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