Revision control

++ Qt 5.8 introduces many new features and improvements as well as bugfixes
++ over the 5.7.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.8 series is binary compatible with the 5.7.x series.
++ Applications compiled for 5.7 will continue to run with 5.8.
++
++ 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.
++
++ This release contains all fixes included in the Qt 5.7.1 release.
++
++ ****************************************************************************
++ * License Changes *
++ ****************************************************************************
++
++ Static libraries that are linked into executables (winmain and
++ qopenglextensions) are now licensed under BSD _and_ commercial licenses.
++
++ ****************************************************************************
++ * Deprecation Notice *
++ ****************************************************************************
++
++ - The following platforms or toolchains are deprecated and will be
++ removed as of Qt 5.9:
++ * Apple OS X Mavericks (v10.9)
++ * Apple iOS 7.x
++
++ Deprecated platforms and toolchains continue to work until removed.
++
++ - The Q_OBJECT_CHECK macro is deprecated and will be removed in Qt 6. The
++ internal, template function qt_check_for_QOBJECT_macro that it created in
++ QObject-derived classes will be removed in Qt 5.9.
++
++ ****************************************************************************
++ * Important Behavior Changes *
++ ****************************************************************************
++
++ - Support for the following platforms was removed in this version:
++ * Apple OS X Mountain Lion (v10.8)
++ * Apple iOS 6.x
++
++ configure & build system
++ ------------------------
++
++ - The configuration system has been rewritten almost from scratch. This
++ improved the consistency between builds on Unix and Windows, but some
++ subtle unintended behavior changes are also possible. Also, some
++ obsolete options have been entirely removed and will now cause errors.
++ - It is not permissible any more to manually #define QT_NO_<FEATURE>
++ anywhere. Instead, configure's -no-feature-* options must be used.
++ Note that this does not apply to defines which modify behavior rather
++ than entirely removing features.
++ - Configure test results are now cached. Use -recheck or -recheck-all
++ to discard them.
++ - [QTBUG-32530][QTBUG-42962] The Unix configure won't pick up CFLAGS and
++ related environment variables any more. Instead, it now accepts QMAKE_*
++ variable assignments on the command line.
++ - [QTBUG-52266] Configure won't pick up QMAKESPEC from the environment
++ any more. Use the -platform option instead.
++ - Device and simulator libraries are now combined on Apple device
++ platforms (iOS). This means that there will no longer be any
++ *_simulator.a libraries and the simulator architectures will simply
++ reside alongside the device architectures in a single Mach-O file.
++ - [Darwin] Project files may not override QMAKE_MAC_SDK any more.
++
++ QtCore
++ ------
++
++ - qFatal will now use std::abort to terminate the application on all
++ operating systems. Previously, ::abort() or ::exit(1) were called,
++ depending on the operating system.
++ - QLibraryInfo::licensee()/licensedProducts() were deprecated and
++ return empty strings now.
++ - Destroying a QThread which is still running will now result in
++ immediate and abnormal program termination.
++
++ QtGui
++ -----
++
++ - [QTBUG-54936] QFont::toString() and QFont::key() were modified to save
++ the font's style name if one is set, invalidating any stored font
++ identifiers. QFont::fromString() was also adjusted to accommodate the
++ change.
++
++ QtNetwork
++ ---------
++
++ - Proxies from system settings will now be used by default. Configure
++ with -no-system-proxies to disable.
++ - [QTBUG-53649] libproxy is now turned off by default. Configure with
++ -libproxy in order to enable it again.
++
++ ****************************************************************************
++ * Library *
++ ****************************************************************************
++
++ QtCore
++ ------
++
++ - Disambiguated the relational operators comparing QByteArray with
++ QStringRef (and vice versa).
++ - Added qHash() overloads for QHash, QMultiHash.
++ - Added QDeadlineTimer, a counterpart to QElapsedTimer, used to mark a
++ time point in the future (a deadline) and determine whether such a
++ deadline has passed.
++ - Qt now relies on type traits from the C++11 standard library.
++ - [QTBUG-54981] Added Q_NAMESPACE, which can be used to add Q_ENUM_NS/
++ Q_ENUMS, Q_FLAG_NS/Q_FLAGS and Q_CLASSINFO to a namespace.
++ - Q_IS_ENUM was deprecated. Use std::is_enum<>::value instead.
++
++ - QChar:
++ * Added missing operator{<,>,<=,>=} comparing against QLatin1String and
++ QStringRef.
++ * Added missing operator{==,!=} comparing against QLatin1String.
++
++ - QCommandLineOption:
++ * Added flags() and setFlags() methods. Added ShortOptionStyle and
++ HiddenFromHelp flags.
++
++ - QDateTime:
++ * Introduced toSecsSinceEpoch, fromSecsSinceEpoch and setSecsSinceEpoch
++ functions, which use 64-bit integers to represent the number of
++ seconds.
++ * The toTime_t, fromTime_t and setTime_t functions are deprecated and
++ will be removed in Qt 6.0. For new code, use the equivalent functions
++ with "SecsSinceEpoch" in the name, or the equivalent ones with
++ millisecond accurancy that have existed since Qt 4.7.
++ * Added string formatting type Qt::ISODateWithMs.
++
++ - QFileInfo:
++ * QFileInfo now reports file times with millisecond precision on Unix
++ systems.
++
++ - QFileSystemWatcher:
++ * [QTBUG-55896] Fixed a bug that caused QFileSystemWatcher to mis-handle
++ file paths that contained non-US-ASCII characters on Apple platforms.
++
++ - QJsonDocument:
++ * [QTBUG-39751] fromVariant can now take a QVariantHash argument.
++ * Fixed a number of bugs that could cause crashes when loading corrupt
++ binary JSON data.
++
++ - QJsonValue:
++ * [QTBUG-43077] QJsonValue(Null).toVariant() now returns a QVariant of
++ type QMetaType::Nullptr instead of an invalid QVariant.
++
++ - QLatin1String:
++ * Added at(), operator[](), mid(), right(), left().
++
++ - QLibraryInfo:
++ * Added QLibraryInfo::version(), which returns the current version of
++ the Qt library as a QVersionNumber object.
++
++ - QLine/QLineF:
++ * Added center().
++
++ - QLockFile:
++ * Fixed a bug that caused QLockFile to over-sleep while waiting for the
++ lock file to become available.
++
++ - QMetaType:
++ * std::nullptr_t is now a built-in Qt metatype.
++
++ - QModelIndex:
++ * QModelIndex::child has been deprecated due to its lack of generality.
++ Use model->index(row, column, index) instead.
++
++ - QMutex:
++ * QMutex now fully models the TimedLockable concept by providing the
++ try_lock, try_lock_for and try_lock_until functions, therefore making
++ it usable in Standard Library lock management classes and functions.
++
++ - QObject:
++ * The QT_NO_NARROWING_CONVERSIONS_IN_CONNECT macro has been added. When
++ using the new connection syntax (PMF-based) this macro makes it
++ illegal to narrow the arguments carried by the signal, and/or to
++ perform floating point to integral implicit conversions on them. When
++ the macro is defined, depending on your compiler a QObject::connect()
++ statement triggering such conversions will now fail to compile.
++
++ - QPersistentModelIndex:
++ * QPersistentModelIndex::child has been deprecated due to its lack of
++ generality. Use model->index(row, column, index) instead.
++
++ - QStringList:
++ * Added join(QLatin1String) overload.
++
++ - QStringRef:
++ * Added missing operator{<,>,<=,>=} comparing against QLatin1String and
++ QString.
++
++ - QSysInfo:
++ * The output of QSysInfo::prettyProductName now includes the Windows
++ OS/kernel version number. In case of future versions of Windows, a
++ valid string is now returned.
++
++ - QSettings:
++ * [QTBUG-56124] Fixed a bug that caused QSettings to fail on Apple
++ platforms when strings with embedded null (\0) bytes were present
++
++ - QSharedPointer:
++ * [QTBUG-52369] Fixed a bug that caused QSharedPointer to fail to compile
++ if it was initialized with a nullptr literal.
++ * Fixed a bug that made QSharedPointer delete the pointer it held with the
++ wrong destructor if the type of the QSharedPointer and that of the object
++ passed on the constructor were different. Its behavior is now the same as
++ std::shared_ptr.
++
++ - QStandardPaths:
++ * [QTBUG-55507] Fixed the QStandardPaths::FontsLocation on XDG systems to
++ be $XDG_DATA_DIR/fonts.
++ * Fixed handling of potential paths that do not exist on Windows. Now,
++ QStandardPaths may return storage locations that may not exist on all
++ platforms.
++
++ - QTimer:
++ * Added support for std::chrono duration objects for QTimer methods,
++ like QTimer::singleShot and QTimer::setInterval.
++
++ - QWaitCondition:
++ * Added notify_one() and notify_all() to make QWaitCondition be usable from
++ algorithms that use the Standard Library naming convention.
++
++ QtDBus
++ ------
++
++ - QDBusConnection:
++ * Fixed a bug that would cause QDBusConnection::connect() to return true
++ if a slot was already connected to the same D-Bus signal. QtDBus does
++ not support multiple connections.
++
++ QtGui
++ -----
++
++ - [QFileDialogOptions/QFontDialogOptions/QMessageDialogOptions/
++ QColorDialogOptions] These classes no longer have value semantics, but
++ need to be held in QSharedPointer (as they always were). To copy an
++ instance, use the clone() method.
++ - QOpenGLTextureBlitter, a utility class to draw textured quads, has been
++ made public.
++ - [QTBUG-38825] Fixed QTextEdit to match undo functionality of QLineEdit
++ to group two sequential inserts into one undo action.
++ - [QTBUG-51844] Added rotation and uniqueId properties to
++ QTouchEvent::TouchPoint. This is mainly for the benefit of the TUIO
++ plugin so far: it now supports tracking physical objects (fiducials)
++ on the touchscreen surface, as long as the object's ID can fit in a
++ 64-bit integer. QPointingDeviceUniqueId is a wrapper for the ID,
++ designed to be extensible to support other types of IDs in the future.
++ - [QTBUG-52510] A stationary touchpoint event is delivered if its
++ velocity changes. This is to ensure that the application will be
++ notified when a TUIO fiducial object comes to rest.
++ - [QTBUG-53076] Add QGuiApplication::applicationDisplayNameChanged()
++ signal.
++
++ - QAbstractTextDocumentLayout:
++ * Added imageAt() and formatAt() methods, which respectively can be used
++ to retrieve the source link of the image under the cursor, or the
++ QTextFormat of the text under the cursor.
++
++ - QFont:
++ * [QTBUG-48043] The default value of QFont::stretch() is now 0 to
++ indicate any default stretch is acceptable.
++
++ - QRegion:
++ * Is now iterable as a container of QRects: added {c,}{r,}{begin,end}().
++
++ - Text handling:
++ * [QTBUG-51411] Fixed performance hit from showing large QTextDocuments
++ in a QTextEdit or QTextBrowser. (Regression introduced in Qt 5.3.0)
++ * [QTBUG-50090] Fixed line spacing with some scalable fonts containing
++ bitmaps with the Freetype font engine.
++ * [QTBUG-56346] Fixed QStaticText when manually breaking lines and no
++ text width was set.
++ * [QTBUG-56659] Fixed a regression where raster fonts on Windows were
++ detected as smoothly scalable and thus rendering with said fonts in Qt
++ Quick would break.
++ * [QTBUG-51223] Fixed synthesized oblique for non-latin text on
++ platforms using the basic font database, such as Android.
++ * [QTBUG-56672] Fixed list of supported sizes for bitmap fonts on
++ Windows.
++ * [QTBUG-56714] Fixed a bug where a no-break space would sometimes cause
++ the first character of the containing line to not be displayed.
++ * [QTBUG-55856] Fixed rendering of large fonts when a device pixel ratio
++ is set and the Freetype engine is used.
++
++ QtNetwork
++ ---------
++
++ - Added QNetworkDatagram class, along with new function receiveDatagram()
++ in QUdpSocket that returns it, and an overload to writeDatagram() that
++ can accept it.
++ - Added QSctpServer and QSctpSocket classes. Note that these need to be
++ explicitly enabled via a configure option.
++ - [QTBUG-50956] Added support for HTTP/2 protocol
++
++ - QSslSocket:
++ * [QTBUG-39077] TLS PSK ciphers are possible in server sockets.
++ * It is now possible to set custom Diffie-Hellman parameters for
++ QSslSocket-based servers.
++
++ - QTcpServer:
++ * [QTBUG-51288] It is now possible to use QTcpServer with an externally
++ created QTcpSocket.
++
++ QtSql
++ -----
++
++ - QSqlDatabase:
++ * When connecting to a MySQL server whose version is 5.5.3 or higher,
++ the default connection charset is now utf8mb4 instead of utf8 to allow
++ 4-byte UTF-8 encodings.
++
++ - SQLite:
++ * Added notification feature to SQLite driver
++
++ QTestLib
++ --------
++
++ - [QTBUG-44030] Added QTest::createTouchDevice() for use in autotests
++ which generate touch events.
++ - Added ref-cycles perf counter.
++ - QFETCH variables can now be declared const (QFETCH(const T, name)).
++ - It is now possible to use variables of types with an explicit operator
++ bool in the QVERIFY macro.
++
++ QtWidgets
++ ---------
++
++ - QFormLayout:
++ * [QTBUG-15990] Added removeRow(), takeRow().
++
++ - QMainWindow:
++ * [QTBUG-56628] Fixed crash using takeCentralWidget when the central
++ widget was not set.
++
++ ****************************************************************************
++ * Platform-specific Changes *
++ ****************************************************************************
++
++ - Added technology preview support for Apple tvOS and Apple watchOS.
++ - Added initial support for Microsoft Visual Studio 2017, which uses the
++ mkspec "win32-msvc2017". Full support will happen after the final release
++ of that compiler.
++
++ Android
++ -------
++
++ - [QTBUG-48948] Show password while typing is now supported
++ - [QTBUG-55035][QTBUG-50759] Introduced a mechanism to forward
++ permission related callbacks on Activity objects to interested
++ parties.
++
++ Apple platforms
++ ---------------
++
++ - Added QImage::toCGImage() that returns a CGImage.
++ - Added functions that convert Qt types QPoint/QPointF, QRect/QRectF and
++ QSize/QSizeF to and from CGPoint, CGRect and CGSize. Note that QPoint,
++ QRect and QSize do not provide fromCGXxx functions since that would
++ silently lose precision.
++
++ iOS
++ ---
++
++ - Precompiled headers are now supported on iOS.
++ - Starting from iOS 10, Apple requires all apps that need access to photos
++ to have the key 'NSPhotoLibraryUsageDescription' in the Info.plist.
++ Therefore, to get the same support in Qt (when, e.g., using a file
++ dialog), the Info.plist assigned to QMAKE_INFO_PLIST will need this key
++ as well.
++
++ macOS
++ -----
++
++ - Speech to text dictation now works for Qt text input.
++ - [QTBUG-33708] Fixed underline position in font rendering.
++
++ Linux
++ -----
++
++ - [QTBUG-39959] QWidget-based applications running on the eglfs platform
++ plugin can now request 180 or 90 degrees rotated output by setting the
++ QT_QPA_EGLFS_ROTATION environment variable.
++ - KDE/Gnome themes now implement QPlatformTheme::fileIconPixmap(), showing
++ file icons.
++
++ Windows
++ -------
++
++ - [QTBUG-31476] QFactoryLoader now filters potential plugins by the
++ ".dll" suffix.
++ - [QTBUG-56239] 'What's this' button is now shown by default only for
++ QWidget dialogs.
++ - [QTBUG-53833] QProcess::startDetached() changed behavior on Windows:
++ it no longer creates a new console window unconditionally, instead it
++ passes the same creation flags to CreateProcess as QProcess::start().
++
++ - Text handling:
++ * [QTBUG-54740] Fixed embedding fonts in PDF when dpi scaling is active
++ or when the hinting preference was none or vertical hinting.
++ * [QTBUG-47485] Fix selecting non-regular fonts when using the Freetype
++ engine.
++ * [QTBUG-49346] Fixed rendering error when using the MingLiU fonts at
++ certain combinations of pixel size and scale.
++
++ ****************************************************************************
++ * Tools *
++ ****************************************************************************
++
++ configure & build system
++ ------------------------
++
++ - The -no-feature-* option family was integrated with the rest of the
++ configuration system. Numerous existing features were made optional,
++ and build problems in various reduced configurations were fixed.
++ This is an ongoing effort known as "Qt Lite".
++ - Numerous Qt modules outside qtbase now support configure options.
++ In a module-by-module build, these can be passed to qmake itself,
++ after a -- option.
++ - Introduced the qtConfig(<feature>) qmake function to replace the
++ patterns contains(QT_CONFIG, <feature>) and load(qfeatures)+
++ contains(QT_DISABLED_FEATURES, <feature>).
++ Likewise, the C++ macro QT_CONFIG(<feature>) was introduced to
++ replace the pattern !defined(QT_NO_<FEATURE>).
++ The old methods are effectively deprecated and will stop working at
++ some point in the near future.
++ - Use of -sysroot will now trigger a cross-build even if -platform and
++ -xplatform are the same.
++ - The JPEG & GIF handlers and the SQL drivers are now always built as
++ plugins, even in static builds (static "plugins" in this case).
++ - [GCC] Include paths from system libraries are now marked as such,
++ resulting in fewer warnings the user cannot do anything about.
++ - [Windows] config.status.bat is now created, like on Unix.
++ - [QTBUG-46974] Fixed location of config.status in top-level builds.
++ - [QTBUG-38792][Unix] The -redo option is now accepted, like on Windows.
++ - It's now possible to add more arguments when -redo is used. Note that
++ these arguments are not saved in turn. Likewise for config.status.
++ - [QTBUG-32896][iOS/clang] Added missing CFBundleIdentifier to library
++ template.
++ - [QTBUG-47624] Fixed abort when some, but not all, XCB dependencies
++ are met. The feature is now disabled instead, as expected.
++ - [QTBUG-50838] The Raspberry Pi EGL detection now uses pkg-config.
++ - [QTBUG-52112][Android] Plugins now have a SONAME, as required by
++ Android 6+.
++ - [QTBUG-54438] Fixed launching tests, examples, and build tools in
++ some configurations.
++ - [QTBUG-56289][GCC@Windows] Fixed -separate-debug-info.
++ - [QTBUG-57086] Added support for Visual Studio 2017.
++
++ qdbusxml2cpp
++ ------------
++
++ - [QTBUG-34126] qdbusxml2cpp now supports the --verbose switch, which
++ provides more details when parsing invalid XML sources.
++
++ qmake
++ -----
++
++ - Added the $$take_first(), $$take_last(), $$num_add(), $$str_size(),
++ $$str_member(), and $$sorted() functions.
++ - The error() function can now be called without arguments to exit
++ silently. Use after write_file() and similar functions which already
++ print an error message.
++ - The $$system() function can return the command's exit code now.
++ - The $$prompt() function can now print the prompt verbatim.
++ - QMAKE_EXTRA_TARGETS will now consistently treat the target as a file
++ name (separator adjustment and quoting).
++ - [QTBUG-16904][VS] Fixed warning about circular dependencies when
++ Q_OBJECT is used in .cpp files.
++ - [QTBUG-36256] packageExists() and PKGCONFIG can now be used
++ regardless of whether Qt itself was built with pkg-config support.
++ - [QTBUG-43468][WinRT] Added option to use verbatim manifest files.
++ - [QTBUG-53905] Fixed OBJECTIVE_SOURCES being moc'd twice.
++ - [QTBUG-55591][VS2015] Added support for the /DEBUG:FASTLINK option.
++ - [QTBUG-56507] Fixed parallel builds when a lex source refers to a
++ file generated from a yacc source.
++ - [QTBUG-56594][MSVC] Fixed PDB files not being installed for static
++ libraries.
++
++ moc
++ ---
++
++ - [MSVC] qmake and moc now cooperate to use the Visual Studio environment
++ variables (set by the VCVARSALL.BAT script) to find system include
++ files. A possible consequence is that moc parses application headers
++ slightly differently, depending on #if conditions that depended on
++ macros that previous versions had not seen #define'd. Implementers of
++ other buildsystems are advised to pass the --compiler-flavor=msvc option
++ to moc.