From 068ab727e46f2b1e0dcdcbc59d2c8f9ff566706f Mon Sep 17 00:00:00 2001 From: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com> Date: Wed, 4 Jun 2025 20:20:06 +0200 Subject: [PATCH] Gui: Fix hints on high DPI screens (#21762) --- src/Gui/InputHintWidget.cpp | 11 ++++++----- src/Gui/InputHintWidget.h | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Gui/InputHintWidget.cpp b/src/Gui/InputHintWidget.cpp index 146cc9f1bc..7c33b5af79 100644 --- a/src/Gui/InputHintWidget.cpp +++ b/src/Gui/InputHintWidget.cpp @@ -61,9 +61,8 @@ void Gui::InputHintWidget::showHints(const std::list& hints) QBuffer buffer; image.save(&buffer, "png"); - return QStringLiteral("") - .arg(QLatin1String(buffer.data().toBase64())) - .arg(image.width()); + return QStringLiteral("") + .arg(QString::fromLatin1(buffer.data().toBase64())); }; const auto getHintHTML = [&](const InputHint& hint) { @@ -133,13 +132,15 @@ QPixmap Gui::InputHintWidget::generateKeyIcon(const InputHint::UserInput key, co const QFontMetrics fm(font); const QString text = inputRepresentation(key); const QRect textBoundingRect = fm.tightBoundingRect(text); + const qreal dpr = BitmapFactoryInst::getMaximumDPR(); const int symbolWidth = std::max(textBoundingRect.width() + padding * 2, iconSymbolHeight); - const QRect keyRect(margin, margin, symbolWidth, 18); + const QRect keyRect(margin, margin, symbolWidth, iconSymbolHeight); - QPixmap pixmap(symbolWidth + margin * 2, iconTotalHeight); + QPixmap pixmap((symbolWidth + margin * 2) * dpr, iconTotalHeight * dpr); pixmap.fill(Qt::transparent); + pixmap.setDevicePixelRatio(dpr); QPainter painter(&pixmap); painter.setRenderHint(QPainter::Antialiasing); diff --git a/src/Gui/InputHintWidget.h b/src/Gui/InputHintWidget.h index c9e86c1d44..94af3107e5 100644 --- a/src/Gui/InputHintWidget.h +++ b/src/Gui/InputHintWidget.h @@ -20,7 +20,7 @@ * . * * * ***************************************************************************/ - + #ifndef INPUTHINTWIDGET_H #define INPUTHINTWIDGET_H @@ -45,8 +45,8 @@ public: private: static std::optional getCustomIconPath(InputHint::UserInput key); - static QPixmap generateKeyIcon(InputHint::UserInput key, QColor color); static QString inputRepresentation(InputHint::UserInput key); + QPixmap generateKeyIcon(InputHint::UserInput key, QColor color); }; } // Namespace Gui