1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 10:16:03 +02:00

Workaround for platform bug 206343, project preferences marked dirty on project import.

This commit is contained in:
Markus Schorn 2008-07-02 07:48:54 +00:00
parent 4c6457c39d
commit 29eafddce0
4 changed files with 7 additions and 20 deletions

View file

@ -423,7 +423,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
public void setIndexerId(final ICProject project, String indexerId) { public void setIndexerId(final ICProject project, String indexerId) {
IProject prj= project.getProject(); IProject prj= project.getProject();
IndexerPreferences.set(prj, IndexerPreferences.KEY_INDEXER_ID, indexerId); IndexerPreferences.set(prj, IndexerPreferences.KEY_INDEXER_ID, indexerId);
CCoreInternals.savePreferences(prj); CCoreInternals.savePreferences(prj, IndexerPreferences.getScope(prj) == IndexerPreferences.SCOPE_PROJECT_SHARED);
} }
protected void onPreferenceChange(ICProject cproject, PreferenceChangeEvent event) { protected void onPreferenceChange(ICProject cproject, PreferenceChangeEvent event) {

View file

@ -8,7 +8,6 @@
* Contributors: * Contributors:
* Markus Schorn - initial API and implementation * Markus Schorn - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.indexer; package org.eclipse.cdt.internal.core.pdom.indexer;
import java.util.Map; import java.util.Map;
@ -81,7 +80,7 @@ public class IndexerPreferences {
if (get(project, scope, KEY_INDEXER_ID, null) == null) { if (get(project, scope, KEY_INDEXER_ID, null) == null) {
scope= SCOPE_INSTANCE; scope= SCOPE_INSTANCE;
ppp.putInt(KEY_INDEXER_PREFS_SCOPE, scope); ppp.putInt(KEY_INDEXER_PREFS_SCOPE, scope);
CCoreInternals.savePreferences(project); CCoreInternals.savePreferences(project, false);
} }
} }
} }
@ -232,20 +231,8 @@ public class IndexerPreferences {
if (prjPrefs.get(KEY_INDEXER_ID, null) != null) { if (prjPrefs.get(KEY_INDEXER_ID, null) != null) {
scope= SCOPE_PROJECT_SHARED; scope= SCOPE_PROJECT_SHARED;
} }
else {
Preferences oldStyle= prjPrefs.parent();
String id= oldStyle.get(KEY_INDEXER_ID, null);
if (id != null) {
prjPrefs.put(KEY_INDEXER_ID, id);
String value= oldStyle.get(KEY_INDEX_ALL_FILES, null);
if (value != null) {
prjPrefs.put(KEY_INDEX_ALL_FILES, value);
}
scope= SCOPE_PROJECT_SHARED;
}
}
getLocalPreferences(project).putInt(KEY_INDEXER_PREFS_SCOPE, scope); getLocalPreferences(project).putInt(KEY_INDEXER_PREFS_SCOPE, scope);
CCoreInternals.savePreferences(project); CCoreInternals.savePreferences(project, false);
return scope; return scope;
} }
@ -378,7 +365,7 @@ public class IndexerPreferences {
public static void setIndexImportLocation(IProject project, String location) { public static void setIndexImportLocation(IProject project, String location) {
if (!location.equals(getIndexImportLocation(project))) { if (!location.equals(getIndexImportLocation(project))) {
getProjectPreferences(project).put(KEY_INDEX_IMPORT_LOCATION, location); getProjectPreferences(project).put(KEY_INDEX_IMPORT_LOCATION, location);
CCoreInternals.savePreferences(project); CCoreInternals.savePreferences(project, true);
} }
} }

View file

@ -42,14 +42,14 @@ public class CCoreInternals {
* @param project the project for which to save preferences, may be <code>null</code> * @param project the project for which to save preferences, may be <code>null</code>
* @since 4.0 * @since 4.0
*/ */
public static void savePreferences(final IProject project) { public static void savePreferences(final IProject project, final boolean saveSharedPrefs) {
Job job= new Job(CCorePlugin.getResourceString("CCoreInternals.savePreferencesJob")) { //$NON-NLS-1$ Job job= new Job(CCorePlugin.getResourceString("CCoreInternals.savePreferencesJob")) { //$NON-NLS-1$
@Override @Override
protected IStatus run(IProgressMonitor monitor) { protected IStatus run(IProgressMonitor monitor) {
try { try {
if (project != null) { if (project != null) {
new LocalProjectScope(project).getNode(CCorePlugin.PLUGIN_ID).flush(); new LocalProjectScope(project).getNode(CCorePlugin.PLUGIN_ID).flush();
if (project.isOpen()) { if (saveSharedPrefs && project.isOpen()) {
new ProjectScope(project).getNode(CCorePlugin.PLUGIN_ID).flush(); new ProjectScope(project).getNode(CCorePlugin.PLUGIN_ID).flush();
} }
} }

View file

@ -505,7 +505,7 @@ public class IndexerBlock extends AbstractCOptionPage {
} }
prjDescMgr.setProjectDescription(getProject(), prefs); prjDescMgr.setProjectDescription(getProject(), prefs);
} }
CCoreInternals.savePreferences(project); CCoreInternals.savePreferences(project, scope == IndexerPreferences.SCOPE_PROJECT_SHARED);
} }
@Override @Override