diff --git a/src/RoomInfoListItem.cpp b/src/RoomInfoListItem.cpp
index 4c8535bf..61fb5e47 100644
--- a/src/RoomInfoListItem.cpp
+++ b/src/RoomInfoListItem.cpp
@@ -84,9 +84,9 @@ RoomInfoListItem::init(QWidget *parent)
ripple_overlay_->setClipPath(path);
ripple_overlay_->setClipping(true);
- avatar_ = new Avatar(this, wm.iconSize);
+ avatar_ = new Avatar(nullptr, wm.iconSize);
avatar_->setLetter(utils::firstChar(roomName_));
- avatar_->move(wm.padding, wm.padding);
+ avatar_->resize(wm.iconSize, wm.iconSize);
unreadCountFont_.setPointSizeF(unreadCountFont_.pointSizeF() * 0.8);
unreadCountFont_.setBold(true);
@@ -146,20 +146,27 @@ RoomInfoListItem::paintEvent(QPaintEvent *event)
auto wm = getMetrics(QFont{});
+ QPixmap pixmap(avatar_->size());
if (isPressed_) {
p.fillRect(rect(), highlightedBackgroundColor_);
titlePen.setColor(highlightedTitleColor_);
subtitlePen.setColor(highlightedSubtitleColor_);
+ pixmap.fill(highlightedBackgroundColor_);
} else if (underMouse()) {
p.fillRect(rect(), hoverBackgroundColor_);
titlePen.setColor(hoverTitleColor_);
subtitlePen.setColor(hoverSubtitleColor_);
+ pixmap.fill(hoverBackgroundColor_);
} else {
p.fillRect(rect(), backgroundColor_);
titlePen.setColor(titleColor_);
subtitlePen.setColor(subtitleColor_);
+ pixmap.fill(backgroundColor_);
}
+ avatar_->render(&pixmap, QPoint(), QRegion(), RenderFlags(DrawChildren));
+ p.drawPixmap(QPoint(wm.padding, wm.padding), pixmap);
+
// Description line with the default font.
int bottom_y = wm.maxHeight - wm.padding - metrics.ascent() / 2;
diff --git a/src/ui/Avatar.cpp b/src/ui/Avatar.cpp
index 3589fce5..7ee58d03 100644
--- a/src/ui/Avatar.cpp
+++ b/src/ui/Avatar.cpp
@@ -38,12 +38,6 @@ Avatar::backgroundColor() const
return background_color_;
}
-int
-Avatar::size() const
-{
- return size_;
-}
-
QSize
Avatar::sizeHint() const
{
diff --git a/src/ui/Avatar.h b/src/ui/Avatar.h
index aea7d3e6..2910350d 100644
--- a/src/ui/Avatar.h
+++ b/src/ui/Avatar.h
@@ -26,7 +26,6 @@ public:
QColor backgroundColor() const;
QColor textColor() const;
- int size() const;
QSize sizeHint() const override;
|