From f1dcab36147ee6899d5f2c524b321b9dd94f4839 Mon Sep 17 00:00:00 2001 From: pfriese Date: Thu, 3 Jul 2008 15:07:22 +0000 Subject: [PATCH] bug 239456: [Outline] Preserve expansion state of outline. https://bugs.eclipse.org/bugs/show_bug.cgi?id=239456 --- .../src/org/eclipse/xtext/resource/XtextResource.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/resource/XtextResource.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/resource/XtextResource.java index c416498c8..855077982 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/resource/XtextResource.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/resource/XtextResource.java @@ -58,12 +58,19 @@ public class XtextResource extends ResourceImpl { int length = change.length(); int documentGrowth = length - rootNode.length(); int originalLength = length - documentGrowth; + + // unloading is required to ensure that any EObjects hanging around (e.g. in the outline) get a proxied URI + // and thus still can be compared by their URI + unload(); + parseResult = parser.reparse(rootNode, offset, originalLength, change); + getContents().clear(); + getContents().add(parseResult.getRootASTElement()); if (parseResult != null && parseResult.getRootNode() != rootNode) { addNodeContentAdapter(); } } - + private void addNodeContentAdapter() { parseResult.getRootNode().eAdapters().add(new NodeContentAdapter()); }