Automatically switch to threading when replying
2 files changed, 14 insertions, 10 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 01856a4d..3680c5f9 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -2684,6 +2684,19 @@ TimelineModel::resetThread()
emit threadChanged(thread_);
}
}
+void
+TimelineModel::setReply(const QString &newReply)
+{
+ if (reply_ != newReply) {
+ reply_ = newReply;
+
+ if (auto ev = events.get(reply_.toStdString(), "", false, true))
+ setThread(QString::fromStdString(
+ mtx::accessors::relations(*ev).thread().value_or(thread_.toStdString())));
+
+ emit replyChanged(reply_);
+ }
+}
void
TimelineModel::setEdit(const QString &newEdit)
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 43ea0b24..54a1cb3f 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -363,16 +363,7 @@ public slots:
std::vector<QString> typingUsers() const { return typingUsers_; }
bool paginationInProgress() const { return m_paginationInProgress; }
QString reply() const { return reply_; }
- void setReply(const QString &newReply)
- {
- if (edit_.startsWith('m'))
- return;
-
- if (reply_ != newReply) {
- reply_ = newReply;
- emit replyChanged(reply_);
- }
- }
+ void setReply(const QString &newReply);
void resetReply()
{
if (!reply_.isEmpty()) {
|