diff --git a/src/timeline/TimelineItem.cc b/src/timeline/TimelineItem.cc
index 93987d52..62e195a4 100644
--- a/src/timeline/TimelineItem.cc
+++ b/src/timeline/TimelineItem.cc
@@ -30,6 +30,8 @@
#include "timeline/widgets/ImageItem.h"
#include "timeline/widgets/VideoItem.h"
+constexpr const static char *CHECKMARK = "✓";
+
void
TimelineItem::init()
{
@@ -61,6 +63,15 @@ TimelineItem::init()
mainLayout_->setContentsMargins(conf::timeline::headerLeftMargin, 0, 0, 0);
mainLayout_->setSpacing(0);
+
+ QFont checkmarkFont;
+ checkmarkFont.setPixelSize(conf::timeline::fonts::timestamp);
+
+ // Setting fixed width for checkmark because systems may have a differing width for a
+ // space and the Unicode checkmark.
+ checkmark_ = new QLabel(" ", this);
+ checkmark_->setFont(checkmarkFont);
+ checkmark_->setFixedWidth(QFontMetrics{checkmarkFont}.width(CHECKMARK));
}
/*
@@ -108,6 +119,7 @@ TimelineItem::TimelineItem(mtx::events::MessageType ty,
messageLayout_->addWidget(body_, 1);
}
+ messageLayout_->addWidget(checkmark_);
messageLayout_->addWidget(timestamp_);
mainLayout_->addLayout(messageLayout_);
}
@@ -239,6 +251,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice
messageLayout_->addWidget(body_, 1);
}
+ messageLayout_->addWidget(checkmark_);
messageLayout_->addWidget(timestamp_);
mainLayout_->addLayout(messageLayout_);
}
@@ -285,6 +298,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote>
messageLayout_->addWidget(body_, 1);
}
+ messageLayout_->addWidget(checkmark_);
messageLayout_->addWidget(timestamp_);
mainLayout_->addLayout(messageLayout_);
}
@@ -336,6 +350,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text>
messageLayout_->addWidget(body_, 1);
}
+ messageLayout_->addWidget(checkmark_);
messageLayout_->addWidget(timestamp_);
mainLayout_->addLayout(messageLayout_);
}
@@ -343,11 +358,8 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text>
void
TimelineItem::markReceived()
{
- auto checkmark = new QLabel("✓", this);
- checkmark->setStyleSheet(QString("font-size: %1px;").arg(conf::timeline::fonts::timestamp));
- checkmark->setAlignment(Qt::AlignTop);
-
- messageLayout_->insertWidget(1, checkmark);
+ checkmark_->setText(CHECKMARK);
+ checkmark_->setAlignment(Qt::AlignTop);
}
// Only the body is displayed.
|