diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index ca5962d2e..521992dfa 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -59,7 +59,7 @@ QSharedPointer EventLogList::getChatCore() const { return mChatCore; } -void EventLogList::connectItem(const QSharedPointer item) { +void EventLogList::connectItem(const QSharedPointer &item) { auto message = item->getChatMessageCore(); if (message) { connect(message.get(), &ChatMessageCore::deleted, this, [this, item] { @@ -89,6 +89,7 @@ void EventLogList::setChatCore(QSharedPointer core) { auto it = std::find_if(eventsList.begin(), eventsList.end(), [event](const QSharedPointer item) { return item == event; }); if (it == eventsList.end()) { + connectItem(event); add(event); int index; get(event.get(), &index); @@ -154,7 +155,10 @@ void EventLogList::setSelf(QSharedPointer me) { emit listAboutToBeReset(); for (auto &event : getSharedList()) { auto message = event->getChatMessageCore(); - if (message) disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); + if (message) { + disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr); + disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); + } } if (!mChatCore) return; auto events = mChatCore->getEventLogList(); diff --git a/Linphone/core/chat/message/EventLogList.hpp b/Linphone/core/chat/message/EventLogList.hpp index 685de1f6d..8b1b37592 100644 --- a/Linphone/core/chat/message/EventLogList.hpp +++ b/Linphone/core/chat/message/EventLogList.hpp @@ -45,7 +45,7 @@ public: void setChatCore(QSharedPointer core); void setChatGui(ChatGui *chat); - void connectItem(const QSharedPointer item); + void connectItem(const QSharedPointer &item); int findFirstUnreadIndex();