Revision control

++ Qt 5.12 introduces many new features and improvements as well as bugfixes
++ over the 5.11.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.12 series is binary compatible with the 5.11.x series.
++ Applications compiled for 5.11 will continue to run with 5.12.
++
++ 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 *
++ ****************************************************************************
++
++ - QtCore:
++ * [QTBUG-34460] qFatal() no longer uses std::abort() on Windows, as
++ there are circumstances where global destructors are still run after
++ that call, leading to possible deadlocks.
++ - QRegularExpression:
++ * [QTBUG-66781] Regular expressions are now automatically optimized
++ (including JIT compiling) on their first usage. The pattern options
++ OptimizeOnFirstUsageOption and DontAutomaticallyOptimizeOption no
++ longer have any effect, and will get removed in a future version of
++ Qt. QRegularExpression::optimize() can be still used to compile and
++ optimize the regular expression in advance (before any match), if
++ needed.
++ - QDataStream:
++ * [QTBUG-59978][QTBUG-67995] version bumped up to 18 to account for
++ changes in the serialization of QGradient.
++ - Dialogs:
++ * QFileSystemModel now uses QRegularExpression internally for wildcard
++ matching. Note that QRegularExpression might not give the exact same
++ result as QRegExp as its implementation follows strictly the glob
++ patterns definition for wildcard expressions.
++
++ ****************************************************************************
++ * Third-Party Code *
++ ****************************************************************************
++
++ - Sources of xcb-xinput 1.13 were bundled and are available via -qt-xcb.
++ - The minimal required version of libxcb is now 1.9. Bundled xcb sources
++ were updated to libxcb 1.9.1 built with xcb-proto 1.8.
++ - [QTBUG-67654] Updated CLDR to version 33.1
++ - [QTBUG-71144] Updated CLDR to version 34
++ - [QTBUG-66561][QTBUG-70008] double-conversion got updated to upstream
++ version 3.1.1.
++ - libjpeg-turbo was updated to version 2.0.0
++ - libpng was updated to version 1.6.35
++ - Sqlite was updated to version 3.25.2
++ - [QTBUG-71109] updated bundled libxkbcommon 0.4.1 -> 0.8.2 (up to
++ 31f1f355700870c6615399fbfa7934934b3a9a57)
++ - PCRE2 was updated to version 10.32.
++ - Added documentation for the SLJIT part of pcre2, which is available
++ under the BSD-2-Clause license.
++
++ ****************************************************************************
++ * Tools *
++ ****************************************************************************
++
++ - rcc:
++ * Added a --list-mapping option which shows a mapping of resource paths
++ to file system paths.
++
++ - qmake
++ * New CONFIG options lrelease and embed_translations were added.
++ CONFIG+=lrelease does run lrelease on translation files listed in
++ TRANSLATIONS and EXTRA_TRANSLATIONS. CONFIG+=embed_translations does
++ include the generated .qm files as resources under :/i18n/.
++
++ - uic
++ * [QTBUG-65251][QTBUG-51602] The -no-stringliteral option is now
++ deprecated and UIC will not generate QStringLiteral anymore.
++
++ ****************************************************************************
++ * QtCore *
++ ****************************************************************************
++
++ - Added support for CBOR:
++ * Added QCborStreamReader and QCborStreamWriter, classes for low-level
++ reading and writing of CBOR streams.
++ * Added QCborValue, QCborArray and QCborMap, classes that permit DOM-like
++ access to CBOR data. The API is similar to QJsonValue, QJsonArray and
++ QJsonObject, respectively.
++
++ - QByteArray:
++ * Added QByteArray::isUpper() and QByteArray::isLower() to check if a
++ byte array contains only uppercase or only lowercase Latin1 letters.
++ * Added compare(), which takes Qt::CaseSensitivity as one of the
++ parameters. This function is more efficient than using toLower() or
++ toUpper() and then comparing.
++ * [QTBUG-66187] QByteArray::toInt(), QByteArray::toDouble() and the
++ other number conversion functions now ignore leading and trailing
++ whitespaces, as their QString counterparts already did. For
++ consistency reasons, the same behavior was added to
++ qEnvironmentVariableIntValue() also.
++
++ - QCommandLineParser:
++ * [QTBUG-70174] Fixed a bug that caused the help output to show two
++ options or more in the same line if the options didn't have a
++ description.
++
++ - QCryptographicHash:
++ * Add a static method, hashLength, which returns the length of the
++ output of a hash function in bytes.
++
++ - QDir:
++ * QDir now uses QRegularExpression internally for wildcard matching.
++ Note that QRegularExpression might not give the exact same result as
++ QRegExp as its implementation follows strictly the glob patterns
++ definition for wildcard expressions. Nevertheless, the tests for QDir
++ return the same results as before.
++ * QDir::tempPath() now reports the canonical path of the temporary
++ directory, with any symlinks resolved.
++ * On Windows, QDir::drives() no longer returns drives whose media were
++ ejected.
++
++ - QExplicitlySharedDataPointer:
++ * [QTBUG-66635][QTBUG-66946] Added operator== for nullptr.
++
++ - QFile:
++ * [QTBUG-13470] When opening a file, if Truncate is asked for, or
++ implied by other flags, it shall be attempted, regardless of what
++ other options are selected. We previously did this on Windows; now we
++ do so also on Unix (even when appending).
++
++ - QFileSystemWatcher:
++ * [QTBUG-69320] Fixed a bug that caused addPaths() to crash on Windows
++ if adding a path to be watched on removable storage, if that
++ addPaths() was called on a thread not created by QThread and no
++ QEventLoop has been created yet.
++
++ - QFlags's operator| for enum types in the Qt namespace are now declared
++ in the Qt namespace itself.
++
++ - QLocale:
++ * [QTBUG-57802] Added support for World and Europe as (numeric)
++ "country" codes ("territory" in CLDR terms), thereby enabling support
++ for Yiddish and Esperanto, among other locales using such codes.
++
++ - Logging:
++ * [QTBUG-69548] Qt will now accept qtlogging.ini files written by
++ QSettings.
++
++ - QMetaType can now register constructor for a set of dynamic types.
++
++ - QRegularExpression:
++ * Implemented support for wildcard patterns through a static method.
++ * QRegularExpression now provides anchoredPattern() which is a helper
++ function to build regular expressions used for exact matching.
++ * Implemented support for wildcard patterns. Warning: QRegularExpression
++ might not give the exact same result as QRegExp as its implementation
++ follows strictly the glob patterns definition for the wildcard
++ expressions.
++
++ - [QTBUG-62894] Introduced QScopeGuard.
++
++ - QSharedDataPointer:
++ * [QTBUG-66635][QTBUG-66946] Added operator== for nullptr.
++
++ - QSortFilterProxyModel:
++ * [QTBUG-46810] QSortFilterProxyModel now supports QRegularExpression.
++ * Setters of both the filterRegExp and filterRegularExpression
++ properties are now slots and can be used with the old as well as the
++ new syntax.
++
++ - QString:
++ * Added the functions QString::isUpper() and QString::isLower() to check
++ if a string contains only uppercase or only lowercase letters.
++
++ - QTextCodec:
++ * [QTBUG-56203] QTextCodec automatically deregisters on destruction now.
++
++ - QTimer:
++ * [QTBUG-69800] Fixed singleShot() methods that lacked proper "const"
++ qualification to QObject context receivers.
++ * Added QTimer::connectTo(), a shorthand way of connecting to the
++ timeout() signal.
++
++ - QTranslator:
++ * [QTBUG-31031] It is now possible to load qm files without any
++ translations. This is particularly useful for the language the
++ untranslated strings are written in; logic to load translations can
++ now handle the source language like all other languages.
++
++ - QUndoStack:
++ * [QTBUG-40040] Exposed canUndo, canRedo, undoText, redoText and clean as
++ Q_PROPERTYs.
++
++ - QUrl:
++ * Fixed a bug that caused QUrl::matches to incorrectly compare two URLs
++ with different hostnames or different usernames as equal, if certain
++ QUrl::RemoveXxx options were passed.
++
++ - other:
++ * Added an overload of q{To,From}{Big,Little}Endian that operates on a
++ memory region.
++ * Added the QT_TR_N_NOOP(), QT_TRANSLATE_N_NOOP(), and
++ QT_TRANSLATE_N_NOOP3() macros for numeral dependent delayed
++ translation.
++
++ ****************************************************************************
++ * QtGui *
++ ****************************************************************************
++
++ - QBitmap:
++ * Added overloaded QBitmap::fromImage that takes QImage rvalue.
++
++ - QDocumentWriter:
++ * [QTBUG-63581] QDocumentWriter now supports table borders, table
++ alignment, table width, column widths, line height and image
++ resolution when exporting QTextDocuments to ODF files.
++
++ - QGradient:
++ * [QTBUG-59978][QTBUG-67995] Added ObjectMode coordinate mode.
++
++ - QGuiApplication:
++ * [QTBUG-26413] Fixed queryKeyboardModifiers() on macOS to actually return
++ the current modifier key state.
++
++ - QImage:
++ * [QTBUG-45858] QImage now supports 64bit image formats with 16 bits per
++ color channel, compatible with 16bpc PNG or RGBA16 OpenGL formats.
++
++ - QIntValidator:
++ * [QTBUG-59650] Input value with over the highest acceptable value, but
++ with no more digits than the maximum value, is now considered
++ intermediate.
++
++ - QOpenGLShader:
++ * [QTBUG-66074] QOpenGLShader has been fixed to expose geometry and
++ tessellation evaluation/control shaders with OpenGL ES 3.2.
++
++ - QPagedPaintDevice:
++ * The default constructor has been deprecated since that class is
++ not meant to be used standalone. The two public but internal
++ devicePageLayout() methods are now deprecated.
++
++ - QPainter:
++ * [QTBUG-67248] Fixed drawTiledPixmap() and texture-brush painting with
++ high-DPR images.
++ * QPainter::drawTiledPixmap() now tiles in the device independent
++ coordinate system.
++
++ - QPicture:
++ * [QTBUG-71208] Fixed a crash reading malformed picture file.
++
++ - QStandardItemModel:
++ * itemData does not return role 255 any more.
++
++ - QTextImageFormat:
++ * Added two new functions to the class: setQuality(int=100) and
++ quality(). They are currently used by QTextODFWriter to determine the
++ image type and quality when exporting images to ODT files.
++
++ - Text:
++ * [QTBUG-57479] Non-breaking spaces are now displayed as a degree symbol
++ when QTextOption::ShowTabsAndSpaces is used.
++ * [QTBUG-69085] Fixed position of text cursor set by clicking outside
++ the bounds of a text line that ends with a surrogate pair or ligature.
++ * [QTBUG-70293] Fixed a crash that can happen when calling a setter on a
++ QTextCursor after its QTextDocument has been deleted.
++
++ ****************************************************************************
++ * QtNetwork *
++ ****************************************************************************
++
++ - Added DTLS over UDP support.
++
++ - QPasswordDigestor:
++ * [QTBUG-30550] Added QPasswordDigestor
++
++ - QSslKey:
++ * [QTBUG-17718] The OpenSSL backend can now load encrypted PKCS#8
++ DER-encoded keys.
++ * [QTBUG-59068] Added support for PKCS#8-encoded keys in the generic SSL
++ back-end (used for SecureTransport on macOS and for WinRT). Note that
++ it does not support keys encrypted with a PKCS#12 algorithm.
++
++ - QSslSocket:
++ * Enabled ALPN (and thus HTTP/2 negotiation) in SecureTransport backend
++ (macOS).
++ * [QTBUG-69420] Implemented renegotiation for SecureTransport backend.
++
++ - SSL:
++ * The OpenSSL 1.1 backend also works with OpenSSL 1.1.1 (and thus can
++ negotiate TLS 1.3).
++ * [QTBUG-68156] OpenSSL >= 1.0 is now required to build Qt with OpenSSL
++ support.
++
++ ****************************************************************************
++ * QtSql *
++ ****************************************************************************
++
++ - MySQL:
++ * Now supports MySQL versions >= 8.0.1.
++ * [QTBUG-57028] The TIME data type is now treated like a string-based
++ type in order to respect the full range of the TIME data type.
++
++ ****************************************************************************
++ * QtTest *
++ ****************************************************************************
++
++ - QCOMPARE:
++ * Now outputs contents of std::tuple on failure.
++ * [QTBUG-65845] QtTest now prints values of QFlags that failed to compare.
++
++ ****************************************************************************
++ * QtWidgets *
++ ****************************************************************************
++
++ - Itemviews:
++ * [QTBUG-12129][QTBUG-14949][QTBUG-57891] Fixed eliding of multi-line
++ items.
++
++ - QAbstractSpinBox:
++ * [QTBUG-67380] The Qt::ControlModifier now increases the number of steps a
++ QAbstractSpinBox takes for the following interactions: scrolling, up/down
++ keyboard keys and the spin box buttons. Previously, Qt::ControlModifier
++ only affected scrolling.
++
++ - QApplication:
++ * [QTBUG-67736] QApplication no longer sends a mouse move event to the
++ entered widget if it sends synthetic enter and leave events.
++
++ - QHeaderView:
++ * [QTBUG-23203] Padding/margin is now taken into account when the text gets
++ elided.
++ * [QTBUG-59501] The qss padding attribute is now honored in all cases.
++ * [QTBUG-62091] The size of the decoration is now taken into account in
++ paintSection().
++ * [QTBUG-65017] The drag'n'drop indicator is now using the correct font.
++ * [QTBUG-69431] setDefaultSectionSize() now checks if the given value is
++ inside min/max section size.
++ * [QTBUG-70084] The section indicator is now high-DPI-aware.
++
++ - QItemDelegate:
++ * [QTBUG-16134] Fixed text height calculation when the item has a
++ decoration or checkbox.
++
++ - QLineEdit:
++ * [QTBUG-44046] The textEdited() signal is now emitted even if the
++ QValidator has changed the user input.
++ * [QTBUG-57448] Added inputRejected() signal for when a key press is not
++ accepted by the QLineEdit. For instance, when an invalid key is
++ pressed for a validator set.
++
++ - QListView:
++ * [QTBUG-27110] The pseudo states :first/:middle/:last are now respected.
++ * [QTBUG-56606] Added itemAlignment property.
++ * [QTBUG-67440] Fixed a bug that caused items on internal move to be
++ deleted.
++
++ - QMenu:
++ * [QTBUG-69199] Removed icon highlight when a stylesheet was applied by
++ the application.
++
++ - QMessageBox:
++ * [QTBUG-35545] On Android and iOS it's now possible to show a
++ QMessageBox with custom buttons as a native dialog.
++
++ - QSpinBox/QDoubleSpinBox:
++ * Added an option for adaptive decimal step size.
++
++ - QSplashScreen:
++ * [QTBUG-43081] The alignment when the message is passed as HTML is now
++ correctly honored.
++
++ - QStyle:
++ * QStyle::SH_SpinBox_StepModifier allows the developer to pick which
++ keyboard modifier increases the number of steps a QAbstractSpinBox
++ takes for the following interactions: scrolling, up/down keyboard keys
++ and the spin box buttons. The Qt::ShiftModifier can now be used, or
++ the feature can be disabled using Qt::NoModifier. Previously, only
++ Qt::ControlModifier could be used as the modifier.
++
++ - QTabBar:
++ * [QTBUG-18146] Fixed mixed up CSS pseudo class for left and right.
++
++ - QTableView:
++ * [QTBUG-48244][QTBUG-49548] Fixed calculating geometries for editors.
++ * [QTBUG-70215] Fixed PageUp not getting to top when first row is hidden.
++
++ - QTableWidget:
++ * Fixed handling of Qt::EditRole and Qt::DisplayRole in setItemData().
++
++ - QTreeView:
++ * [QTBUG-39486] Sped up expanding items when pressing asterisk.
++
++ - QWidget:
++ * [QTBUG-68393][QTBUG-69619][QTBUG-10907] Fixed several bugs that
++ incorrectly reordered tabs for compound widgets under some special
++ circumstances.
++ * [QTBUG-65199] enterEvent() and leaveEvent() now occur when a hovering
++ drawing tablet stylus enters or leaves a widget.
++ * Added the Qt::WA_StyleSheetTarget attribute to indicate that a widget
++ was affected by a style sheet.
++
++ ****************************************************************************
++ * Android *
++ ****************************************************************************
++
++ - Added Android edit context menu.
++ - Removed old debugging bridge. To be able to debug Qt on Android apps the
++ user must use QtCreator 4.6.1+.
++ - [QTBUG-63735] The system no longer restarts the application when the user
++ replaces SIM card or changes the logical density of the screen.
++ - [QTBUG-70280] ARM64 builds now default to android-21 instead of failing.
++ - [QTBUG-35545] QMessageBox now supports buttons with custom labels.
++
++ ****************************************************************************
++ * Linux *
++ ****************************************************************************
++
++ - QFileDialog will use the native dialogs provided by the platform theme
++ instead of trying to use Flatpak portal to select directories.
++
++ ****************************************************************************
++ * macOS *
++ ****************************************************************************
++
++ - QtGui:
++ * [QTBUG-63800] Fixed display of condensed fonts when NoFontMerging is
++ in use.
++
++ - Text:
++ * [QTBUG-69955] Fixed font weights on macOS 10.14.
++
++ ****************************************************************************
++ * Windows *
++ ****************************************************************************
++
++ - [QTBUG-55762] The dimensions of invisible margins inside the frames of
++ Windows 10 windows will now be disregarded in the positioning of Qt
++ windows to avoid a misplaced look (offset by a few pixels from the
++ expected position).
++ - [QTBUG-44964][QTBUG-60437] The application attributes
++ AA_CompressTabletEvents and AA_CompressHighFrequencyEvents are now
++ supported on Windows 8 and above for touch/pen input, with the same
++ defaults as on X11 (compress touch events, don't compress tablet events)
++
++ - QTimeZone:
++ * [QTBUG-42021] Changed MS-Win to use ICU for time-zone data, when
++ available, in preference to MS's TZ APIs. The choice is made when
++ building Qt. This will give reliable results when non-DST transitions
++ arise, or when a zone's DST is not simple (e.g. interrupted by
++ Ramadan).
++
++ ****************************************************************************
++ * winrt *
++ ****************************************************************************
++
++ - Added support to Windows UI Automation to the WinRT QPA, allowing
++ Qt-based UWP applications to operate with accessibility and
++ programmatic UI control tools.
++
++ ****************************************************************************
++ * X11 *
++ ****************************************************************************
++
++ - [QTBUG-39624] The xcb plugin was ported to use libxcb-xinput instead of
++ libXi for XInput2 support. The -xinput2 configure option was replaced by
++ -xcb-xinput.