From af1aa94a31c1548270d43dbec5038b7d44a45933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 8 Jul 2010 20:41:57 +0200 Subject: [PATCH] ItEr60S04ValidacionEProbasFuncionaisItEr59S04: Fix bug. Take into account the initially modified. As it already has the new value and if there are no other modifications, necessary parent shrinkages could not be done. --- .../zkoss/ganttz/data/GanttDiagramGraph.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 95f40835b..f1947fdba 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -691,18 +691,20 @@ public class GanttDiagramGraph { for (V each : tasks) { allRecalculations.addAll(getRecalculationsNeededFrom(each)); } - enforceRestrictionsOn(allRecalculations); + enforceRestrictionsOn(allRecalculations, tasks); } void enforceRestrictionsOn(V task) { - enforceRestrictionsOn(getRecalculationsNeededFrom(task)); + enforceRestrictionsOn(getRecalculationsNeededFrom(task), + Collections.singleton(task)); } - void enforceRestrictionsOn(final List recalculations) { + void enforceRestrictionsOn(final List recalculations, + final Collection initiallyModified) { executeWithPreAndPostActionsOnlyIfNewEntrance(new IAction() { @Override public void doAction() { - doRecalculations(recalculations); + doRecalculations(recalculations, initiallyModified); } }); } @@ -777,13 +779,16 @@ public class GanttDiagramGraph { @Override public void doAction() { List recalculationsNeededFrom = getRecalculationsNeededFrom(task); - doRecalculations(recalculationsNeededFrom); + doRecalculations(recalculationsNeededFrom, + Collections.singletonList(task)); } }); } - private void doRecalculations(List recalculationsNeeded) { + private void doRecalculations(List recalculationsNeeded, + Collection initiallyModified) { Set allModified = new HashSet(); + allModified.addAll(initiallyModified); for (Recalculation each : recalculationsNeeded) { boolean modified = each.doRecalculation(); if (modified) { @@ -792,7 +797,8 @@ public class GanttDiagramGraph { } List shrunkContainers = shrunkContainersOfModified(allModified); for (V each : getTaskAffectedByShrinking(shrunkContainers)) { - doRecalculations(getRecalculationsNeededFrom(each)); + doRecalculations(getRecalculationsNeededFrom(each), + Collections.singletonList(each)); } }