Revision control

++ Qt 5.10 introduces many new features and improvements as well as bugfixes
++ over the 5.9.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.10 series is binary compatible with the 5.9.x series.
++ Applications compiled for 5.9 will continue to run with 5.10.
++
++ 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 *
++ ****************************************************************************
++
++ - [QTBUG-60857] The names of the roles returned by
++ QSqlQueryModel::roleNames now only include a name for the
++ Qt::DisplayRole. Previously all the roles names of QSqlQueryModel were
++ returned.
++ - QFileInfo on empty strings now behaves like the default-constructed
++ QFileInfo. Notably, path() will now be the empty string too, instead of
++ ".", which means absoluteFilePath() is no longer the current working
++ directory.
++
++ - QTemporaryFile:
++ * rename() no longer attempts to do block copying, as that usually
++ indicates a mistake in the user's code. Instead, either create the
++ temporary file in the same directory as the new name to be, or use
++ QSaveFile.
++ * On Linux, QTemporaryFile will attempt to create unnamed temporary
++ files. If that succeeds, open() will return true but exists() will be
++ false. If you call fileName() or any function that calls it,
++ QTemporaryFile will give the file a name, so most applications will
++ not see a difference.
++
++ - Windows:
++ * [QTBUG-62662] On Windows, a drag & drop operation of local file URIs,
++ like QListView items backed by a QFileSystemModel, will result in the
++ attachment or opening of the files by the target application, instead
++ of the creation of hyperlinks.
++
++ ****************************************************************************
++ * General Notes *
++ ****************************************************************************
++
++ Deprecation Notice
++ ------------------
++
++ - Starting with Qt 5.10, IPv6 support is mandatory for all platforms.
++ Systems without proper IPv6 support, such as the getaddrinfo() function
++ or the proper socket address structures, will not be able to build
++ QtNetwork anymore.
++
++ - QSignalMapper is now marked as deprecated.
++
++ Potentially Source-Incompatible Changes
++ ---------------------------------------
++
++ - QByteArray:
++ * qbytearray.h no longer includes qstring.h. In particular, this means
++ that in order to use QStringBuilder with QByteArray, you need to
++ include both qbytearray.h and qstring.h now (or <QByteArray> and
++ <QString>, resp.).
++
++ - QStaticText:
++ * The QStaticText(const QString &) constructor is now explicit.
++
++ Third-Party Code
++ ----------------
++
++ - PCRE2 has been updated to version 10.30.
++ - Replaced bundled libjpeg by libjpeg-turbo 1.5.2
++ - Improve documentation about Freetype 2 licenses.
++ - Sqlite was updated to version 3.20.1
++
++ ****************************************************************************
++ * Library *
++ ****************************************************************************
++
++ QtCore
++ ------
++
++ - Added qHash(QStringView).
++ - [QTBUG-37253] Added QMetaObject::invokeMethod() overloads for function
++ pointers.
++ - [QTBUG-41006] Added qEnvironmentVariable, which returns the value of an
++ environment variable in a QString, while qgetenv continues to be used to
++ return it in a QByteArray. For Unix, since most environment variables
++ seem to contain path names, qEnvironmentVariable will do the same as
++ QFile::decodeName, which means NFC/NFD conversion on Apple OSes.
++ - [QTBUG-62915] qAddPostRoutine() and qRemovePostRoutine() are now
++ thread-safe.
++
++ - Containers:
++ * Added an STL-like iterator to go through QHash/QMap returning both the
++ key and the value of the element pointed to. That lets QHash/QMap
++ interoperate better with stl's algorithms like std::set_union.
++
++ - JSON:
++ * QJsonArray, QJsonDocument, QJsonObject and QJsonValue now have move
++ operations and a swap() member function.
++
++ - Logging:
++ * If you set QT_FATAL_WARNINGS to a number n > 1, Qt will stop the
++ application on that n-th warning, instead of on the first. For the
++ sake of compatibility with previous versions, if the variable is set
++ to any non-empty and non-numeric value, Qt will understand it as "stop
++ on first warning".
++
++ - QByteArray:
++ * Added shrink_to_fit() for compatibility with the Standard Library. This
++ function does the same as squeeze().
++
++ - QChar:
++ * Added constructors from char16_t and, on Windows, wchar_t.
++
++ - QCoreApplication:
++ * [QTBUG-57095] Calling QCoreApplication::translate() is now
++ thread-safe.
++
++ - QCryptographicHash:
++ * [QTBUG-59770] In order to preserve compatibility with earlier versions
++ of Qt, QCryptographicHash is now able to calculate Keccak message
++ digests. Please see the release notes for Qt 5.9.2 for more details.
++
++ - QDate/QTime/QDateTime:
++ * Added toString() overloads taking the format as a QStringView.
++ * [QTBUG-22833] Added support for parsing of time-zones.
++
++ - QDebug:
++ * Added streaming of QStringViews.
++
++ - QFile:
++ * [QTBUG-984] Added fileTime() and setFileTime().
++
++ - QFileInfo:
++ * [QTBUG-984] Added fileTime().
++ * Deprecated created() because it could return one of three different
++ file times depending on the OS and filesystem type, without the
++ ability to determine which one is which. It is replaced by
++ metadataChangeTime() and birthTime().
++ * Added QFileInfo::metadataChangeTime(), which returns the time the
++ file's metadata was last changed, if it is known, and falling back to
++ the same value as lastModified() otherwise. On Unix systems, this
++ corresponds to the file's ctime.
++ * Added QFileInfo::birthTime(), which returns the file's birth time if
++ it is known, an invalid QDateTime otherwise. This function is
++ supported on Windows and on some Unix systems.
++
++ - QIODevice:
++ * Added skip() method to improve performance in read operations.
++
++ - QLatin1String:
++ * Added isEmpty(), isNull().
++ * Added iterators, {c,}{r,}{begin,end}().
++ * Added chopped(), chop(), truncate().
++ * Added startsWith(), endsWith().
++ * Added a constructor taking two pointers, complementing the constructor
++ that takes a pointer and a length.
++ * Added trimmed() function.
++
++ - QLocale:
++ * Added toString(QDate/QTime/QDateTime) overloads taking the format
++ string as a QStringView.
++ * Added QLocale::formattedDataSize() for formatting quantities of bytes
++ as kB, MB, GB etc.
++
++ - QLockFile:
++ * Fixed a bug that would cause QLockFile to mis-identify valid lock
++ files as stale if the application name was set with
++ QCoreApplication::setApplicationName().
++
++ - QMimeType:
++ * Add Q_GADGET, so that QML applications can make use of QMimeType's
++ properties and methods.
++
++ - QObject:
++ * [QTBUG-60339] Added connect() support for move-only function objects.
++
++ - QProcess:
++ * [QTBUG-2058][QTBUG-2284][QTBUG-37656][QTBUG-52405][QTBUG-57687] Added
++ non-static QProcess::startDetached to support more features for
++ detached processes.
++ * [QTBUG-2284] Added the ability to set a custom process environment for
++ detached processes.
++ * [QTBUG-52405] Added the ability to specify native arguments for
++ detached processes on Windows.
++ * [QTBUG-2058][QTBUG-37656] Added support for standard channel
++ redirection using setStandard{Input|Output|Error}File to
++ QProcess::startDetached.
++
++ - QSaveFile:
++ * [QTBUG-47379] Saving to Alternate Data Streams on NTFS on Windows is
++ now possible, but requires setDirectWriteFallback(true).
++
++ - QSemaphore:
++ * Added a new RAII class, QSemaphoreReleaser, to reliably perform
++ release() calls.
++
++ - QSettings:
++ * [QTBUG-47379] Added setAtomicSyncRequired(), which allows one to use
++ QSettings with config files in unwriteable directories or in Alternate
++ Data Streams on NTFS on Windows. This used to work before Qt 5.4, but
++ remains a non-default behavior due to the potential of data
++ corruption.
++
++ - QSortFilterProxyModel:
++ * QSortFilterProxyModel now does not emit an unnecessary layoutChanged()
++ following a model reset.
++
++ - QStandardPaths:
++ * On Windows, QStandardPaths now also looks into
++ "<APPDIR>/data/<APPNAME>" for non-generic paths.
++
++ - QString:
++ * Added arg(QStringView), arg(QLatin1String) overloads.
++ * Added shrink_to_fit(), for compatibility with the Standard
++ Library. This function does the same as squeeze().
++
++ - QString/QStringRef:
++ * Added startsWith(), endsWith() overloads taking QStringView.
++
++ - QString/QStringRef/QByteArray:
++ * Added chopped(n), a const version of chop(n).
++
++ - QString/QStringRef/QByteArray/QLatin1String:
++ * Added front() and back() for STL compatibility.
++
++ - QStringBuilder:
++ * Added support for (non-const) char*.
++
++ - QStringList:
++ * Added contains(QLatin1String) overload.
++
++ - QStringRef:
++ * trimmed() now returns an empty string-ref for an empty input. Before,
++ it would return a null one.
++
++ - QStringView:
++ * New class, superseding const QString and QStringRef as function
++ parameters, accepting a wide variety of UTF-16 string data sources,
++ e.g. u"string", std::u16string{,_view}, and, on Windows, L"string",
++ std::wstring{,_view} without converting to QString first.
++
++ - QTemporaryDir:
++ * The class now supports the "XXXXXX" replacement token anywhere in the
++ template, not just at the end. This behavior is similar to what
++ QTemporaryFile supports.
++
++ - QTextCodec:
++ * Added fromUnicode() and canEncode() overloads taking QStringView.
++
++ - QTextEncoder:
++ * Added fromUnicode() overload taking QStringView.
++
++ - QThread:
++ * Added the QThread::create() function.
++ * An exception escaping from QThread::run() will now result in immediate
++ and abnormal program termination. The same applies if an exception
++ leaves a slot connected directly to the QThread::started() or
++ QThread::finished() signals.
++
++ - QUuid:
++ * Added fromString(QStringView/QLatin1String).
++
++ - QVariant:
++ * QVariants containing pointers will now return true on isNull() if the
++ contained pointer is null.
++
++ - QVarLengthArray:
++ * Added shrink_to_fit(), for compatibility with the Standard Library.
++
++ - QVector:
++ * Added shrink_to_fit(), for compatibility with the Standard Library.
++
++ - QVersionNumber:
++ * Added QStringView and QLatin1String overloads of fromString().
++
++ - QtGlobal:
++ * Q_ASSERT() and Q_ASSERT_X() now always expand to expressions of type
++ void that are usable in constexpr contexts. This makes them usable in
++ both C++11 and C++14 constexpr functions and in comma expressions.
++
++ QtGui
++ -----
++
++ - [QTBUG-55981] Added support for rendering to QWindow via the Vulkan
++ graphics API.
++ - [QTBUG-55981] Added QVulkanWindow, a convenience subclass of QWindow.
++ - Added support for the OpenGL ES 3.2 API in QOpenGLExtraFunctions
++ - [QTBUG-50987] Added support for requesting OpenGL windows with
++ sRGB-capable default framebuffers. While this is implicit on some
++ platforms, QSurfaceFormat now has the necessary flags to request such
++ windows in a cross-platform manner.
++ - High DPI variants of 9-patch images can now be loaded using the
++ following syntax: "foo@2x.9.png"
++ - It's now possible to retrieve the screen at a given point via
++ QGuiApplication::screenAt().
++
++ - Important Behvior Changes:
++ * [QTBUG-56848][QTCREATORBUG-17683] Changed CSS line-height property
++ with multiplier to follow CSS spec
++
++ - Tablet support:
++ * [QTBUG-44964] If the application attribute AA_CompressTabletEvents is
++ set in addition to AA_CompressHighFrequencyEvents, even the
++ QTabletEvents will be compressed (only on the X11 platform so far).
++ AA_CompressHighFrequencyEvents does not enable compression of tablet
++ events by itself, because paint applications typically need to process
++ all possible tablet events in order to draw the smoothest curves.
++
++ - QPA:
++ * [QTBUG-57608] QWindowSystemInterfacePrivate::handleGeometryChange no
++ longer takes the old geometry as an argument.
++
++ - QImage:
++ * QImages can now use more than 2GByte of pixel data.
++
++ - QCursor:
++ * Added equality operators.
++
++ - QImageWriter:
++ * Add QImageWriter::InvalidImageError to communicate invalid attempts to
++ write a bad QImage (for instance, a null QImage).
++
++ - QMovie:
++ * Added lastError and lastErrorString accessors, as a convenience over
++ connecting to the error() signal.
++
++ - QWindow:
++ * setMask() no longer requires the window to be created to have an
++ effect; it can be set at any time.
++
++ - Text:
++ * [QTBUG-56728] Added QFont::PreferNoShaping style strategy to support
++ improvements to performance at the expense of some cosmetic font
++ features.
++
++ - Windows:
++ * [QTBUG-55967] Native menus have been implemented.
++ * A native system tray icon is now available for SystemTrayIcon.
++
++ QtNetwork
++ ---------
++
++ - [QTBUG-56102] QSslSocket can now use a temporary keychain on macOS.
++ - Fixed a proxy-authentication issue, after a wrong password has been used,
++ when supplying the right password.
++
++ - HTTP/2:
++ * [QTBUG-61397] In case of clear text HTTP/2 we now initiate a required
++ protocol upgrade procedure instead of 'H2Direct' connection.
++
++ - QHostInfo:
++ * Added swap() and move operator.
++
++ - QLocalServer:
++ * [QTBUG-55043] Added a function to retrieve the socket descriptor.
++
++ - QNetworkAccessManager:
++ * [QTBUG-63075] Added support for HTTP status 308.
++
++ - QNetworkInterface:
++ * [QTBUG-51922] Changed allAddresses() to not include addresses found in
++ inactive interfaces, matching the user expectations of this function.
++ If those addresses are needed for some purpose, the application can
++ call allInterfaces() and obtain the addresses in each interface.
++
++ - QNetworkProxy:
++ * [QTBUG-45495] Setting of network proxies is now supported on UWP.
++ * [QTBUG-45495] UWP now supports proxies using SOCKS5.
++ * The functions related to QNetworkConfiguration are deprecated. They've
++ performed no action since Qt 5.0, so code using them can safely stop
++ doing so.
++
++ - QSslSocket:
++ * [QTBUG-52905] Added OpenSSL 1.1 backend.
++
++ QtSql
++ -----
++
++ - QSqlError:
++ * Added swap().
++
++ - SQLite:
++ * Named placeholder can now be used. If compiling Qt by hand and using
++ system libraries, this feature requires at least SQLite 3.3.11.
++ * [QTBUG-18084] Added QSQLITE_ENABLE_REGEXP connect option for the SQLite
++ backend. If set, a Qt based regexp() implementation is provided
++ allowing use of REGEXP in SQL statements.
++
++ QtTest
++ ------
++
++ - [QTBUG-53381] Added keySequence() function.
++
++ - QCOMPARE:
++ * Can now be used for mixed-type comparisons.
++ * Now outputs contents of QPair and std::pair on failure.
++ * Now supports printing QStringViews in case of test failures.
++
++ QtWidgets
++ ---------
++
++ - The windowsxp style is no longer available as a separate style, because
++ it did not (and cannot) actually provide an XP-style appearance on
++ currently supported Qt platforms.
++ - Added AA_DisableWindowContextHelpButton attribute. Setting this
++ attribute globally prevents the automatic "What's this" button on
++ dialogs on Windows (WindowsContextHelpButtonHint).
++ - [QTBUG-56860] Fixed widget losing focus after showing menu second time.
++ - [QTBUG-47185][QTBUG-61280] QOpenGLWidget is now able to render and
++ return its content via grabFramebuffer(), QWidget::grab() or
++ QWidget::render() even when the widget has not been made visible.
++ - [QTBUG-10907] When tabbing to a widget with focus proxy, focus will now
++ be given to the proxy rather than just being ignored.
++
++ - ItemViews:
++ * Made it easier to drop above and below items.
++
++ - QAbstractItemView/QTreeWidget/QTableWidget/QListWidget:
++ * [QTBUG-61139] Added isPersistentEditorOpen().
++
++ - QDockWidget:
++ * When QMainWindow::GrouppedDragging and QMainWindow::AllowNestedDocks
++ are both enabled, floating dock widgets now have the ability to be
++ dropped together side by side.
++ * [QTBUG-63526] Fixed an issue in QDockWidgets where the widget would
++ not resize despite showing a resize cursor.
++
++ - QFusionStyle:
++ * The default palette used by the platform-agnostic Fusion style has
++ been desaturated. Previously the window background color, and other
++ colors derived from it, were brown shades. Now these colors are
++ neutral gray that fit better on any desktop.
++
++ - QInputDialog:
++ * [QTBUG-17547] Added setDoubleStep to enable changing of the step
++ amount for getDouble().
++
++ - QLineEdit:
++ * Added selectionEnd(), selectionLength(), complementing
++ selectionStart().
++
++ - QOpenGLWidget:
++ * [QTBUG-50987] Added support for specifying custom internal texture
++ formats in QOpenGLWidget in order to make it possible to have the
++ widget backed by an sRGB-capable framebuffer.
++
++ - QSplashScreen:
++ * All constructors now implicitly set Qt::FramelessWindowHint, not just
++ the (pixmap, flags) one.
++
++ - QWidget:
++ * [QTBUG-10907] QWidget::setTabOrder() will now preserve the local tab
++ order inside a widget if it has a focus proxy set to an inner child.
++
++ - Styles:
++ * Added SH_Widget_Animation_Duration style hint which supersedes
++ SH_Widget_Animate, which is now deprecated.
++
++ - Text:
++ * Introduced tabStopDistance property in QTextOption, QTextEdit and
++ QPlainTextEdit as replacement for the inconsistently named tabStop and
++ tabStopWidth properties. QTextOption::tabStop, QTextEdit::tabStopWidth
++ and QPlainTextEdit::tabStopWidth are now deprecated.
++
++ ****************************************************************************
++ * Platform-specific Changes *
++ ****************************************************************************
++
++ - [QTBUG-60268] Input context is now supported with the offscreen platform.
++
++ Android
++ -------
++
++ - QtLoader: Enabled loading shared libraries from /system/lib or a custom
++ path specified with the android.app.system_libs_prefix metadata variable in
++ AndroidManifest.xml. This supports deploying Qt apps as Android system
++ apps.
++ - [QTBUG-58060] Android dialogs now have more appropriate button layouts,
++ with affirmative actions on the right.
++ - [QTBUG-59175] QWidget::createWindowContainer() is now supported on
++ Android for embedding OpenGL-based QWindows into widget UIs.
++
++ iOS
++ ---
++
++ - [QTBUG-59403] Support added for using the input panel as a trackpad
++ using two-finger swipe.
++ - The minimum deployment target for applications is now iOS 10.0.
++
++ Linux
++ -----
++
++ - Qt uses the statx(2) system call for obtaining file information on
++ kernels 4.12 and later. Some older container systems install system call
++ protection rules that do not include this system call. If you experience
++ problems running Qt applications inside containers (such as the report of
++ a file not existing when it does), ensure the statx(2) is allowed in the
++ container configuration.
++
++ - Linux/XCB:
++ * Added screen product information from EDID.
++
++ - eglfs/KMS:
++ * Screen modes, including current and preferred ones, are now listed.
++ * Added screen product information from EDID.
++
++ Windows
++ -------
++
++ - Accessibility:
++ * MinGW builds now support IAccessible2.
++
++ - Fonts:
++ * [QTBUG-62176] Some key fonts, such as Calibri, were being detected as
++ bitmap fonts and not rendered correctly in Qt Quick. This has now been
++ fixed.
++
++ X11
++ ---
++
++ - Native painting (instead of software rasterization) has been experimentally
++ re-introduced. Enabled by the configure option -xcb-native-painting.
++ - XInput device property changes are now detected at runtime (no
++ application restart required).
++ - [QTBUG-60513][QTBUG-29278][QTBUG-43768][QTBUG-18380] The _NET_WORKAREA
++ atom is used for calculating QScreen::availableGeometry() only on systems
++ with one monitor. In all other cases QScreen::availableGeometry() is
++ equal to QScreen::geometry(). To restore the legacy behavior with
++ untrustworthy values in QScreen::availableGeometry() set
++ QT_RELY_ON_NET_WORKAREA_ATOM=1 in the environment.
++ - The QT_XCB_NO_XI2_MOUSE environment variable is deprecated and will be
++ removed in Qt 6. If your application relies on behavior set by
++ QT_XCB_NO_XI2_MOUSE, it should be updated accordingly.
++
++ - Pointer event delivery on X11 is now done starting from XInput version
++ 2.0 (when available) instead of 2.2. XInput support can be disabled by
++ setting QT_XCB_NO_XI2=1 in the environment; note that doing so will also
++ disable tablet and touch support.
++
++ ****************************************************************************
++ * Tools *
++ ****************************************************************************
++
++ moc
++ ---
++
++ - moc now supports NOTIFY signals of parent classes in Q_PROPERTY
++
++ qmake
++ -----
++
++ - [QTBUG-1581] Introduced the variable OBJECTIVE_HEADERS.
++ - [QTBUG-11117][nmake] Added support for precompiled header also for
++ plain C files.
++ - Added versionAtLeast() and versionAtMost() test functions.
++ - If you use CONFIG+=qmltestcase with no SOURCES, 'make check' will now
++ run qmltestrunner for you.
++ - [Darwin] Added support for Info.plist in non-bundle apps and libs.
++
++ uic
++ ---
++
++ - [QTBUG-51602] Added the no-stringliteral option, to be used for building
++ shared objects which are meant to be unloadable.
++ - Old images embedded in ui files, imported from Qt 3, are now ignored.
++ uic will now behave consistently with Qt Designer - both will ignore
++ them.