[324409] [editor][usability] XML Editor isn't marked dirty when changing a single field in design mode
diff --git a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
index 59f8da3..650999d 100644
--- a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
+++ b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
@@ -1032,6 +1032,9 @@
 	public boolean isSaveOnCloseNeeded() {
 		// overriding super class since it does a lowly isDirty!
 		if (fTextEditor != null) {
+			if (fDesignViewer instanceof XMLTableTreeViewer) {
+				((XMLTableTreeViewer) fDesignViewer).forceCellEditorDeactivation();
+			}
 			return fTextEditor.isSaveOnCloseNeeded();
 		}
 		return isDirty();
diff --git a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLTableTreeViewer.java b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLTableTreeViewer.java
index 4a994d7..368bff0 100644
--- a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLTableTreeViewer.java
+++ b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLTableTreeViewer.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others. All rights reserved. This
+ * Copyright (c) 2004, 2011 IBM Corporation and others. All rights reserved. This
  * program and the accompanying materials are made available under the terms
  * of the Eclipse Public License v1.0 which accompanies this distribution, and
  * is available at http://www.eclipse.org/legal/epl-v10.html
@@ -217,6 +217,12 @@
 		this.getTree().addPaintListener(fContentPaintListener);
 	}
 
+	void forceCellEditorDeactivation() {
+		if (isCellEditorActive()) {
+			applyEditorValue();
+		}
+	}
+
 	/**
 	 * This creates a context menu for the viewer and adds a listener as well
 	 * registering the menu for extension.