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.debug.internal.ui.viewers.model.provisional.ModelDelta;
import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener; 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.StructuredViewer;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
@ -208,13 +211,32 @@ public class DefaultVMModelProxyStrategy implements IVMModelProxy {
* Handle viewer double click. * Handle viewer double click.
* *
* @param e the event * @param e the event
*
* @since 1.1
*/ */
protected void handleDoubleClick(final DoubleClickEvent e) { protected void handleDoubleClick(final DoubleClickEvent e) {
getVMProvider().getExecutor().execute( new DsfRunnable() { final AbstractVMProvider vmProvider= getVMProvider();
public void run() { if (!vmProvider.isDisposed()) {
getVMProvider().handleEvent(e); 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() {
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);
}
}
});
}
}
} }
/** /**