diff options
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/AbstractViewerState.java | 11 | ||||
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/ViewerState.java | 11 |
2 files changed, 14 insertions, 8 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/AbstractViewerState.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/AbstractViewerState.java index 21512dfb2..0bdef211f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/AbstractViewerState.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/AbstractViewerState.java @@ -26,10 +26,7 @@ public abstract class AbstractViewerState { // paths to expanded elements private List fSavedExpansion = null; - // paths currently expanded - private List fCurrentExpansion = new ArrayList(); - // paths to selected elements - private IPath[] fSelection = null; + private IPath[] fSelection; /** * Constructs a memento for the given viewer. @@ -45,7 +42,6 @@ public abstract class AbstractViewerState { * @param viewer viewer of which to save the state */ public void saveState(TreeViewer viewer) { - fCurrentExpansion.clear(); List expanded = new ArrayList(); fSavedExpansion = null; TreeItem[] items = viewer.getTree().getItems(); @@ -99,6 +95,7 @@ public abstract class AbstractViewerState { * @param viewer viewer to which state is restored */ public void restoreState(TreeViewer viewer) { + List newExpansion = new ArrayList(); boolean expansionComplete = true; if (fSavedExpansion != null && fSavedExpansion.size() > 0) { for (int i = 0; i < fSavedExpansion.size(); i++) { @@ -108,7 +105,7 @@ public abstract class AbstractViewerState { try { obj = decodePath(path, viewer); if (obj != null) { - fCurrentExpansion.add(obj); + newExpansion.add(obj); } else { expansionComplete = false; } @@ -116,7 +113,7 @@ public abstract class AbstractViewerState { } } } - viewer.setExpandedElements(fCurrentExpansion.toArray()); + viewer.setExpandedElements(newExpansion.toArray()); if (expansionComplete) { fSavedExpansion = null; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/ViewerState.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/ViewerState.java index 0888a7436..1575e902b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/ViewerState.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/ViewerState.java @@ -16,6 +16,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IVariable; import org.eclipse.debug.internal.ui.views.AbstractViewerState; +import org.eclipse.debug.internal.ui.views.RemoteTreeViewer; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.TreeItem; @@ -59,7 +60,15 @@ public class ViewerState extends AbstractViewerState { IVariable variable = null; for (int i = 0; i < names.length; i++) { variable = null; - Object[] children = contentProvider.getChildren(parent); + Object[] children = null; + if (viewer instanceof RemoteTreeViewer) { + children = ((RemoteTreeViewer)viewer).getCurrentChildren(parent); + } else { + children = contentProvider.getChildren(parent); + } + if (children == null) { + return null; + } String name = names[i]; for (int j = 0; j < children.length; j++) { if (!(children[j] instanceof IVariable)) { |