mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/telegramdesktop/tdesktop
synced 2026-09-21 00:23:56 +08:00
Added separate painting of peer badge emoji status to peer list.
This commit is contained in:
@@ -116,6 +116,8 @@ bool ScaledBotVerifiedEmoji::readyInDefaultState() {
|
||||
struct PeerBadge::EmojiStatus {
|
||||
EmojiStatusId id;
|
||||
std::unique_ptr<Ui::Text::CustomEmoji> emoji;
|
||||
QPoint lastPosition;
|
||||
QColor lastColor;
|
||||
int skip = 0;
|
||||
};
|
||||
|
||||
@@ -360,12 +362,14 @@ int PeerBadge::drawPremiumEmojiStatus(
|
||||
if (!_emojiStatus->emoji) {
|
||||
return 0;
|
||||
}
|
||||
_emojiStatus->lastPosition = QPoint(
|
||||
iconx - 2 * _emojiStatus->skip,
|
||||
icony + _emojiStatus->skip);
|
||||
_emojiStatus->lastColor = (*descriptor.premiumFg)->c;
|
||||
_emojiStatus->emoji->paint(p, {
|
||||
.textColor = (*descriptor.premiumFg)->c,
|
||||
.textColor = _emojiStatus->lastColor,
|
||||
.now = descriptor.now,
|
||||
.position = QPoint(
|
||||
iconx - 2 * _emojiStatus->skip,
|
||||
icony + _emojiStatus->skip),
|
||||
.position = _emojiStatus->lastPosition,
|
||||
.paused = descriptor.paused || On(PowerSaving::kEmojiStatus),
|
||||
});
|
||||
return iconw - 4 * _emojiStatus->skip;
|
||||
@@ -382,6 +386,30 @@ int PeerBadge::drawPremiumStar(Painter &p, const Descriptor &descriptor) {
|
||||
return iconw;
|
||||
}
|
||||
|
||||
QRect PeerBadge::emojiStatusRect() const {
|
||||
if (!_emojiStatus || !_emojiStatus->emoji) {
|
||||
return QRect();
|
||||
}
|
||||
return QRect(
|
||||
_emojiStatus->lastPosition,
|
||||
Size(st::emojiSize - 2 * _emojiStatus->skip));
|
||||
}
|
||||
|
||||
void PeerBadge::paintEmojiStatusFrame(
|
||||
QPainter &p,
|
||||
crl::time now,
|
||||
bool paused) {
|
||||
if (!_emojiStatus || !_emojiStatus->emoji) {
|
||||
return;
|
||||
}
|
||||
_emojiStatus->emoji->paint(p, {
|
||||
.textColor = _emojiStatus->lastColor,
|
||||
.now = now,
|
||||
.position = _emojiStatus->lastPosition,
|
||||
.paused = paused || On(PowerSaving::kEmojiStatus),
|
||||
});
|
||||
}
|
||||
|
||||
void PeerBadge::unload() {
|
||||
_emojiStatus = nullptr;
|
||||
}
|
||||
|
||||
@@ -67,6 +67,8 @@ public:
|
||||
bool paused = false;
|
||||
};
|
||||
int drawGetWidth(Painter &p, Descriptor &&descriptor);
|
||||
[[nodiscard]] QRect emojiStatusRect() const;
|
||||
void paintEmojiStatusFrame(QPainter &p, crl::time now, bool paused);
|
||||
void unload();
|
||||
|
||||
[[nodiscard]] bool ready(const BotVerifyDetails *details) const;
|
||||
|
||||
Reference in New Issue
Block a user