-
Notifications
You must be signed in to change notification settings - Fork 13
/
qt-5.15.patch
140 lines (128 loc) · 5.06 KB
/
qt-5.15.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
From ae726b70a7ada9a4be5808e00f0c951318479684 Mon Sep 17 00:00:00 2001
From: Valentin Ochs <[email protected]>
Date: Sat, 20 Jun 2020 16:01:27 +0200
Subject: [PATCH] Replace obsolete/deprecated Qt methods
---
pv/subwindows/decoder_selector/subwindow.cpp | 2 +-
pv/util.cpp | 21 ++++++++++++++++++--
pv/util.hpp | 10 ++++++++++
pv/views/trace/decodetrace.cpp | 3 ++-
pv/views/trace/ruler.cpp | 2 +-
pv/widgets/timestampspinbox.cpp | 2 +-
6 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/pv/subwindows/decoder_selector/subwindow.cpp b/pv/subwindows/decoder_selector/subwindow.cpp
index 94ed6f4b..2c65dcf2 100644
--- a/pv/subwindows/decoder_selector/subwindow.cpp
+++ b/pv/subwindows/decoder_selector/subwindow.cpp
@@ -185,7 +185,7 @@ QToolBar* SubWindow::create_toolbar(QWidget *parent) const
int SubWindow::minimum_width() const
{
QFontMetrics m(info_label_body_->font());
- const int label_width = m.width(QString(tr(initial_notice)));
+ const int label_width = util::text_width(m, tr(initial_notice));
return label_width + min_width_margin;
}
diff --git a/pv/util.cpp b/pv/util.cpp
index 897254e1..dfb8c72b 100644
--- a/pv/util.cpp
+++ b/pv/util.cpp
@@ -143,7 +143,7 @@ QString format_time_si(const Timestamp& v, SIPrefix prefix,
QString s;
QTextStream ts(&s);
if (sign && !v.is_zero())
- ts << forcesign;
+ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);
ts << qSetRealNumberPrecision(precision) << (v * multiplier);
ts << ' ' << prefix << unit;
@@ -169,7 +169,7 @@ QString format_value_si(double v, SIPrefix prefix, unsigned precision,
QString s;
QTextStream ts(&s);
if (sign && (v != 0))
- ts << forcesign;
+ ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);
ts.setRealNumberNotation(QTextStream::FixedNotation);
ts.setRealNumberPrecision(precision);
ts << (v * multiplier) << ' ' << prefix << unit;
@@ -279,5 +279,22 @@ vector<string> split_string(string text, string separator)
return result;
}
+/**
+ * Return the width of a string in a given font.
+ *
+ * @param[in] metric metrics of the font
+ * @param[in] string the string whose width should be determined
+ *
+ * @return width of the string in pixels
+ */
+std::streamsize text_width(const QFontMetrics &metric, const QString &string)
+{
+#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
+ return metric.horizontalAdvance(string);
+#else
+ return metric.width(string);
+#endif
+}
+
} // namespace util
} // namespace pv
diff --git a/pv/util.hpp b/pv/util.hpp
index fab29a14..49ae04b2 100644
--- a/pv/util.hpp
+++ b/pv/util.hpp
@@ -30,6 +30,7 @@
#include <QMetaType>
#include <QString>
+#include <QFontMetrics>
using std::string;
using std::vector;
@@ -143,6 +144,15 @@ QString format_time_minutes(const Timestamp& t, signed precision = 0,
vector<string> split_string(string text, string separator);
+/**
+ * Return the width of a string in a given font.
+ * @param[in] metric metrics of the font
+ * @param[in] string the string whose width should be determined
+ *
+ * @return width of the string in pixels
+ */
+std::streamsize text_width(const QFontMetrics &metric, const QString &string);
+
} // namespace util
} // namespace pv
diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp
index 67c9b1c4..93c7c5a9 100644
--- a/pv/views/trace/decodetrace.cpp
+++ b/pv/views/trace/decodetrace.cpp
@@ -161,7 +161,8 @@ DecodeTrace::DecodeTrace(pv::Session &session,
// Determine shortest string we want to see displayed in full
QFontMetrics m(QApplication::font());
- min_useful_label_width_ = m.width("XX"); // e.g. two hex characters
+ // e.g. two hex characters
+ min_useful_label_width_ = util::text_width(m, "XX");
default_row_height_ = (ViewItemPaintParams::text_height() * 6) / 4;
annotation_height_ = (ViewItemPaintParams::text_height() * 5) / 4;
diff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp
index 555794fc..83ffed28 100644
--- a/pv/views/trace/ruler.cpp
+++ b/pv/views/trace/ruler.cpp
@@ -283,7 +283,7 @@ void Ruler::paintEvent(QPaintEvent*)
const int rightedge = width();
const int x_tick = tick.first;
if ((x_tick > leftedge) && (x_tick < rightedge)) {
- const int x_left_bound = QFontMetrics(font()).width(tick.second) / 2;
+ const int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2;
const int x_right_bound = rightedge - x_left_bound;
const int x_legend = min(max(x_tick, x_left_bound), x_right_bound);
p.drawText(x_legend, ValueMargin, 0, text_height,
diff --git a/pv/widgets/timestampspinbox.cpp b/pv/widgets/timestampspinbox.cpp
index fea8175e..01424a5b 100644
--- a/pv/widgets/timestampspinbox.cpp
+++ b/pv/widgets/timestampspinbox.cpp
@@ -76,7 +76,7 @@ QSize TimestampSpinBox::minimumSizeHint() const
{
const QFontMetrics fm(fontMetrics());
const int l = round(value_).str().size() + precision_ + 10;
- const int w = fm.width(QString(l, '0'));
+ const int w = util::text_width(fm, QString(l, '0'));
const int h = lineEdit()->minimumSizeHint().height();
return QSize(w, h);
}