1Qt 5.13 introduces many new features and improvements as well as bugfixes
2over the 5.12.x series. For more details, refer to the online documentation
3included in this distribution. The documentation is also available online:
4
5https://doc.qt.io/qt-5/index.html
6
7The Qt version 5.13 series is binary compatible with the 5.12.x series.
8Applications compiled for 5.12 will continue to run with 5.13.
9
10Some of the changes listed in this file include issue tracking numbers
11corresponding to tasks in the Qt Bug Tracker:
12
13https://bugreports.qt.io/
14
15Each of these identifiers can be entered in the bug tracker to obtain more
16information about a particular change.
17
18****************************************************************************
19*                 Important Source Incompatible Changes                    *
20****************************************************************************
21
22 - Moc generated files include the standard <memory> header file now.
23   A side effect of this is that code including the Moc output from within
24   a namespace will fail to compile.
25
26****************************************************************************
27*                        Important Behavior Changes                        *
28****************************************************************************
29
30 - The Qt resource system now supports compressing content using the
31   Zstandard (https://zstd.net) algorithm. Compared to zlib, it compresses
32   better for the same CPU time, so this algorithm is the default.
33   QResource::isCompressed() returns true for either compression algorithm.
34   Use QResource::compressionAlgorithm() to find out which algorithm to
35   decompress. QFile will automatically decompress using the correct
36   algorithm.
37
38 - QDataStream version bumped up to 19 to account for changes in the
39   serialization of QFont.
40
41 - [QTBUG-73048] Qt now enables by default warnings when using APIs
42   marked as deprecated. It is possible to disable such warnings by
43   defining the QT_NO_DEPRECATED_WARNINGS macro. The old
44   QT_DEPRECATED_WARNINGS macro which was used to enable this warning
45   now has no effect (warnings are automatically enabled).
46
47****************************************************************************
48*                             Third-Party Code                             *
49****************************************************************************
50
51 - Updated bundled SQLite to version 3.28.0.
52 - [QTBUG-72623] Updated DNS public suffix list
53 - [QTBUG-73883] libjpeg-turbo was updated to version 2.0.2
54 - Bundled libpng was updated to version 1.6.37
55
56****************************************************************************
57*                        Platform-Specific Changes                         *
58****************************************************************************
59
60 - X11 / XCB:
61   * [QTBUG-45375] QTabletEvent coordinates now come from AbsX/AbsY
62     valuators in the X11 event, in more precise 32.32 fixed-point format,
63     scaled to fit the virtual desktop. It's possible to revert to using
64     the legacy 16.16-format event_x/event_y coordinates as in previous
65     releases by setting the QT_XCB_TABLET_LEGACY_COORDINATES environment
66     variable.
67   * [plugins] platforminputcontexts now use libxkbcommon-compose APIs for
68     compose key input, instead of Qt's own implementation.
69
70 - Android
71   * Increased the minimum supported Android version to Android 5.0
72     (API level 21).
73
74 - Windows
75   * [QTBUG-47247][QTBUG-71855] Add a default setting for
76     hasBorderInFullScreen in QtPlatformHeaders, QWindowsWindowFunctions
77   * [QTBUG-57180] Removed confusing DirectWrite warning when loading
78     bitmap fonts.
79
80 - macOS
81   * Accessibility: VoiceOver now reads all lines in multiline text
82     components when navigating by lines.
83
84****************************************************************************
85*                                  Tools                                   *
86****************************************************************************
87
88 - configure & build system:
89   * Added --linker=[bfg,lld,gold] configure flag.
90   * The default OpenGL configuration changed from ANGLE to dynamic OpenGL.
91   * Added -schannel option to enable Schannel support on Desktop Windows.
92   * Added -coverage option for recording coverage data during execution
93
94 - CMake
95   * Added support for automatic linking of transitive dependencies in
96     static builds
97
98 - qmake
99   * [QTBUG-53654] Introduced the variables WINDOWS_TARGET_PLATFORM_VERSION
100     and WINDOWS_TARGET_PLATFORM_MIN_VERSION for overriding the default
101     values of WindowsTargetPlatformVersion and
102     WindowsTargetPlatformMinVersion in Visual Studio project files.
103
104 - RCC now supports compressing content using the Zstandard
105   (https://zstd.net) algorithm. Compared to zlib, it compresses better for
106   the same CPU time, so this algorithm is the default. To go back to the
107   previous algorithm, pass command-line option --compress-algo=zlib.
108   Compression levels range from 1 (fastest, least compression) to 19
109   (slowest, best compression). Level 0 tells the library to choose an
110   implementation-defined default. The default compression level is
111   "heuristic" (level -1): under this mode, RCC will attempt a very fast
112   compression (level 1) and check if the file was sufficiently compressed.
113   If it was, then RCC will compress again using an implementation-defined
114   level.
115
116****************************************************************************
117*                                  QtCore                                  *
118****************************************************************************
119
120 - New class QConcatenateTablesProxyModel, to concatenate the rows from
121   multiple source models.
122 - New class QTransposeProxyModel to swap rows and columns of the source
123   model.
124 - Added macros Q_DISABLE_MOVE and Q_DISABLE_COPY_MOVE complementing
125   Q_DISABLE_COPY.
126 - Qt Containers and meta type system now use C++11 type traits
127   (std::is_trivial, std::is_trivially_copyable and
128   std::is_trivially_destructible) to detect the class of a type not
129   explicitly set by Q_DECLARE_TYPEINFO. (Q_DECLARE_TYPEINFO is still
130   needed for QList.)
131
132 - QCommandLineParser:
133   * [QTBUG-58490] The application name (if set in QCoreApplication) is now
134     shown in error messages.
135
136 - QDateTime:
137   * [QTBUG-71030] Fixed race conditions in getting the local time zone. Qt now
138     has a mutex lock around all calls to tzset() and mktime(). Application
139     code should avoid calling those functions directly.
140
141 - QFile:
142   * Made QFile::copy() issue a filesystem-synchronization system call,
143     which would make it less likely to result in incomplete or corrupt
144     files if the system reboots or uncleanly shuts down soon after the
145     function returns. New code is advised to use QSaveFile instead, which
146     also allows display of a progress report while copying.
147
148 - QFileInfo:
149   * [QTBUG-63970][QTBUG-30401][QTBUG-20791] Fixed resolving of symbolic
150     links to UNC shares on NTFS file systems.
151
152 - QJsonArray:
153   * [QTBUG-32793] Added cbegin() and cend() methods for compatibility with
154     the Standard Library container concepts.
155
156 - QJsonDocument:
157   * [QTBUG-71445] Added the ability to stream QJsonDocument into and from
158     QDataStream if it is contained in a QVariant.
159
160 - QLocale:
161   * Added support for Western Balochi, Ido, Lojban, Sicilian and
162     Southern Kurdish.
163   * [QTBUG-71445] Added a const overload for formattedDataSize().
164   * [QTBUG-782] Added toLong() and toULong().
165
166 - QMetaObject:
167   * Non-copyable lambdas can now be used with invokeMethod(). For
168     consistency reasons, the functor object is now always moved.
169
170 - QMimeDatabase:
171   * Added configure option -no-mimetype-database that tells Qt not to
172     bundle its own copy of the XDG MIME database. If this option is
173     passed, QMimeDatabase will only work if there's a system copy in
174     $XDG_DATA_DIRS/mime. This option is useful for Linux distributions
175     that ensure the data is always present.
176
177 - QSettings:
178   * Added QSettings(Scope...) constructor to avoid using #ifdef in Qt
179     applications.
180
181 - QStringListModel:
182   * [QTBUG-69807] Implemented moveRows
183
184 - QUrlQuery:
185   * QUrlQuery now provides an initializer list constructor. It can be
186     created using a list of key/value pairs.
187
188 - QVector:
189   * QVector no longer requires a default constructor for its template
190     argument.
191
192****************************************************************************
193*                                 QtDBus                                   *
194****************************************************************************
195
196 - Matching namespace prefixes using QDBusServiceWatcher (instead of full
197   service names) is now possible. For example, "com.example.backend1*"
198   will match "com.example.backend1", "com.example.backend1.foo" and
199   "com.example.backend1.foo.bar", but not "com.example.backend12".
200
201****************************************************************************
202*                                  QtGui                                   *
203****************************************************************************
204
205 - CSS:
206   * Added support for HSL/HSLA colors.
207   * Fix the range of the hue parameter when parsing a color given in HSL
208     or HSV.
209
210 - QFont:
211   * Add setFamilies()/families() to support use of font families with
212     commas and quotes in their name.
213
214 - QImage:
215   * [QTBUG-41176] Added support for 16-bit grayscale format.
216   * A new method convertTo has been added to change the format of a QImage
217     in place.
218
219 - QPainterPath:
220   * Added clear(), reserve(), capacity(). clear() removes allocated
221     QPainterPath elements but preserves allocated memory, which can be
222     useful for application with complex paths that are often recreated.
223     reserve() and capacity() follow QVector semantics.
224
225 - QWindow:
226   * [QTBUG-67903][QTBUG-52944] QWindow::transientParent is now a property.
227
228 - Text:
229   * [QTBUG-60813] Deprecated QFont::lastResortFamily() and
230     QFont::lastResortFont() which are not in use in Qt 5 and did not
231     provide any useful information.
232   * [QTBUG-22813] Added support for setting the font's style name in
233     QTextCharFormat.
234
235****************************************************************************
236*                                QtNetwork                                 *
237****************************************************************************
238
239 - TLS (SSL):
240   * Support for SSLv2 and SSLv3 sockets has been dropped, as per RFC 6176
241     (2011) and RFC 7568 (2015).
242   * The Schannel backend now supports ALPN and thus HTTP/2.
243   * [QTBUG-62637] Added support for Schannel on Desktop Windows. To build
244     Qt with Schannel support use '-schannel' during configure.
245   * Added class QOcspResponse as a part of OCSP stapling support.
246   * [QTBUG-12812][QTBUG-17158] Added OCSP-stapling support for OpenSSL
247     backend
248   * [QTBUG-71828][QTBUG-73289] Fixed SSL verification when connecting to IP
249     address (no host name) if that IP address is listed in the certificate.
250
251****************************************************************************
252*                                QtTestLib                                 *
253****************************************************************************
254
255 - Added QTest::toString(const QModelIndex &idx)
256
257 - Removed support for GPU_BLACKLIST files. Reimplementations or
258   equivalents of QTEST_MAIN() should remove their uses of
259   QTEST_ADD_GPU_BLACKLIST_SUPPORT and its _DEFS; they are still vacuously
260   defined, but serve no remaining purpose and shall be undefined in due
261   course.
262
263****************************************************************************
264*                                QtWidgets                                 *
265****************************************************************************
266
267 - QAbstractScrollArea:
268   * [QTBUG-69120] QTableView/QTreeView, when reporting their
269     viewportSizeHint(), now correctly take into account their scroll
270     bars' visibility and visibilityPolicy.
271
272 - QHeaderView:
273   * dataChanged now respects the given roles to avoid useless
274     recomputations.
275
276 - QLabel:
277   * Minor performance improvement when painting a label with an image.
278
279 - QListWidget:
280   * [QTBUG-69807] Implemented moveRows in model
281   * [QTBUG-68977] Sped up handling of hidden items when working with large
282     data sets.
283
284 - QPlainTextEdit:
285   * Added QRegularExpression find() method overload.
286
287 - QTextEdit:
288   * Added QRegularExpression find() method overload.
289
290 - QTreeView:
291   * Added expandRecursively() to expand all items below a given index.
292
293 - QWidgetTextControlPrivate:
294   * [QTBUG-69735] Moved cursor selection to start.
295
296****************************************************************************
297*                                  QtSql                                   *
298****************************************************************************
299
300 - SQLite:
301   * [QTBUG-63498] The json1-extension for the SQLite3 plugin is now enabled
302     by default.
303
304 - PostgreSQL:
305   * QSqlDatabase is now stricter about table names when used with record()
306     and primaryIndex(). If the tablename was not quoted when it was
307     created, then the table name passed to record() and primaryIndex()
308     needs to be in lower case so that PostgreSQL is able to find it.
309