1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

bug 298552: Two cases of neglect refreshing resource settings in Project Explorer

This commit is contained in:
Andrew Gvozdev 2009-12-27 23:21:34 +00:00
parent 2128ed9b3a
commit 7474a5d8c1

View file

@ -32,6 +32,7 @@ import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ElementChangedEvent; import org.eclipse.cdt.core.model.ElementChangedEvent;
import org.eclipse.cdt.core.model.IArchive; import org.eclipse.cdt.core.model.IArchive;
import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta; import org.eclipse.cdt.core.model.ICElementDelta;
import org.eclipse.cdt.core.model.ICModel; import org.eclipse.cdt.core.model.ICModel;
@ -171,7 +172,7 @@ public class CElementContentProvider extends BaseCElementContentProvider impleme
} }
// We do not care about changes in Working copies // We do not care about changes in Working copies
// well, we do see bugzilla 147694 // well, we do see bug 147694
if (element instanceof ITranslationUnit) { if (element instanceof ITranslationUnit) {
ITranslationUnit unit = (ITranslationUnit) element; ITranslationUnit unit = (ITranslationUnit) element;
if (unit.isWorkingCopy()) { if (unit.isWorkingCopy()) {
@ -196,10 +197,15 @@ public class CElementContentProvider extends BaseCElementContentProvider impleme
updateContainer(element); updateContainer(element);
} }
if (isPathEntryChange(delta)) {
postRefresh(element.getCProject());
return;
}
if (kind == ICElementDelta.CHANGED) { if (kind == ICElementDelta.CHANGED) {
// Binary/Archive changes is done differently since they // Binary/Archive changes is done differently since they
// are at two places, they are in the {Binary,Archive}Container // are at two places, they are in the {Binary,Archive}Container
// and in the Tree hiearchy // and in the Tree hierarchy
if (updateContainer(element)) { if (updateContainer(element)) {
Object parent = getParent(element); Object parent = getParent(element);
postRefresh(parent); postRefresh(parent);
@ -207,18 +213,17 @@ public class CElementContentProvider extends BaseCElementContentProvider impleme
} else if (element instanceof ITranslationUnit) { } else if (element instanceof ITranslationUnit) {
postRefresh(element); postRefresh(element);
return; return;
} else if (element instanceof ICContainer) {
// if element itself has changed, not its children
if ((flags&~(ICElementDelta.F_CHILDREN|ICElementDelta.F_FINE_GRAINED))!=0) {
postRefresh(element);
}
} else if (element instanceof ArchiveContainer || element instanceof BinaryContainer) { } else if (element instanceof ArchiveContainer || element instanceof BinaryContainer) {
postContainerRefresh((IParent) element, element.getCProject()); postContainerRefresh((IParent) element, element.getCProject());
} }
} }
if (isPathEntryChange(delta)) {
// throw the towel and do a full refresh of the affected C project.
postRefresh(element.getCProject());
return;// bailout
}
if (processResourceDeltas(delta.getResourceDeltas(), element)) if (processResourceDeltas(delta.getResourceDeltas(), element))
return; return;