Index: /CKEditor/branches/prototype/_source/dialogs/testOnly/dialog.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/testOnly/dialog.js	(revision 2733)
+++ /CKEditor/branches/prototype/_source/dialogs/testOnly/dialog.js	(revision 2734)
@@ -79,4 +79,5 @@
 										type : 'text',
 										label : 'Test Text 6',
+										onChange : function(){ console.log( this.getValue() ); },
 										id : 'testText6',
 										'default' : 'Blah blah'
@@ -113,4 +114,5 @@
 										type : 'checkbox',
 										label : 'Enable those',
+										onChange : function(){ console.log( this.getValue() ); },
 										checked : false
 									},
@@ -122,4 +124,5 @@
 										'default' : 'stdio',
 										accessKey : 'Y',
+										onChange : function(){ console.log( this.getValue() ); },
 										items : [
 											[ 'Standard I/O', 'stdio', 'You need this to write Hello World.' ],
Index: /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js	(revision 2733)
+++ /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js	(revision 2734)
@@ -1572,4 +1572,6 @@
 		 * 	to add to the UI element. A semicolon (;) is required after the last
 		 * 	style declaration.</li>
+		 * 	<li><strong>accessKey</strong> (Optional) The alphanumeric access key
+		 * 	for this element. Access keys are automatically prefixed by CTRL.</li>
 		 * 	<li><strong>on*</strong> (Optional) Any UI element definition field that
 		 * 	starts with <em>on</em> followed immediately by a capital letter and
Index: /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js	(revision 2733)
+++ /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js	(revision 2734)
@@ -399,4 +399,6 @@
 						if ( elementDefinition['default'] == item[1] )
 							inputAttributes.checked = 'checked';
+						cleanInnerDefinition( inputDefinition );
+						cleanInnerDefinition( labelDefinition );
 						children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
 						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtmlList, 'label', null, null,
@@ -502,6 +504,6 @@
 					align = elementDefinition.align || ( dialog.getParentEditor().lang.dir == 'ltr' ? 'left' : 'right' );
 
-				// IE6 BUG: Need to set margin as well as align.
-				if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
+				// IE6 & 7 BUG: Need to set margin as well as align.
+				if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
 				{
 					styles.margin = [
@@ -942,5 +944,27 @@
 				 * @example
 				 */
-				eventProcessors : commonEventProcessors
+				eventProcessors :
+				{
+					onChange : function( dialog, func )
+					{
+						if ( !CKEDITOR.env.ie )
+							return commonEventProcessors.onChange.apply( this, arguments );
+						else
+						{
+							dialog.on( 'load', function()
+								{
+									var element = this._.checkbox.getElement();
+									element.on( 'propertychange', function( evt )
+										{
+											evt = evt.data.$;
+											if ( evt.propertyName != 'checked' )
+												return;
+											this.fire( 'change', { value : element.$.checked } );
+										}, this );
+								}, this );
+							this.on( 'change', func );
+						}
+					}
+				}
 			}, commonPrototype, true );
 
@@ -1004,5 +1028,31 @@
 				 * @example
 				 */
-				eventProcessors : commonEventProcessors
+				eventProcessors :
+				{
+					onChange : function( dialog, func )
+					{
+						if ( !CKEDITOR.env.ie )
+							return commonEventProcessors.onChange.apply( this, arguments );
+						else
+						{
+							dialog.on( 'load', function()
+								{
+									var children = this._.children, me = this;
+									for ( var i = 0 ; i < children.length ; i++ )
+									{
+										var element = children[i].getElement();
+										element.on( 'propertychange', function( evt )
+											{
+												evt = evt.data.$;
+												if ( evt.propertyName != 'checked' || !this.$.checked )
+													return;
+												me.fire( 'change', { value : this.getAttribute( 'value' ) } );
+											} );
+									}
+								}, this );
+							this.on( 'change', func );
+						}
+					}
+				}
 			}, commonPrototype, true );
 
