Index: /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js	(revision 2661)
+++ /CKEditor/branches/prototype/_source/plugins/dialogui/plugin.js	(revision 2662)
@@ -59,5 +59,5 @@
 		},
 
-		reset: function()
+		reset : function()
 		{
 			this.setValue( this._['default'] );
@@ -404,5 +404,5 @@
 					return;
 				
-				var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition : elementDefinition } );
+				var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition : elementDefinition, buttons : [] } );
 
 				if ( elementDefinition.validate )
@@ -434,5 +434,6 @@
 					return;
 				
-				var _ = initPrivateObject.call( this, elementDefinition );
+				var _ = initPrivateObject.call( this, elementDefinition ),
+					me = this;
 
 				if ( elementDefinition.validate )
@@ -445,5 +446,11 @@
 					var target = elementDefinition[ 'for' ];		// [ pageId, elementId ]
 					dialog.getContentElement( target[0], target[1] ).submit();
+					this.disable();
 				};
+
+				dialog.on( 'load', function()
+						{
+							dialog.getContentElement( elementDefinition[ 'for' ][0], elementDefinition[ 'for' ][1] )._.buttons.push( me );
+						} );
 
 				CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList );
@@ -687,5 +694,6 @@
 					var frameElement = CKEDITOR.document.getById( this._.frameId ),
 						frameDocument = frameElement.$.contentWindow.document,
-						elementDefinition = this._.definition;
+						elementDefinition = this._.definition,
+						buttons = this._.buttons;
 					frameDocument.open();
 					frameDocument.write( [ '<html><head><title></title></head><body style="margin: 0; overflow: hidden;">',
@@ -701,4 +709,7 @@
 							'</body></html>' ].join( '' ) );
 					frameDocument.close();
+
+					for ( var i = 0 ; i < buttons.length ; i++ )
+						buttons[i].enable();
 				}
 			}, true );
