Index: src/org/eclipse/cdt/ui/newui/AbstractPage.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java,v retrieving revision 1.63 diff -u -r1.63 AbstractPage.java --- src/org/eclipse/cdt/ui/newui/AbstractPage.java 29 May 2008 10:31:51 -0000 1.63 +++ src/org/eclipse/cdt/ui/newui/AbstractPage.java 6 Nov 2008 00:37:18 -0000 @@ -68,6 +68,7 @@ import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation; import org.eclipse.ui.dialogs.PropertyPage; +import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICProject; @@ -79,6 +80,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.core.settings.model.MultiItemsHolder; +import org.eclipse.cdt.core.settings.model.extension.CConfigurationData; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.utils.ui.controls.ControlFactory; @@ -468,7 +470,7 @@ * * @param prj - project description where we'll search (or create) config description * @param cfg - config description belonging to another project description, - * it is a sample for search and base for possile creation + * it is a sample for search and base for possible creation * of resulting configuration description. * * @return the configuration description (found or created) or null in case of error @@ -479,11 +481,27 @@ ICConfigurationDescription c = prj.getConfigurationById(id); // if there's no cfg found, try to create it if (c == null) { - try { - c = prj.createConfiguration(id, cfg.getName(), cfg); - c.setDescription(cfg.getDescription()); - } catch (CoreException e) { - /* do nothing: c is already null */ + // see if this is a configuration that is known to the project description cached by the + // CDTPropertyPage (e.g. config has been added via New Configuration Dialog) + ICProjectDescription prj2 = CDTPropertyManager.getProjectDescription(AbstractPage.this, getProject()); + ICConfigurationDescription c2 = prj2.getConfigurationById(id); + if (c2 != null) { + // cfg found...let's use the same build system id and create it on the + // project description passed in + try { + CConfigurationData data = cfg.getConfigurationData(); + c = prj.createConfiguration(c2.getBuildSystemId(), data); + } catch (CoreException e) { + /* do nothing: c is already null */ + } + } else { + // not found..let's create it anyway + try { + CConfigurationData data = cfg.getConfigurationData(); + c = prj.createConfiguration(CCorePlugin.DEFAULT_PROVIDER_ID, data); + } catch (CoreException e) { + /* do nothing: c is already null */ + } } } // if creation failed, report an error and return null