From 6a100bfbab55f4111288b5c0d4b58ab2d8d20caf Mon Sep 17 00:00:00 2001 From: James Graham Date: Sun, 30 Jun 2024 10:15:34 +0100 Subject: [PATCH] When switching rooms first set the room to nullptr to clear any objects in MessageEventModel and UserListModel --- src/models/messageeventmodel.cpp | 8 ++++++-- src/models/userlistmodel.cpp | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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) {