소스 검색

LibCore: Don't replay last handled event when leaving nested event loop

The event that triggered the exit from an inner event loop would always
get re-delivered in the outer event loop due to a silly off-by-one
mistake when transferring pending events between loops.
Andreas Kling 5 년 전
부모
커밋
eeec1c1293
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      Libraries/LibCore/EventLoop.cpp

+ 1 - 1
Libraries/LibCore/EventLoop.cpp

@@ -365,7 +365,7 @@ void EventLoop::pump(WaitMode mode)
 #endif
 #endif
             decltype(m_queued_events) new_event_queue;
             decltype(m_queued_events) new_event_queue;
             new_event_queue.ensure_capacity(m_queued_events.size() + events.size());
             new_event_queue.ensure_capacity(m_queued_events.size() + events.size());
-            for (; i < events.size(); ++i)
+            for (++i; i < events.size(); ++i)
                 new_event_queue.unchecked_append(move(events[i]));
                 new_event_queue.unchecked_append(move(events[i]));
             new_event_queue.append(move(m_queued_events));
             new_event_queue.append(move(m_queued_events));
             m_queued_events = move(new_event_queue);
             m_queued_events = move(new_event_queue);