diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index ca23adb98..997c2ddd7 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -84,12 +84,16 @@ void MessageEventModel::setRoom(NeoChatRoom *room) return; } - beginResetModel(); if (m_currentRoom) { + // HACK: Reset the model to a null room first to make sure QML dismantles + // last room's objects before the room is actually changed + beginResetModel(); m_currentRoom->disconnect(this); - m_reactionModels.clear(); + m_currentRoom = nullptr; + endResetModel(); } + beginResetModel(); m_currentRoom = room; Q_EMIT roomChanged(); if (room) { diff --git a/src/models/userlistmodel.cpp b/src/models/userlistmodel.cpp index 3e1c6bf93..715cb0d72 100644 --- a/src/models/userlistmodel.cpp +++ b/src/models/userlistmodel.cpp @@ -25,9 +25,15 @@ void UserListModel::setRoom(NeoChatRoom *room) } if (m_currentRoom) { + // HACK: Reset the model to a null room first to make sure QML dismantles + // last room's objects before the room is actually changed + beginResetModel(); m_currentRoom->disconnect(this); m_currentRoom->connection()->disconnect(this); + m_currentRoom = nullptr; + endResetModel(); } + m_currentRoom = room; if (m_currentRoom) {