1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

239778: [view model][debug view] Double click listener can be added twice for the same VM provider

This commit is contained in:
Anton Leherbauer 2008-07-16 13:02:29 +00:00
parent bb3e8a0067
commit bc15b2355b

View file

@ -34,7 +34,10 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.Viewer;
@ -208,14 +211,33 @@ public class DefaultVMModelProxyStrategy implements IVMModelProxy {
* Handle viewer double click.
*
* @param e the event
*
* @since 1.1
*/
protected void handleDoubleClick(final DoubleClickEvent e) {
getVMProvider().getExecutor().execute( new DsfRunnable() {
final AbstractVMProvider vmProvider= getVMProvider();
if (!vmProvider.isDisposed()) {
ISelection selection = e.getSelection();
if (!selection.isEmpty() && selection instanceof ITreeSelection) {
final TreePath path = ((ITreeSelection)selection).getPaths()[0];
final Object input = e.getViewer().getInput();
vmProvider.getExecutor().execute( new DsfRunnable() {
public void run() {
getVMProvider().handleEvent(e);
Object rootElement = getRootElement();
boolean eventContainsRootElement = rootElement.equals(input);
for (int i = 0; !eventContainsRootElement && i < path.getSegmentCount(); i++) {
eventContainsRootElement = rootElement.equals(path.getSegment(i));
}
if (eventContainsRootElement) {
vmProvider.handleEvent(e);
}
}
});
}
}
}
/**
* Returns the viewer this proxy is installed in.