diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index e2444732e..17cc1db2c 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -88,11 +88,14 @@ void MessageEventModel::setRoom(NeoChatRoom *room) // 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_memberObjects.clear(); m_readMarkerModels.clear(); m_currentRoom->disconnect(this); m_currentRoom = nullptr; endResetModel(); + + // Don't clear the member objects until the model has been fully reset and all + // refs cleared. + m_memberObjects.clear(); } beginResetModel(); diff --git a/src/roommanager.cpp b/src/roommanager.cpp index af9af2749..8bbd690cd 100644 --- a/src/roommanager.cpp +++ b/src/roommanager.cpp @@ -185,7 +185,7 @@ void RoomManager::maximizeMedia(int index) Q_EMIT showMaximizedMedia(index); } -void RoomManager::maximizeCode(const RoomMember &author, const QDateTime &time, const QString &codeText, const QString &language) +void RoomManager::maximizeCode(NeochatRoomMember *author, const QDateTime &time, const QString &codeText, const QString &language) { if (codeText.isEmpty()) { return; diff --git a/src/roommanager.h b/src/roommanager.h index 08f80b136..7c642c377 100644 --- a/src/roommanager.h +++ b/src/roommanager.h @@ -217,7 +217,7 @@ public: */ Q_INVOKABLE void maximizeMedia(int index); - Q_INVOKABLE void maximizeCode(const RoomMember &author, const QDateTime &time, const QString &codeText, const QString &language); + Q_INVOKABLE void maximizeCode(NeochatRoomMember *author, const QDateTime &time, const QString &codeText, const QString &language); /** * @brief Request that any full screen overlay currently open closes. @@ -288,7 +288,7 @@ Q_SIGNALS: /** * @brief Request a block of code is shown maximized. */ - void showMaximizedCode(const RoomMember &author, const QDateTime &time, const QString &codeText, const QString &language); + void showMaximizedCode(NeochatRoomMember *author, const QDateTime &time, const QString &codeText, const QString &language); /** * @brief Request that any full screen overlay closes. diff --git a/src/timeline/StateComponent.qml b/src/timeline/StateComponent.qml index fe75715fc..2d3f8a4eb 100644 --- a/src/timeline/StateComponent.qml +++ b/src/timeline/StateComponent.qml @@ -54,7 +54,7 @@ RowLayout { anchors.fill: parent enabled: root.author cursorShape: Qt.PointingHandCursor - onClicked: RoomManager.resolveResource("https://matrix.to/#/" + root.author.id) + onClicked: RoomManager.resolveResource("https://matrix.to/#/" + root.author?.id ?? "") } } @@ -62,7 +62,7 @@ RowLayout { id: label Layout.alignment: Qt.AlignVCenter Layout.fillWidth: true - text: `${root.authorDisplayName} ${root.text}` + text: `${root.authorDisplayName} ${root.text}` wrapMode: Text.WordWrap textFormat: Text.RichText onLinkActivated: link => RoomManager.resolveResource(link)