Revision control
++ Qt 5.15 introduces many new features and improvements as well as bugfixes
++ over the 5.14.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.15 series is binary compatible with the 5.14.x series.
++ Applications compiled for 5.14 will continue to run with 5.15.
++
++ Some of the changes listed in this file include issue tracking numbers
++ corresponding to tasks in the Qt Bug Tracker:
++
++
++ Each of these identifiers can be entered in the bug tracker to obtain more
++ information about a particular change.
++
++ ****************************************************************************
++ * Important Behavior Changes *
++ ****************************************************************************
++
++ - Calling QList::insert() or removeAt() with an out of bounds index is
++ deprecated and will no longer be supported in Qt 6.
++
++ ****************************************************************************
++ * Potentially Binary-Incompatible Changes *
++ ****************************************************************************
++
++ - QHash:
++ QHash's iterator category was changed from bidirectional iterator to
++ forward iterator. This may cause trouble if a library uses the
++ iterator category to alter functionality through tag dispatching. This
++ only applies when compiling the library or application with
++ QT_DISABLE_DEPRECATED_BEFORE=0x050F00 and the other with a lower value.
++
++ ****************************************************************************
++ * Deprecation Notice *
++ ****************************************************************************
++
++ - The binary JSON representation is deprecated. The CBOR format should be
++ used instead.
++
++ - [QTBUG-80308] QUrl::topLevelDomain() was deprecated in 5.15 and will be
++ removed in 6.0
++
++ - QtNetwork:
++ * QNetworkConfigurationManager, QNetworkConfiguration and QNetworkSession
++ are deprecated, to be removed in Qt 6.
++ * QNetworkAccessManager::activeConfiguration, configuration and
++ setConfiguration are deprecated, to be removed in Qt 6.
++ * QNetworkAccessManager::networkAccessible, setNetworkAccessible and
++ the NetworkAccessibility enum are deprecated, to be removed in Qt 6.
++ * QLocalSocket::error() (the signal) is deprecated; superseded by
++ errorOccurred()
++ * QAbstractSocket::error() (the signal) is deprecated; superseded by
++ errorOccurred()
++ * QNetworkReply::error() (the signal) is deprecated; superseded by
++ errorOccurred()
++ * [QTBUG-80369] QSslSocket::sslErrors() (the getter) was deprecated and
++ superseded by sslHandshakeErrors()
++
++ - [QTBUG-81630][QTBUG-80312] QLinkedList is deprecated and will be moved
++ to Qt5Compat in Qt 6. It is recommended to use std::list instead.
++
++ See also the various sections below, which include many more deprecations.
++
++ ****************************************************************************
++ * QtCore *
++ ****************************************************************************
++
++ - QCalendar::monthsInYear(QCalendar::Unspecified) now returns
++ maximumMonthsInYear(). QCalendar::daysInYear() now makes clear that its
++ handling of unspecified year is undefined.
++
++ - Containers:
++ * Added operator-> to the key-value iterator for QHash/QMap.
++
++ - QAbstractItemModel:
++ * [QTBUG-72587] The match() method now supports the new
++ Qt::RegularExpression match flag value. This will allow users to use
++ either a string or a fully configured QRegularExpression when doing
++ searches. In the second case, the case sensitivity flag will be
++ ignored if passed.
++
++ - QByteArray:
++ * resize() will no longer shrink the capacity. That means resize(0) now
++ reliably preserves capacity().
++ * Added the new fromBase64Encoding function.
++ * Added new flags to make fromBase64 / fromBase64Encoding strictly
++ validate their input, instead of skipping over invalid characters.
++
++ - QCborArray:
++ * Fixed an infinite loop when operator[] was called with an index larger
++ than the array's size plus 1.
++
++ - QCborMap:
++ * [QTBUG-83366] Fixed some issues relating to assigning elements from a
++ map to itself.
++
++ - QCborValue:
++ * fromCbor() now limits decoding to at most 1024 nested maps, arrays,
++ and tags to prevent stack overflows. This should be sufficient for
++ most uses of CBOR. An API to limit further or to relax the limit will
++ be provided in 5.15. Meanwhile, if decoding more is required,
++ QCborStreamReader can be used (note that each level of map and array
++ allocates memory).
++
++ - QDate:
++ * QDate::toString(Qt::DateFormat, QCalendar) no longer takes calendar
++ into account for Qt::TextDate. There was no matching support in
++ QDateTime and the locale-independent formats are intended to be
++ standard, rather than customized to the user.
++
++ - QDateTime:
++ * Added some missing QCalendar variants of QDateTime::toString().
++ Included docs for QCalendar variants in both QDate and QDateTime.
++
++ - QFile:
++ * Introduce QFile::moveToTrash to allow applications to move files to
++ the trash.
++
++ - QFileInfo:
++ * [QTBUG-75869] Add QFileInfo::isJunction so that applications can
++ recognize NTFS file system entries as junctions
++
++ - QHash:
++ * Reverse iteration over QHash is now deprecated.
++ * insertMulti(), unite() and values(const Key &key) are now deprecated.
++ Please use QMultiHash instead.
++
++ - QJsonObject:
++ * Fixed a regression from 5.13 that incorrect results when assigning
++ elements from an object to itself.
++
++ - QLatin1String:
++ * Added compare().
++
++ - QLibrary and QPluginLoader:
++ * [QTBUG-39642] Fixed a deadlock that would happen if the plugin or
++ library being loaded has load-time initialization code (C++ global
++ variables) that recursed back into the same QLibrary or QPluginLoader
++ object.
++
++ - QLocale:
++ * Deprecated toTime() variants taking a calendar. The calendar is
++ ignored in time parsing.
++ * Data used for currency formats in several locales and list patterns in
++ some locales have changed due to now parsing the CLDR data more
++ faithfully.
++ * [QTBUG-79902] Currency formats are now based on CLDR's accounting
++ formats, where they were previously mostly based (more or less by
++ accident) on standard formats. In particular, this now means negative
++ currency formats are specified, where available, where they (mostly)
++ were not previously.
++
++ - QMap:
++ * [QTBUG-35544] insertMulti(), unite(), values(Key), uniqueKeys(),
++ count(Key) is now deprecated. Please use QMultiMap instead.
++
++ - QObject:
++ * [QTBUG-76375] A logging category
++ qt.core.qmetaobject.connectslotsbyname was added, which will report
++ on the connections made by QMetaObject::connectSlotsByName().
++
++ - QProcess:
++ * Overloads of start/execute/startDatached that parse a single command
++ string into program and arguments have been marked as deprecated. A
++ static helper splitCommand has been added to construct a QStringList
++ from a command string.
++
++ - QRandomGenerator:
++ * The system() random generator will now use the RDSEED instruction on
++ x86 processors whenever available as the first source of random data.
++ It will fall back to RDRAND and then to the system functions, in that
++ order.
++
++ - QRegularExpression:
++ * The escape(), wildcardToRegularExpression() and anchoredPattern()
++ functions now have overloads taking a QStringView parameter.
++
++ - QResource:
++ * Added uncompressedSize() and uncompressedData(), which will perform
++ any required decompression on the data, prior to returning (unlike
++ data() and size()).
++
++ - QSet:
++ * Reverse iteration over QSet is now deprecated.
++
++ - QStandardPaths:
++ * When used in a low-integrity process on Windows,
++ QStandardPaths::writableLocation returns respective low-integrity
++ paths.
++
++ - QString:
++ * Added QString::isValidUtf16.
++
++ - QStringView:
++ * Added QStringView::isValidUtf16.
++ * Added compare() overloads taking QLatin1String, QChar.
++ * Conversion from std::basic_string can now be constexpr (when
++ std::basic_string is).
++
++ - QTimeZone:
++ * The constructor can now handle general UTC-offset zone names. The
++ reported id() of such a zone shall be in canonical form, so might not
++ match the ID passed to the constructor.
++
++ - QXmlStream:
++ * QXmlStreamReader does now by default limit the expansion of entities
++ to 4096 characters. Documents where a single entity expands to more
++ characters than the limit are not considered well formed. The limit is
++ there to avoid DoS attacks through recursively expanding entities when
++ loading untrusted content. The limit can be changed through the
++ QXmlStreamReader::setEntityExpansionLimit() method.
++
++ - moc:
++ * Moc now correctly sets a non-null QMetaObject::superClass for
++ Q_GADGETs that inherit from a template which inherits another
++ Q_GADGET.
++ * [QTBUG-74521][QTBUG-76598] moc can now output a ".d" dep file that can
++ be consumed by other build systems.
++
++ ****************************************************************************
++ * QtGui *
++ ****************************************************************************
++
++ - Extended QVulkanWindow to allow user to specify additional queues to be
++ created.
++ - Added API for starting interactive window resize and move operations
++ handled by the system.
++
++ - QClipboard:
++ * Support lazily-provided copying of data to the clipboard on macOS
++
++ - QCursor:
++ * [QTBUG-48701] QCursor::bitmap() and QCursor::mask() can now return
++ by-value instead of by-pointer.
++
++ - QFont:
++ * Deprecated QFont::ForceIntegerMetrics and QFont::OpenGLCompatible,
++ with the intention of removing them in Qt 6.0.0.
++
++ - QMarkdownWriter:
++ * [QTBUG-80603] Code blocks are no longer word-wrapped; the beginning
++ fence of a code block no longer has a space before the language string;
++ and the ending fence is no longer skipped in some cases where it was.
++
++ - QPdfWriter:
++ * New API to provide external document XMP metadata and attach files to
++ PDF.
++
++ - QTabletEvent:
++ * QTabletEvent::device() is deprecated, because the plan is to return
++ an object pointer in Qt 6 rather than an enum. The enum is now provided
++ by deviceType().
++ * hiResGlobalX() and hiResGlobalY() are deprecated, because globalPosF()
++ has the same resolution. But globalPosF() (and several others) will
++ probably be renamed in Qt 6. The replacements are not in place yet.
++ * [QTBUG-77826] Local coordinates are now correct when the event is
++ delivered to a nested window on X11.
++
++ - Text:
++ * Fixed a problem where pixel sizes would be truncated before calculating
++ glyph positions.
++ * Fixed an issue with QFont::PreferNoShaping where boxes would appear in
++ place of unprintable characters.
++ * Fixed a problem where certain bold fonts would be synthetically
++ emboldened by Qt when using the Freetype font engine.
++
++ - Application palettes are now resolved against the platform's theme
++ palette, the same way widget palettes are resolved against their parents,
++ and the application palette. This means the application palette reflected
++ through QGuiApplication::palette() may not be exactly the same palette as
++ set via QGuiApplication::setPalette().
++
++ ****************************************************************************
++ * QtWidgets *
++ ****************************************************************************
++
++ - Added QStyleOptionTabV4 as a subclass of QStyleOptionTab so that the
++ tab's index information can be obtained.
++
++ - ItemViews:
++ * [QTBUG-76423] The convenience views QList/Table/TreeWidgetItem now
++ treat a default constructed QBrush or QSize as an empty QVariant which
++ allows resetting of the values set to it's default values.
++
++ - QApplication:
++ * The globalStrut property has been deprecated and will be removed from
++ Qt 6.
++
++ - QButtonGroup:
++ * Added signals idClicked/Pressed/Released/Toggled that replace the
++ deprecated signal overloads.
++
++ - QComboBox:
++ * QComboBox got a new property 'placeholderText'
++ * Support checkable items in styles that use a popup for the dropdown.
++ * the SizeAdjustPolicy value AdjustToMinimumContentLength is deprecated,
++ use AdjustToContents or AdjustToContentsOnFirstShow instead.
++
++ - QGraphicsView:
++ * Fixed a bug where hover events would not be delivered if the item was
++ added while blocked by a modal panel.
++
++ - QLabel:
++ * [QTBUG-48701] QLabel::pixmap() and QLabel::picture() can now return
++ by-value instead of by-pointer.
++
++ - QLineEdit:
++ * Inputmask X character now requires non-blank input.
++
++ - QMenu:
++ * a popup menu hides when a QWidgetAction added to it fires the
++ triggered signal.
++
++ - QShortcut:
++ * QShortcut ctor has now pointer to member function overloads
++
++ - QStyle:
++ * You can now set the CSS property 'icon' on a QPushButton to override
++ which icon to draw.
++
++ - QSystemTrayIcon:
++ * On macOS, clicking on the message will remove the notification.
++
++ - QTabWidget/QTabBar:
++ * Tabs can now be hidden with setTabVisible
++
++ - QWidget:
++ * Fonts and palette settings are inherited by children from their
++ parents even if the children have application-wide platform theme
++ overrides.
++
++ - QWizard:
++ * visitedPages has been deprecated, use visitedIds instead.
++
++ ****************************************************************************
++ * QtNetwork *
++ ****************************************************************************
++
++ - A new signal introduced to report when a valid session ticket is received
++ (TLS 1.3)
++
++ - SSL:
++ * Removed OpenSSL 1.0.x support, now 1.1.x is required
++ * The minimum required version of OpenSSL is now 1.1.1.
++
++ - QSslCertificate:
++ * [QTBUG-72587] Add overload of fromPath that does not make use of
++ QRegExp and deprecate the QRegExp variant.
++
++ ****************************************************************************
++ * QtSql *
++ ****************************************************************************
++
++ - QMYSQL:
++ * Removed support for MySql < 5.0 since 5.0 was released 14 years ago.
++ * The QMYSQL plugin can now be build with the MariaDB C connector libs
++ on Windows.
++
++ - QSqlDriver:
++ * The one-arg version of QSqlDriver::notifcation() is now deprecated.
++
++ ****************************************************************************
++ * QTestLib *
++ ****************************************************************************
++
++ - The formerly named 'xunitxml' test reporter has been renamed to what it
++ actually is: a JUnit test reporter, and is now triggered by passing -o
++ junitxml to the test binary.
++
++ ****************************************************************************
++ * QtXml *
++ ****************************************************************************
++
++ - [QTBUG-76177] SAX classes are now deprecated. Use QXmlStreamReader,
++ QXmlStreamWriter in QtCore instead.
++
++ ****************************************************************************
++ * Configure *
++ ****************************************************************************
++
++ - Add switch "-coverage source-based" to enable clang's "source-based" code
++ coverage feature. This can be used for code coverage analysis.
++
++ - X11:
++ * [QTBUG-67277][QTBUG-30939] The minimal required version of libxcb now
++ is 1.11.
++ * [QTBUG-67277][QTBUG-30939] Removed -qt-xcb, -system-xcb, -xkb,
++ -xcb-xinput switches.
++
++ ****************************************************************************
++ * cmake *
++ ****************************************************************************
++
++ - Fixed an issue where some Qt location and declarative plugins whose name
++ did not end with "Plugin" where not imported by the corresponding Qt
++ component package.
++
++ ****************************************************************************
++ * Third-Party Code *
++ ****************************************************************************
++
++ - libjpeg-turbo was updated to version 2.0.4
++
++ - X11:
++ * [QTBUG-67277][QTBUG-30939] Removed all bundled XCB libs, with the
++ exception of xcb-xinput, which is not available on systems with libxcb
++ 1.11.
++
++ ****************************************************************************
++ * Platform Specific Changes *
++ ****************************************************************************
++
++ - Linux:
++ * Enable accessibility on Linux when Orca is started by hand
++ * [QTBUG-78754] Vulkan is now supported by eglfs (eglfs_viv backend) on
++ i.MX8 devices with the Vivante graphics stack. This is done via
++ VK_KHR_display so no windowing system is required.
++
++ - X11:
++ * [QTBUG-67277][QTBUG-30939] XKB and XInput2 now are mandatory
++ dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11
++ releases. XCB-XInput is not part of libxcb 1.11 releases, but Qt
++ builders can use the -bundled-xcb-xinput switch.
++
++ - Android:
++ * [REVERTED] Qt::MaximizeUsingFullscreenGeometryHint window flag is
++ now supported, and will make the window fullscreen, but keep the
++ system UI on-screen, with a translucent background color.
++ * [QTBUG-82120] Use native file dialog by default for open and save
++ operations.
++
++ - Windows:
++ * Fixed a bug where some fonts would not be accessible by
++ referencing their typographic name.
++ * Fixed a 2 pixel offset on glyphs when using color fonts or any
++ hinting preference other than the default (full) hinting.
++
++ - WebAssembly:
++ * Updated emscripten to version 1.39.8