From 24f6fec914c02bef54c1285bcee4b1ddd35fa58d Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Fri, 14 May 2010 10:25:25 +0000 Subject: [PATCH] Bug 304384: Undo the last fix which broke the case where we first created a Run configuration. Instead, check if the global pref is set before forcing a preferred launch delegate. --- .../gdb/internal/ui/launching/CMainTab.java | 31 ------------------- .../org/eclipse/cdt/launch/ui/CMainTab.java | 29 ++++++++++++++++- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CMainTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CMainTab.java index fbfbf270da8..2253f502ac8 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CMainTab.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CMainTab.java @@ -13,8 +13,6 @@ *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.internal.ui.launching; -import java.util.HashSet; - import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.core.model.ICElement; @@ -34,8 +32,6 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.debug.core.ILaunchDelegate; -import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.dialogs.MessageDialog; @@ -516,33 +512,6 @@ public class CMainTab extends CAbstractMainTab { * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) */ public void setDefaults(ILaunchConfigurationWorkingCopy config) { - // Workaround for bug 262840 - try { - HashSet set = new HashSet(); - set.add(ILaunchManager.DEBUG_MODE); - ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set); - if (preferredDelegate == null) { - if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_APP)) { - config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_LOCAL_LAUNCH_DELEGATE); - } else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_ATTACH)) { - config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_ATTACH_LAUNCH_DELEGATE); - } else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_POST_MORTEM)) { - config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_POSTMORTEM_LAUNCH_DELEGATE); - } - } - } catch (CoreException e) {} - - // We must also set the preferred delegate for Run mode, because this configuration - // can be used in Run mode. - try { - HashSet set = new HashSet(); - set.add(ILaunchManager.RUN_MODE); - ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set); - if (preferredDelegate == null) { - config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_RUN_LAUNCH_DELEGATE); - } - } catch (CoreException e) {} - // We set empty attributes for project & program so that when one config is // compared to another, the existence of empty attributes doesn't cause and // incorrect result (the performApply() method can result in empty values diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java index 47c37a1875f..2c92c2eecc1 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java @@ -12,6 +12,8 @@ *******************************************************************************/ package org.eclipse.cdt.launch.ui; +import java.util.HashSet; + import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.core.model.ICElement; @@ -32,6 +34,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; +import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.dialogs.MessageDialog; @@ -530,7 +533,31 @@ public class CMainTab extends CAbstractMainTab { * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) */ public void setDefaults(ILaunchConfigurationWorkingCopy config) { - + // Workaround for bug 262840 + try { + HashSet set = new HashSet(); + set.add(ILaunchManager.DEBUG_MODE); + if ( config.getPreferredDelegate(set) == null && config.getType().getPreferredDelegate(set) == null) { + if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_APP)) { + config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_LOCAL_LAUNCH_DELEGATE); + } else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_ATTACH)) { + config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_ATTACH_LAUNCH_DELEGATE); + } else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_POST_MORTEM)) { + config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_POSTMORTEM_LAUNCH_DELEGATE); + } + } + } catch (CoreException e) {} + + // We must also set the preferred delegate for Run mode, because this configuration + // can be used in Run mode. + try { + HashSet set = new HashSet(); + set.add(ILaunchManager.RUN_MODE); + if ( config.getPreferredDelegate(set) == null && config.getType().getPreferredDelegate(set) == null) { + config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_RUN_LAUNCH_DELEGATE); + } + } catch (CoreException e) {} + // We set empty attributes for project & program so that when one config // is // compared to another, the existence of empty attributes doesn't cause