diff options
author | Leo Treggiari | 2005-07-04 22:51:47 +0000 |
---|---|---|
committer | Leo Treggiari | 2005-07-04 22:51:47 +0000 |
commit | f4ecd611376e7cc5a2d40f0bfee3adf2563c5d10 (patch) | |
tree | 896a22d218bd5cbbf4e26b5ebcd9bbac7de77d63 | |
parent | 7197ddb46d259465ec2566d7b6a67dbe211c34d6 (diff) | |
download | org.eclipse.cdt-f4ecd611376e7cc5a2d40f0bfee3adf2563c5d10.tar.gz org.eclipse.cdt-f4ecd611376e7cc5a2d40f0bfee3adf2563c5d10.tar.xz org.eclipse.cdt-f4ecd611376e7cc5a2d40f0bfee3adf2563c5d10.zip |
Fix *Dirty to account for new children
2 files changed, 40 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java index 4f983a82687..b61a154b890 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java @@ -1105,6 +1105,19 @@ public class InputType extends BuildObject implements IInputType { public boolean isDirty() { // This shouldn't be called for an extension InputType if (isExtensionInputType) return false; + + // Check my children + Iterator typeIter = getInputOrderList().iterator(); + while (typeIter.hasNext()) { + InputOrder current = (InputOrder)typeIter.next(); + if (current.isDirty()) return true; + } + typeIter = getAdditionalInputList().iterator(); + while (typeIter.hasNext()) { + AdditionalInput current = (AdditionalInput)typeIter.next(); + if (current.isDirty()) return true; + } + return isDirty; } @@ -1113,6 +1126,19 @@ public class InputType extends BuildObject implements IInputType { */ public void setDirty(boolean isDirty) { this.isDirty = isDirty; + // Propagate "false" to the children + if (!isDirty) { + Iterator typeIter = getInputOrderList().iterator(); + while (typeIter.hasNext()) { + InputOrder current = (InputOrder)typeIter.next(); + current.setDirty(false); + } + typeIter = getAdditionalInputList().iterator(); + while (typeIter.hasNext()) { + AdditionalInput current = (AdditionalInput)typeIter.next(); + current.setDirty(false); + } + } } /* (non-Javadoc) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java index 7362f8e011a..d8f9df51020 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java @@ -2265,6 +2265,20 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory { // If I need saving, just say yes if (isDirty) return true; + // Check my children + List typeElements = getInputTypeList(); + Iterator iter = typeElements.listIterator(); + while (iter.hasNext()) { + InputType type = (InputType) iter.next(); + if (type.isDirty()) return true; + } + typeElements = getOutputTypeList(); + iter = typeElements.listIterator(); + while (iter.hasNext()) { + OutputType type = (OutputType) iter.next(); + if (type.isDirty()) return true; + } + // Otherwise see if any options need saving if (super.isDirty()) { return true; |