Index: _source/plugins/wysiwygarea/plugin.js
===================================================================
--- _source/plugins/wysiwygarea/plugin.js	(revision 3549)
+++ _source/plugins/wysiwygarea/plugin.js	Mon Jun 08 13:23:58 CST 2009
@@ -52,6 +52,7 @@
 		if ( this.mode == 'wysiwyg' )
 		{
 			this.focus();
+			this.fire( 'saveSnapshot' );
 
 			var element = evt.data,
 				elementName = element.getName(),
@@ -104,6 +105,14 @@
 
 			if ( selIsLocked )
 				this.getSelection().lock();
+
+			// Save snaps after the whole execution completed.
+			// This's a workaround for make DOM modification's happened after
+			// 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
+			// call.
+			CKEDITOR.tools.setTimeout( function(){
+				this.fire( 'saveSnapshot' );
+			}, 0, this );
 		}
 	}
 	
Index: _source/plugins/dialog/plugin.js
===================================================================
--- _source/plugins/dialog/plugin.js	(revision 3560)
+++ _source/plugins/dialog/plugin.js	Mon Jun 08 13:32:52 CST 2009
@@ -2441,7 +2441,10 @@
 		exec : function( editor )
 		{
 			editor.openDialog( this.dialogName );
-		}
+		},
+		// Dialog commands just open a dialog ui, thus require no undo logic,
+		// undo support should dedicate to specific dialog implementation.
+		canUndo: false
 	};
 
 	(function()
