diff --git a/src/gui/guiInventoryList.cpp b/src/gui/guiInventoryList.cpp index 5a96a4818..82e769102 100644 --- a/src/gui/guiInventoryList.cpp +++ b/src/gui/guiInventoryList.cpp @@ -203,10 +203,13 @@ bool GUIInventoryList::OnEvent(const SEvent &event) if (!hovered || hovered->getID() == -1) hovered = m_fs_menu; - IsVisible = was_visible; - bool ret = hovered->OnEvent(event); + // Set visible again *after* processing the event. Otherwise, hovered could + // be another GUIInventoryList, which will call this one again, resulting in + // an infinite loop. + IsVisible = was_visible; + return ret; }