diff options
author | Pawel Piech | 2011-12-07 18:32:18 +0000 |
---|---|---|
committer | Pawel Piech | 2011-12-07 18:32:18 +0000 |
commit | 0c06515f0b531fad6e5f05e4f2806468f1bb7eb6 (patch) | |
tree | 3c9dea4c7a4183c56d3b4c063b909914ac9c37f0 /org.eclipse.debug.ui/ui/org/eclipse | |
parent | 2fa6da3812db64bde078514caedb025a0a6d5a6a (diff) | |
download | eclipse.platform.debug-0c06515f0b531fad6e5f05e4f2806468f1bb7eb6.tar.gz eclipse.platform.debug-0c06515f0b531fad6e5f05e4f2806468f1bb7eb6.tar.xz eclipse.platform.debug-0c06515f0b531fad6e5f05e4f2806468f1bb7eb6.zip |
Bug 365825 - [flex] Copying the stack trace in Debug view neverv20111207-1832
completes
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse')
2 files changed, 21 insertions, 4 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java index bc41949c5..34b7ca92d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation and others. + * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,6 +15,7 @@ package org.eclipse.debug.internal.ui.viewers.model; import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; @@ -213,13 +214,26 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel private class ItemsToCopyVirtualItemValidator implements IVirtualItemValidator { Set fItemsToCopy = Collections.EMPTY_SET; + Set fItemsToValidate = Collections.EMPTY_SET; public boolean isItemVisible(VirtualItem item) { - return fItemsToCopy.contains(item); + return fItemsToValidate.contains(item); } public void showItem(VirtualItem item) { } + + void setItemsToCopy(Set itemsToCopy) { + fItemsToCopy = itemsToCopy; + fItemsToValidate = new HashSet(); + for (Iterator itr = itemsToCopy.iterator(); itr.hasNext();) { + VirtualItem itemToCopy = (VirtualItem)itr.next(); + while (itemToCopy != null) { + fItemsToValidate.add(itemToCopy); + itemToCopy = itemToCopy.getParent(); + } + } + } } private VirtualTreeModelViewer initVirtualViewer(TreeModelViewer clientViewer, VirtualViewerListener listener, ItemsToCopyVirtualItemValidator validator) { @@ -260,7 +274,7 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel } } } - validator.fItemsToCopy = vSelection; + validator.setItemsToCopy(vSelection); virtualViewer.getTree().validate(); return virtualViewer; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java index 63fe474ee..47d0f9e96 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java @@ -25,6 +25,7 @@ import org.eclipse.debug.ui.contexts.IDebugContextService; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.progress.UIJob; @@ -57,7 +58,9 @@ public class DefaultWatchExpressionModelProxy extends DefaultExpressionModelProx IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows(); for (int i = 0; i < workbenchWindows.length; i++) { IWorkbenchWindow window = workbenchWindows[i]; - if (viewer.getControl().getShell().equals(window.getShell())) { + // Virtual viewer may have a null control. + Control control = viewer.getControl(); + if (control != null && control.getShell().equals(window.getShell())) { fWindow = window; break; } |