*** empty log message ***
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
index 2115866..9b654cc 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
@@ -193,6 +193,10 @@
 			firstPageId = storedFirstPageId;
 		else if (EditorPreferencePage.getUseSourcePage())
 			firstPageId = getSourcePageId();
+		// Regardless what is the stored value,
+		// use source page if model is not valid
+		if (isModelCorrect(getModel())==false)
+			firstPageId = getSourcePageId();
 		if (firstPageId != null) {
 			IPDEEditorPage firstPage = getPage(firstPageId);
 			if (firstPage == null)
@@ -648,6 +652,17 @@
 
 	protected abstract boolean updateModel();
 
+	public boolean validateModelSemantics() {
+		IModel model = (IModel)getModel();
+		return model!=null && model.isValid();
+	}
+	
+	public boolean containsError() {
+		boolean loaded = ((IModel)getModel()).isLoaded(); //updated with syncExec() by the reconciler
+		if (!loaded) return true;
+		return !validateModelSemantics();
+	}
+
 	void updateSynchronizedViews(IPDEEditorPage page) {
 		updateContentOutline(page);
 		updatePropertySheet(page);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
index 0e73c50..261b028 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
@@ -18,10 +18,8 @@
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.text.*;
 import org.eclipse.jface.viewers.*;
-import org.eclipse.pde.core.*;
 import org.eclipse.pde.core.ISourceObject;
-import org.eclipse.pde.internal.ui.IHelpContextIds;
-import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.*;
 import org.eclipse.swt.dnd.Clipboard;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.ui.*;
@@ -65,7 +63,7 @@
 			boolean cleanModel = getEditor().updateModel();
 			if (cleanModel)
 				setModelNeedsUpdating(false);
-			boolean valid = validateModelSemantics();
+			boolean valid = getEditor().validateModelSemantics();
 			if (cleanModel == false || valid==false) {
 				warnErrorsInSource();
 				errorMode = true;
@@ -77,11 +75,6 @@
 		return true;
 	}
 	
-	protected boolean validateModelSemantics() {
-		IModel model = (IModel)getEditor().getModel();
-		return model!=null && model.isValid();
-	}
-
 	public void becomesVisible(IFormPage oldPage) {
 		setModelNeedsUpdating(false);
 		if (oldPage instanceof PDEFormPage) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
index eabea50..cf6ee97 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
@@ -438,6 +438,7 @@
 				model.reload(stream, false);
 				if (model instanceof IEditable && model.isEditable())
 					((IEditable)model).setDirty(false);
+				cleanModel = containsError();
 			} catch (CoreException e) {
 				cleanModel = false;
 			}
diff --git a/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java b/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
index 032b9a6..f4d646d 100644
--- a/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
+++ b/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
@@ -77,12 +77,6 @@
 		//getSite().setSelectionProvider(getSelectionProvider());
 	}
 	
-	public boolean containsError() {
-		boolean loaded = ((AbstractPluginModelBase)getEditor().getModel()).isLoaded(); //updated with syncExec() by the reconciler
-		if (!loaded) return false;
-		return !validateModelSemantics();
-	}
-	
 	protected void setModelNeedsUpdating(boolean modelNeedsUpdating) {
 		synchronized (modelNeedsUpdatingLock) {
 			super.setModelNeedsUpdating(modelNeedsUpdating);
@@ -187,5 +181,9 @@
 		setModelNeedsUpdating(true);
 		super.createPartControl(parent);
 	}
+	
+	public boolean containsError() {
+		return getEditor().containsError();
+	}
 
 }