Do heavy things less often on room change event
This commit is contained in:
@@ -215,10 +215,13 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
|
|||||||
}
|
}
|
||||||
refreshEventRoles(eventId, {Qt::DisplayRole});
|
refreshEventRoles(eventId, {Qt::DisplayRole});
|
||||||
});
|
});
|
||||||
connect(m_currentRoom, &Room::changed, this, [this]() {
|
connect(m_currentRoom, &Room::changed, this, [this](Room::Changes changes) {
|
||||||
for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) {
|
if (changes & (Room::Change::PartiallyReadStats | Room::Change::UnreadStats | Room::Change::Other | Room::Change::Members)) {
|
||||||
auto event = it->event();
|
// this is slow
|
||||||
refreshEventRoles(event->id(), {ReadMarkersRole, ReadMarkersStringRole, ExcessReadMarkersRole});
|
for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) {
|
||||||
|
auto event = it->event();
|
||||||
|
refreshEventRoles(event->id(), {ReadMarkersRole, ReadMarkersStringRole, ExcessReadMarkersRole});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] {
|
connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] {
|
||||||
|
|||||||
@@ -47,7 +47,10 @@ void UserListModel::setRoom(NeoChatRoom *room)
|
|||||||
connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) {
|
connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) {
|
||||||
refreshMember(member, {AvatarRole});
|
refreshMember(member, {AvatarRole});
|
||||||
});
|
});
|
||||||
connect(m_currentRoom, &Room::changed, this, &UserListModel::refreshAllMembers);
|
connect(m_currentRoom, &Room::memberListChanged, this, [this]() {
|
||||||
|
// this is slow
|
||||||
|
UserListModel::refreshAllMembers();
|
||||||
|
});
|
||||||
connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
|
connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
|
||||||
setRoom(nullptr);
|
setRoom(nullptr);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user