[Icons] Render lock and dropdown glyphs through the icon engine

Both generators rendered the sentinel SVG to a fixed height x height pixmap
at DPR 1. The pre-migration path rendered larger and let QIcon scale it, so
on a 2x display the games-list lock (13px) and the banner dropdown arrow
(24px) came back crisp; the new path hands the widget a DPR-1 bitmap that
gets upscaled and blurred.

- The games list asks the themed engine for `icons/lock` directly, so the
  item view paints it at the device pixel ratio and the lock also follows
  HighlightedText on a selected row.
- The dropdown goes through `loadThemedIcon(...).pixmap(size, dpr)`, which
  keeps the glyph's aspect ratio and renders at the requested ratio.
- LockPixmapGenerator has no consumer left, so it and its cache are gone.
This commit is contained in:
Lukas Brübach 2026-11-01 17:59:19 +01:00
parent c47ea6e8d4
commit 550f1d908b
3 changed files with 12 additions and 41 deletions

View file

@ -1,6 +1,7 @@
#include "games_model.h"
#include "../../../client/settings/cache_settings.h"
#include "../../theme_icon.h"
#include "../interface/pixel_map_generator.h"
#include "libcockatrice/protocol/pb/serverinfo_user.pb.h"
#include "user/user_list_proxy.h"
@ -188,7 +189,10 @@ QVariant GamesModel::data(const QModelIndex &index, int role) const
return result.join(", ");
}
case Qt::DecorationRole: {
return gameentry.with_password() ? QIcon(LockPixmapGenerator::generatePixmap(13)) : QVariant();
// The themed icon follows the palette, so the lock also
// switches to HighlightedText on a selected row, and the
// item view paints it at the device pixel ratio.
return gameentry.with_password() ? loadThemedIcon(QStringLiteral("icons/lock")) : QVariant();
case Qt::TextAlignmentRole:
return Qt::AlignLeft;
default: