diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LocalApplicationCDebuggerTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LocalApplicationCDebuggerTab.java index 77d993dec4a..ed5e865d784 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LocalApplicationCDebuggerTab.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LocalApplicationCDebuggerTab.java @@ -34,30 +34,30 @@ public class LocalApplicationCDebuggerTab extends CDebuggerTab { * default settings saved. * Bug 281970 */ - private boolean fSetDefaultCalled; - + private final static String DEFAULTS_SET = "org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET"; //$NON-NLS-1$ + public LocalApplicationCDebuggerTab() { super(SessionType.LOCAL, false); } @Override public void setDefaults(ILaunchConfigurationWorkingCopy config) { - fSetDefaultCalled = true; + config.setAttribute(DEFAULTS_SET, true); super.setDefaults(config); } @Override public void initializeFrom(ILaunchConfiguration config) { - if (fSetDefaultCalled == false) { - try { - ILaunchConfigurationWorkingCopy wc; - wc = config.getWorkingCopy(); - setDefaults(wc); - wc.doSave(); - } catch (CoreException e) { - } - } + try { + if (config.hasAttribute(DEFAULTS_SET) == false) { + ILaunchConfigurationWorkingCopy wc; + wc = config.getWorkingCopy(); + setDefaults(wc); + wc.doSave(); + } + } catch (CoreException e) { + } super.initializeFrom(config); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/RemoteApplicationCDebuggerTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/RemoteApplicationCDebuggerTab.java index 570498c1208..b8ac544c759 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/RemoteApplicationCDebuggerTab.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/RemoteApplicationCDebuggerTab.java @@ -11,6 +11,9 @@ package org.eclipse.cdt.dsf.gdb.internal.ui.launching; import org.eclipse.cdt.dsf.gdb.service.SessionType; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; /** * Debugger tab to use for a remote application launch configuration. @@ -19,7 +22,43 @@ import org.eclipse.cdt.dsf.gdb.service.SessionType; */ public class RemoteApplicationCDebuggerTab extends CDebuggerTab { + /* + * When the launch configuration is created for Run mode, + * this Debugger tab is not created because it is not used + * for Run mode but only for Debug mode. + * When we then open the same configuration in Debug mode, the launch + * configuration already exists and initializeFrom() is called + * instead of setDefaults(). + * We therefore call setDefaults() ourselves and update the configuration. + * If we don't then the user will be required to press Apply to get the + * default settings saved. + * Bug 281970 + */ + private final static String DEFAULTS_SET = "org.eclipse.cdt.dsf.gdb.internal.ui.launching.RemoteApplicationCDebuggerTab.DEFAULTS_SET"; //$NON-NLS-1$ + public RemoteApplicationCDebuggerTab() { super(SessionType.REMOTE, false); } + + @Override + public void setDefaults(ILaunchConfigurationWorkingCopy config) { + config.setAttribute(DEFAULTS_SET, true); + + super.setDefaults(config); + } + + @Override + public void initializeFrom(ILaunchConfiguration config) { + try { + if (config.hasAttribute(DEFAULTS_SET) == false) { + ILaunchConfigurationWorkingCopy wc; + wc = config.getWorkingCopy(); + setDefaults(wc); + wc.doSave(); + } + } catch (CoreException e) { + } + + super.initializeFrom(config); + } } diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/ApplicationCDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/ApplicationCDebuggerTab.java index 474537b8358..a39f1133c70 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/ApplicationCDebuggerTab.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/ApplicationCDebuggerTab.java @@ -32,7 +32,7 @@ public class ApplicationCDebuggerTab extends CDebuggerTab { * default settings saved. * Bug 281970 */ - private boolean fSetDefaultCalled; + private final static String DEFAULTS_SET = "org.eclipse.cdt.launch.ui.ApplicationCDebuggerTab.DEFAULTS_SET"; //$NON-NLS-1$ public ApplicationCDebuggerTab() { super (false); @@ -40,23 +40,23 @@ public class ApplicationCDebuggerTab extends CDebuggerTab { @Override public void setDefaults(ILaunchConfigurationWorkingCopy config) { - fSetDefaultCalled = true; + config.setAttribute(DEFAULTS_SET, true); super.setDefaults(config); } @Override public void initializeFrom(ILaunchConfiguration config) { - if (fSetDefaultCalled == false) { - try { - ILaunchConfigurationWorkingCopy wc; - wc = config.getWorkingCopy(); - setDefaults(wc); - wc.doSave(); - } catch (CoreException e) { - } - } - + try { + if (config.hasAttribute(DEFAULTS_SET) == false) { + ILaunchConfigurationWorkingCopy wc; + wc = config.getWorkingCopy(); + setDefaults(wc); + wc.doSave(); + } + } catch (CoreException e) { + } + super.initializeFrom(config); } }