Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3043)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3044)
@@ -470,4 +470,7 @@
 			this.fireOnce( 'load', {} );
 			this.fire( 'show', {} );
+
+			// Save the initial values of the dialog.
+			this.foreach( function( contentObj ) { contentObj.setInitValue && contentObj.setInitValue(); } );
 		},
 
@@ -496,28 +499,4 @@
 		{
 			var fn = function( widget ){ if ( widget.reset ) widget.reset(); };
-			return function(){ this.foreach( fn ); return this; };
-		})(),
-
-		/**
-		 * Pushes the current values of all inputs in the dialog into the default stack.
-		 * @example
-		 * dialogObj.pushDefault();
-		 * @returns {CKEDITOR.dialog} The current dialog object.
-		 */
-		pushDefault : (function()
-		{
-			var fn = function( widget ){ if ( widget.pushDefault ) widget.pushDefault(); };
-			return function(){ this.foreach( fn ); return this; };
-		})(),
-
-		/**
-		 * Pops the current default values of all inputs in the dialog.
-		 * @example
-		 * dialogObj.popDefault();
-		 * @returns {CKEDITOR.dialog} The current dialog object.
-		 */
-		popDefault : (function()
-		{
-			var fn = function( widget ){ if ( widget.popDefault ) widget.popDefault(); };
 			return function(){ this.foreach( fn ); return this; };
 		})(),
@@ -586,4 +565,7 @@
 
 			this.fire( 'hide', {} );
+
+			// Reset the initial values of the dialog.
+			this.foreach( function( contentObj ) { contentObj.resetInitValue && contentObj.resetInitValue(); } );
 		},
 
Index: /CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3043)
+++ /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3044)
@@ -13,5 +13,5 @@
 	{
 		this._ || ( this._ = {} );
-		this._['default'] = [ elementDefinition['default'] || '' ];
+		this._['default'] = this._.initValue = elementDefinition['default'] || '';
 		var args = [ this._ ];
 		for ( var i = 1 ; i < arguments.length ; i++ )
@@ -39,26 +39,25 @@
 		isChanged : function()
 		{
-			return this.getValue() != this.getDefault();
+			return this.getValue() != this.getInitValue();
 		},
 
 		reset : function()
 		{
-			this.setValue( this.getDefault() );
+			this.setValue( this.getInitValue() );
 		},
 
-		getDefault : function()
+		setInitValue : function()
 		{
-			var defs = this._['default'];
-			return defs[ defs.length - 1 ];
+			this._.initValue = this.getValue();
 		},
 
-		pushDefault : function()
+		resetInitValue : function()
 		{
-			this._['default'].push( this.getValue() );
+			this._.initValue = this._['default'];
 		},
 
-		popDefault : function()
+		getInitValue : function()
 		{
-			this._['default'].pop();
+			return this._.initValue;
 		}
 	},
@@ -277,5 +276,5 @@
 					for ( var i in attributes )
 						html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ' );
-					html.push( '>', CKEDITOR.tools.htmlEncode( me.getDefault() ), '</textarea></div>' );
+					html.push( '>', CKEDITOR.tools.htmlEncode( me._['default'] ), '</textarea></div>' );
 					return html.join( '' );
 				};
@@ -357,6 +356,6 @@
 
 				initPrivateObject.call( this, elementDefinition );
-				if ( !this.getDefault() )
-					this._['default'] = [ elementDefinition.items[0][1] ] ;
+				if ( !this._['default'] )
+					this._['default'] = this._.initValue = elementDefinition.items[0][1];
 				if ( elementDefinition.validate )
 					this.validate = elementDefinition.valdiate;
@@ -393,5 +392,5 @@
 								value : value
 							};
-						if ( me.getDefault() == value )
+						if ( me._['default'] == value )
 							inputAttributes.checked = 'checked';
 						cleanInnerDefinition( inputDefinition );
