### Eclipse Workspace Patch 1.0 #P org.eclipse.draw2d Index: src/org/eclipse/draw2d/DeferredUpdateManager.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.draw2d/src/org/eclipse/draw2d/DeferredUpdateManager.java,v retrieving revision 1.22 diff -u -r1.22 DeferredUpdateManager.java --- src/org/eclipse/draw2d/DeferredUpdateManager.java 5 Apr 2006 14:21:13 -0000 1.22 +++ src/org/eclipse/draw2d/DeferredUpdateManager.java 3 Dec 2006 23:58:52 -0000 @@ -57,6 +57,8 @@ private boolean updating; private RunnableChain afterUpdate; +private int concurrentValidationsNumber = 0; + private static class RunnableChain { RunnableChain next; Runnable run; @@ -147,6 +149,7 @@ map.put(root, rect); firePainting(rect, map); } + performValidation(); root.paint(graphics); graphics.dispose(); } @@ -184,15 +187,16 @@ if (invalidFigures.isEmpty()) return; try { + concurrentValidationsNumber++; IFigure fig; fireValidating(); for (int i = 0; i < invalidFigures.size(); i++) { fig = (IFigure) invalidFigures.get(i); - invalidFigures.set(i, null); fig.validate(); } } finally { - invalidFigures.clear(); + if (--concurrentValidationsNumber == 0) + invalidFigures.clear(); } }