[no bug] With the source view shown, select any category folder from the outline view.  The selection is lost.
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/outline/ADTContentOutlinePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/outline/ADTContentOutlinePage.java
index 950bb64..f0b86ef 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/outline/ADTContentOutlinePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/outline/ADTContentOutlinePage.java
@@ -26,7 +26,9 @@
 import org.eclipse.ui.part.MultiPageSelectionProvider;
 import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
 import org.eclipse.wst.xsd.ui.internal.adt.design.DesignViewContextMenuProvider;
+import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IModelProxy;
 import org.eclipse.wst.xsd.ui.internal.adt.editor.ADTMultiPageEditor;
+import org.eclipse.wst.xsd.ui.internal.adt.facade.IModel;
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.XSDSchema;
 
@@ -172,7 +174,23 @@
     {
       if (event.getSelectionProvider() != ADTContentOutlinePage.this)  //getTreeViewer())
       {
-        getTreeViewer().setSelection(event.getSelection(), true);
+        StructuredSelection selection = (StructuredSelection)event.getSelection();
+        StructuredSelection currentSelection = (StructuredSelection) getTreeViewer().getSelection();
+        
+        // TODO: Hack to prevent losing a selection when the schema is selected in the
+        // source.  Fix is to prevent the source from firing off selection changes when
+        // the selection source is not the source view.
+        if (selection.getFirstElement() instanceof IModel)
+        {
+          if (!(currentSelection.getFirstElement() instanceof IModelProxy))
+          {
+            getTreeViewer().setSelection(event.getSelection(), true);            
+          }
+        }
+        else
+        {
+          getTreeViewer().setSelection(event.getSelection(), true);
+        }
       }
     }
   }