diff options
author | Darin Swanson | 2002-05-30 16:41:22 +0000 |
---|---|---|
committer | Darin Swanson | 2002-05-30 16:41:22 +0000 |
commit | fe4e81982f84a24819e51c22a97b0aea3b439310 (patch) | |
tree | 2aa5df1b24c0c158bce8a04c7f7b3f3a6f4c905c /org.eclipse.debug.ui | |
parent | 7c854647e539da754a3d23dc350c500de408bb75 (diff) | |
download | eclipse.platform.debug-fe4e81982f84a24819e51c22a97b0aea3b439310.tar.gz eclipse.platform.debug-fe4e81982f84a24819e51c22a97b0aea3b439310.tar.xz eclipse.platform.debug-fe4e81982f84a24819e51c22a97b0aea3b439310.zip |
Bug 18334 - Launch view holding onto Objects longer than necessary
Bug 17017 - Not always prompted to find source location
Diffstat (limited to 'org.eclipse.debug.ui')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java index 13e97484c..397dd1f79 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java @@ -284,18 +284,28 @@ public class LaunchView extends AbstractDebugEventHandlerView implements ISelect if (getViewer() != null) { getViewer().removeSelectionChangedListener(this); } + getSite().getPage().removePartListener(this); getSite().getWorkbenchWindow().removePerspectiveListener(this); getSite().getWorkbenchWindow().removePageListener(this); - setEditorId(null); - setEditorInput(null); - setStackFrame(null); + + cleanup(); + DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); super.dispose(); } /** + * Disposes of cached information + */ + protected void cleanup() { + setEditorId(null); + setEditorInput(null); + setStackFrame(null); + } + + /** * Creates and returns the content provider to use for * the viewer of this view. */ @@ -437,7 +447,6 @@ public class LaunchView extends AbstractDebugEventHandlerView implements ISelect /** * Opens a marker for the current selection if it is a stack frame. - * If the current selection is a thread, deselection occurs. * Otherwise, nothing will happen. */ protected void showMarkerForCurrentSelection() { @@ -458,7 +467,11 @@ public class LaunchView extends AbstractDebugEventHandlerView implements ISelect } IStackFrame stackFrame= (IStackFrame) obj; - if (!stackFrame.equals(getStackFrame())) { + if (stackFrame.equals(getStackFrame())) { + if (getEditorInput() == null || getEditorId() == null) { + lookupEditorInput(); + } + } else { setStackFrame(stackFrame); lookupEditorInput(); } @@ -622,6 +635,9 @@ public class LaunchView extends AbstractDebugEventHandlerView implements ISelect * the debugger. */ public void clearSourceSelection() { + + cleanup(); + // Get the active editor IEditorPart editor= getSite().getPage().getActiveEditor(); if (!(editor instanceof ITextEditor)) { @@ -949,9 +965,7 @@ public class LaunchView extends AbstractDebugEventHandlerView implements ISelect IProject project = (IProject)resource; if (!project.isOpen()) { // clear - setStackFrame(null); - setEditorId(null); - setEditorInput(null); + cleanup(); } } return false; |