浏览代码

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
             decltype(m_queued_events) new_event_queue;
             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.append(move(m_queued_events));
             m_queued_events = move(new_event_queue);