View | Details | Raw Unified | Return to bug 146894 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/draw2d/DeferredUpdateManager.java (-2 / +6 lines)
Lines 57-62 Link Here
57
private boolean updating;
57
private boolean updating;
58
private RunnableChain afterUpdate;
58
private RunnableChain afterUpdate;
59
59
60
private int concurrentValidationsNumber = 0;
61
60
private static class RunnableChain {
62
private static class RunnableChain {
61
	RunnableChain next;
63
	RunnableChain next;
62
	Runnable run;
64
	Runnable run;
Lines 147-152 Link Here
147
		map.put(root, rect);
149
		map.put(root, rect);
148
		firePainting(rect, map);
150
		firePainting(rect, map);
149
	}
151
	}
152
	performValidation();
150
	root.paint(graphics);
153
	root.paint(graphics);
151
	graphics.dispose();
154
	graphics.dispose();
152
}
155
}
Lines 184-198 Link Here
184
	if (invalidFigures.isEmpty())
187
	if (invalidFigures.isEmpty())
185
		return;
188
		return;
186
	try {
189
	try {
190
		concurrentValidationsNumber++;
187
		IFigure fig;
191
		IFigure fig;
188
		fireValidating();
192
		fireValidating();
189
		for (int i = 0; i < invalidFigures.size(); i++) {
193
		for (int i = 0; i < invalidFigures.size(); i++) {
190
			fig = (IFigure) invalidFigures.get(i);
194
			fig = (IFigure) invalidFigures.get(i);
191
			invalidFigures.set(i, null);
192
			fig.validate();
195
			fig.validate();
193
		}
196
		}
194
	} finally {
197
	} finally {
195
		invalidFigures.clear();
198
		if (--concurrentValidationsNumber == 0)
199
			invalidFigures.clear();
196
	}
200
	}
197
}
201
}
198
202

Return to bug 146894