@@ -110,11 +110,12 @@ } void pumpEventsForFilter(int id, Conditional cond, EventFilter filter) { addEventFilter(filter); doDispatch = true; - while (doDispatch && !isInterrupted() && cond.evaluate()) { + while ((doDispatch || getEventQueue().peekEvent() != null) + && !isInterrupted() && cond.evaluate()) { pumpOneEventForFilters(id); } removeEventFilter(filter); }