Skip to content

Commit 1260ecd

Browse files
committed
qt: Add TextWidth() wrapper
In Qt 5.12 and before the QFontMetrics::width() is used and it is deprecated since Qt 13.0. In Qt 5.11 the QFontMetrics::horizontalAdvance() was introduced.
1 parent 442a9c6 commit 1260ecd

File tree

6 files changed

+28
-10
lines changed

6 files changed

+28
-10
lines changed

src/qt/bitcoinamountfield.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <qt/bitcoinunits.h>
88
#include <qt/guiconstants.h>
9+
#include <qt/guiutil.h>
910
#include <qt/qvaluecombobox.h>
1011

1112
#include <QApplication>
@@ -121,7 +122,7 @@ class AmountSpinBox: public QAbstractSpinBox
121122

122123
const QFontMetrics fm(fontMetrics());
123124
int h = lineEdit()->minimumSizeHint().height();
124-
int w = fm.width(BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
125+
int w = GUIUtil::TextWidth(fm, BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
125126
w += 2; // cursor blinking space
126127

127128
QStyleOptionSpinBox opt;

src/qt/bitcoingui.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1407,7 +1407,7 @@ UnitDisplayStatusBarControl::UnitDisplayStatusBarControl(const PlatformStyle *pl
14071407
const QFontMetrics fm(font());
14081408
for (const BitcoinUnits::Unit unit : units)
14091409
{
1410-
max_width = qMax(max_width, fm.width(BitcoinUnits::longName(unit)));
1410+
max_width = qMax(max_width, GUIUtil::TextWidth(fm, BitcoinUnits::longName(unit)));
14111411
}
14121412
setMinimumSize(max_width, 0);
14131413
setAlignment(Qt::AlignRight | Qt::AlignVCenter);

src/qt/guiutil.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal m
916916
while(font_size >= minPointSize) {
917917
font.setPointSizeF(font_size);
918918
QFontMetrics fm(font);
919-
if (fm.width(text) < width) {
919+
if (TextWidth(fm, text) < width) {
920920
break;
921921
}
922922
font_size -= 0.5;
@@ -956,4 +956,13 @@ void PolishProgressDialog(QProgressDialog* dialog)
956956
#endif
957957
}
958958

959+
int TextWidth(const QFontMetrics& fm, const QString& text)
960+
{
961+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
962+
return fm.horizontalAdvance(text);
963+
#else
964+
return fm.width(text);
965+
#endif
966+
}
967+
959968
} // namespace GUIUtil

src/qt/guiutil.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,14 @@ namespace GUIUtil
257257

258258
// Fix known bugs in QProgressDialog class.
259259
void PolishProgressDialog(QProgressDialog* dialog);
260+
261+
/**
262+
* Returns the distance in pixels appropriate for drawing a subsequent character after text.
263+
*
264+
* In Qt 5.12 and before the QFontMetrics::width() is used and it is deprecated since Qt 13.0.
265+
* In Qt 5.11 the QFontMetrics::horizontalAdvance() was introduced.
266+
*/
267+
int TextWidth(const QFontMetrics& fm, const QString& text);
260268
} // namespace GUIUtil
261269

262270
#endif // BITCOIN_QT_GUIUTIL_H

src/qt/sendcoinsdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ void SendCoinsDialog::updateSmartFeeLabel()
703703
int lightness = ui->fallbackFeeWarningLabel->palette().color(QPalette::WindowText).lightness();
704704
QColor warning_colour(255 - (lightness / 5), 176 - (lightness / 3), 48 - (lightness / 14));
705705
ui->fallbackFeeWarningLabel->setStyleSheet("QLabel { color: " + warning_colour.name() + "; }");
706-
ui->fallbackFeeWarningLabel->setIndent(QFontMetrics(ui->fallbackFeeWarningLabel->font()).width("x"));
706+
ui->fallbackFeeWarningLabel->setIndent(GUIUtil::TextWidth(QFontMetrics(ui->fallbackFeeWarningLabel->font()), "x"));
707707
}
708708
else
709709
{

src/qt/splashscreen.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
#include <qt/splashscreen.h>
1010

11-
#include <qt/networkstyle.h>
12-
1311
#include <clientversion.h>
1412
#include <interfaces/handler.h>
1513
#include <interfaces/node.h>
1614
#include <interfaces/wallet.h>
15+
#include <qt/guiutil.h>
16+
#include <qt/networkstyle.h>
1717
#include <ui_interface.h>
1818
#include <util/system.h>
1919
#include <util/translation.h>
@@ -75,21 +75,21 @@ SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const Netw
7575
// check font size and drawing with
7676
pixPaint.setFont(QFont(font, 33*fontFactor));
7777
QFontMetrics fm = pixPaint.fontMetrics();
78-
int titleTextWidth = fm.width(titleText);
78+
int titleTextWidth = GUIUtil::TextWidth(fm, titleText);
7979
if (titleTextWidth > 176) {
8080
fontFactor = fontFactor * 176 / titleTextWidth;
8181
}
8282

8383
pixPaint.setFont(QFont(font, 33*fontFactor));
8484
fm = pixPaint.fontMetrics();
85-
titleTextWidth = fm.width(titleText);
85+
titleTextWidth = GUIUtil::TextWidth(fm, titleText);
8686
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText);
8787

8888
pixPaint.setFont(QFont(font, 15*fontFactor));
8989

9090
// if the version string is too long, reduce size
9191
fm = pixPaint.fontMetrics();
92-
int versionTextWidth = fm.width(versionText);
92+
int versionTextWidth = GUIUtil::TextWidth(fm, versionText);
9393
if(versionTextWidth > titleTextWidth+paddingRight-10) {
9494
pixPaint.setFont(QFont(font, 10*fontFactor));
9595
titleVersionVSpace -= 5;
@@ -111,7 +111,7 @@ SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const Netw
111111
boldFont.setWeight(QFont::Bold);
112112
pixPaint.setFont(boldFont);
113113
fm = pixPaint.fontMetrics();
114-
int titleAddTextWidth = fm.width(titleAddText);
114+
int titleAddTextWidth = GUIUtil::TextWidth(fm, titleAddText);
115115
pixPaint.drawText(pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText);
116116
}
117117

0 commit comments

Comments
 (0)