From 28ffaab1ff54094cabea0cacc34e4972eea147a1 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Sun, 11 Apr 2010 17:56:43 +0000 Subject: [PATCH] bug 293704: Arguments of build command are lost in Create/Modify Dialogs when builder settings are used Patch from Axel Mueller --- .../cdt/make/internal/core/MakeTarget.java | 8 +++++++ .../internal/ui/dnd/MakeTargetDndUtil.java | 10 +++++---- .../cdt/make/ui/dialogs/MakeTargetDialog.java | 21 ++++++++++++------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java index 5f3a5c15684..1616ebf75c3 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java @@ -127,6 +127,14 @@ public class MakeTarget extends PlatformObject implements IMakeTarget { } public String getBuildArguments() { + if (isDefaultBuildCmd()) { + IMakeBuilderInfo info; + try { + info = MakeCorePlugin.createBuildInfo(getProject(), manager.getBuilderID(targetBuilderID)); + return info.getBuildArguments(); + } catch (CoreException e) { + } + } String result = getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, ""); //$NON-NLS-1$ try { result = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(result, false); diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java index af2a5a50a51..ba00624f62f 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java @@ -411,10 +411,12 @@ public class MakeTargetDndUtil { // IMakeCommonBuildInfo attributes // Ignore IMakeCommonBuildInfo.BUILD_LOCATION in order not to pick // location of another project (or another folder) - destination.setBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, - source.getBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, DEFAULT_BUILD_COMMAND)); - destination.setBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, - source.getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, "")); //$NON-NLS-1$ + if (!source.isDefaultBuildCmd()){ + destination.setBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, + source.getBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, DEFAULT_BUILD_COMMAND)); + destination.setBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, + source.getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, "")); //$NON-NLS-1$ + } destination.setStopOnError(source.isStopOnError()); destination.setUseDefaultBuildCmd(source.isDefaultBuildCmd()); destination.setEnvironment(source.getEnvironment()); diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java index c5a341e2eb1..3e786c6b511 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java @@ -78,6 +78,7 @@ public class MakeTargetDialog extends Dialog { private IPath buildCommand; private final String defaultBuildCommand; + private final String defaultBuildArguments; private boolean isDefaultCommand; private boolean isStopOnError; private boolean runAllBuilders = true; @@ -169,6 +170,7 @@ public class MakeTargetDialog extends Dialog { buildCommand = buildInfo.getBuildCommand(); defaultBuildCommand = buildCommand.toString(); buildArguments = buildInfo.getBuildArguments(); + defaultBuildArguments = buildArguments; targetString = buildInfo.getIncrementalBuildTarget(); setShellStyle(getShellStyle() | SWT.RESIZE); @@ -279,7 +281,13 @@ public class MakeTargetDialog extends Dialog { @Override public void widgetSelected(SelectionEvent e) { if (defButton.getSelection() == true) { - commandText.setText(defaultBuildCommand); + StringBuffer cmd = new StringBuffer(defaultBuildCommand); + String args = defaultBuildArguments; + if (args != null && !args.equals("")) { //$NON-NLS-1$ + cmd.append(" "); //$NON-NLS-1$ + cmd.append(args); + } + commandText.setText(cmd.toString()); commandText.setEnabled(false); stopOnErrorButton.setEnabled(true); } else { @@ -384,12 +392,10 @@ public class MakeTargetDialog extends Dialog { targetNameText.selectAll(); if (buildCommand != null) { StringBuffer cmd = new StringBuffer(buildCommand.toOSString()); - if (!isDefaultCommand) { - String args = buildArguments; - if (args != null && !args.equals("")) { //$NON-NLS-1$ - cmd.append(" "); //$NON-NLS-1$ - cmd.append(args); - } + String args = buildArguments; + if (args != null && !args.equals("")) { //$NON-NLS-1$ + cmd.append(" "); //$NON-NLS-1$ + cmd.append(args); } commandText.setText(cmd.toString()); } @@ -504,6 +510,7 @@ public class MakeTargetDialog extends Dialog { target.setUseDefaultBuildCmd(useDefaultBuildCmd()); if (useDefaultBuildCmd()) { target.setBuildAttribute(IMakeTarget.BUILD_COMMAND, defaultBuildCommand); + target.setBuildAttribute(IMakeTarget.BUILD_ARGUMENTS, defaultBuildArguments); } else { String bldLine = getBuildLine(); int start = 0;