diff --git a/src/InviteesModel.cpp b/src/InviteesModel.cpp
index e045581a..ad99c847 100644
--- a/src/InviteesModel.cpp
+++ b/src/InviteesModel.cpp
@@ -16,6 +16,10 @@ InviteesModel::InviteesModel(QObject *parent)
void
InviteesModel::addUser(QString mxid)
{
+ for (const auto &invitee : invitees_)
+ if (invitee->mxid_ == mxid)
+ return;
+
beginInsertRows(QModelIndex(), invitees_.count(), invitees_.count());
auto invitee = new Invitee{mxid, this};
@@ -30,6 +34,20 @@ InviteesModel::addUser(QString mxid)
emit countChanged();
}
+void
+InviteesModel::removeUser(QString mxid)
+{
+ for (int i = 0; i < invitees_.length(); ++i) {
+ if (invitees_[i]->mxid_ == mxid) {
+ beginRemoveRows(QModelIndex(), i, i);
+ invitees_.removeAt(i);
+ endRemoveRows();
+ emit countChanged();
+ break;
+ }
+ }
+}
+
QHash<int, QByteArray>
InviteesModel::roleNames() const
{
diff --git a/src/InviteesModel.h b/src/InviteesModel.h
index fd64116b..65fb78d6 100644
--- a/src/InviteesModel.h
+++ b/src/InviteesModel.h
@@ -43,6 +43,7 @@ public:
InviteesModel(QObject *parent = nullptr);
Q_INVOKABLE void addUser(QString mxid);
+ Q_INVOKABLE void removeUser(QString mxid);
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex & = QModelIndex()) const override
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 84aa2c90..c5fe6b4b 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -116,9 +116,10 @@ TimelineViewManager::updateColorPalette()
QColor
TimelineViewManager::userColor(QString id, QColor background)
{
- if (!userColors.contains(id))
- userColors.insert(id, QColor(utils::generateContrastingHexColor(id, background)));
- return userColors.value(id);
+ QPair<QString, quint64> idx{id, background.rgba64()};
+ if (!userColors.contains(idx))
+ userColors.insert(idx, QColor(utils::generateContrastingHexColor(id, background)));
+ return userColors.value(idx);
}
QString
diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 6696b1c4..3e3952a8 100644
--- a/src/timeline/TimelineViewManager.h
+++ b/src/timeline/TimelineViewManager.h
@@ -147,7 +147,7 @@ private:
CallManager *callManager_ = nullptr;
VerificationManager *verificationManager_ = nullptr;
- QHash<QString, QColor> userColors;
+ QHash<QPair<QString, quint64>, QColor> userColors;
};
Q_DECLARE_METATYPE(mtx::events::msg::KeyVerificationAccept)
Q_DECLARE_METATYPE(mtx::events::msg::KeyVerificationCancel)
|