The issue was that the event was for the wrapper window and that the tray_client's move constructors didn't correctly copy over all data and so when the m_clients vector grew, it corrupted the state of all existing clients.