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:
parent
4c6457c39d
commit
29eafddce0
4 changed files with 7 additions and 20 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue