2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-03 16:15:13 +00:00

Fix userpic corner indicator

This commit is contained in:
RadRussianRus
2020-12-26 20:48:53 +03:00
parent 9b1a92a192
commit b1529c0c3c

View File

@@ -135,6 +135,9 @@ void BasicRow::updateCornerBadgeShown(
not_null<PeerData*> peer, not_null<PeerData*> peer,
Fn<void()> updateCallback) const { Fn<void()> updateCallback) const {
const auto shown = [&] { const auto shown = [&] {
if (DialogListLines() == 1) {
return false;
}
if (const auto user = peer->asUser()) { if (const auto user = peer->asUser()) {
return Data::IsUserOnline(user); return Data::IsUserOnline(user);
} else if (const auto channel = peer->asChannel()) { } else if (const auto channel = peer->asChannel()) {
@@ -176,7 +179,6 @@ void BasicRow::PaintCornerBadgeFrame(
const auto skip = peer->isUser() const auto skip = peer->isUser()
? st::dialogsOnlineBadgeSkip ? st::dialogsOnlineBadgeSkip
: st::dialogsCallBadgeSkip; : st::dialogsCallBadgeSkip;
const auto edge = (DialogListLines() == 1 ? st::dialogsUnreadHeight : st::dialogsPhotoSize);
const auto shrink = (size / 2) * (1. - data->shown); const auto shrink = (size / 2) * (1. - data->shown);
auto pen = QPen(Qt::transparent); auto pen = QPen(Qt::transparent);
@@ -185,18 +187,9 @@ void BasicRow::PaintCornerBadgeFrame(
q.setBrush(data->active q.setBrush(data->active
? st::dialogsOnlineBadgeFgActive ? st::dialogsOnlineBadgeFgActive
: st::dialogsOnlineBadgeFg); : st::dialogsOnlineBadgeFg);
auto onlineTop = edge - size;
auto onlineLeft = edge - size;
if (cUserpicCornersType() == 3) {
onlineTop = onlineTop - skip.x();
onlineLeft = onlineLeft - skip.y();
} else {
onlineTop = onlineTop - size;
onlineLeft = onlineLeft - size;
}
q.drawEllipse(QRectF( q.drawEllipse(QRectF(
onlineTop, st::dialogsPhotoSize - size - (cUserpicCornersType() == 3 ? skip.x() : -(stroke / 2)),
onlineLeft, st::dialogsPhotoSize - size - (cUserpicCornersType() == 3 ? skip.y() : -(stroke / 2)),
size, size,
size size
).marginsRemoved({ shrink, shrink, shrink, shrink })); ).marginsRemoved({ shrink, shrink, shrink, shrink }));
@@ -214,7 +207,7 @@ void BasicRow::paintUserpic(
const auto shown = _cornerBadgeUserpic const auto shown = _cornerBadgeUserpic
? _cornerBadgeUserpic->animation.value(_cornerBadgeShown ? 1. : 0.) ? _cornerBadgeUserpic->animation.value(_cornerBadgeShown ? 1. : 0.)
: (_cornerBadgeShown ? 1. : 0.); : (_cornerBadgeShown ? 1. : 0.);
if (DialogListLines() == 1 || !historyForCornerBadge || shown == 0.) { if (!historyForCornerBadge || shown == 0.) {
peer->paintUserpicLeft( peer->paintUserpicLeft(
p, p,
_userpic, _userpic,
@@ -254,12 +247,13 @@ void BasicRow::paintUserpic(
: st::dialogsBg; : st::dialogsBg;
const auto size = st::dialogsCallBadgeSize; const auto size = st::dialogsCallBadgeSize;
const auto skip = st::dialogsCallBadgeSkip; const auto skip = st::dialogsCallBadgeSkip;
const auto stroke = st::dialogsOnlineBadgeStroke;
p.setOpacity(shown); p.setOpacity(shown);
p.translate(st::dialogsPadding); p.translate(st::dialogsPadding);
actionPainter->paintSpeaking( actionPainter->paintSpeaking(
p, p,
st::dialogsPhotoSize - skip.x() - size, st::dialogsPhotoSize - size - (cUserpicCornersType() == 3 ? skip.x() : -(stroke / 2)),
st::dialogsPhotoSize - skip.y() - size, st::dialogsPhotoSize - size - (cUserpicCornersType() == 3 ? skip.y() : -(stroke / 2)),
fullWidth, fullWidth,
bg, bg,
now); now);