Revision control

++ Qt 5.4 introduces many new features and improvements as well as bugfixes
++ over the 5.3.x series. For more details, refer to the online documentation
++ included in this distribution. The documentation is also available online:
++
++
++ The Qt version 5.4 series is binary compatible with the 5.3.x series.
++ Applications compiled for 5.3 will continue to run with 5.4.
++
++ 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.
++
++ ****************************************************************************
++ * Deprecation Notice *
++ ****************************************************************************
++
++ - The Q_COMPILER_xxx macros for C++14 compiler features introduced in Qt
++ 5.3 are deprecated and will not be updated for new compilers either.
++ User code should be changed to use the macros from Standing Document 6
++ instead:
++ This does not affect C++11 feature macros.
++
++ ****************************************************************************
++ * Important Behavior Changes *
++ ****************************************************************************
++
++ - QExplicitelySharedDataPointer's copy constructor which performs a
++ static_cast from "X *" to "T *" (when constructing a
++ QExplicitlySharedDataPointer<T> from a QExplicitlySharedDataPointer<X>)
++ doesn't perform a static_cast from "X *" to "T *" any more. Instead, an
++ implicit cast is now performed. This change will break compilation of code
++ that relied on the downcast (i.e. cast towards a more derived type) of the
++ templated type when copy constructing a QExplicitelySharedDataPointer
++ object. Please refer to the class documentation for more information about
++ this issue and a workaround to keep old code compiling.
++ - QImageReader now automatically rotates JPEG images according to Exif
++ orientation
++ - [QTBUG-18980] HarfBuzz-NG is now the default shaper on all platforms.
++ This results in a better shaping results for various languages, better
++ performance, and lower memory consumption.
++ - [QTBUG-41858] Changed QStringRef::right() to be consistent with
++ QString::right(). The function now returns the N right-most characters,
++ like the documentation already claimed.
++ - The mutable Java-style iterators like QListMutableIterator and
++ QHashMutableIterator no longer set the parent container to unsharable
++ mode. If you create a copy of the container being iterated on after the
++ iterator, any changes done with the iterator might affect the copy too.
++
++ - Logging (including qDebug and qWarning):
++ * Support for the deprecated environment variables QT_NO_JOURNALD_LOG
++ and QT_ANDROID_PLAIN_LOG has been removed. Instead, set
++ QT_LOGGING_TO_CONSOLE to 1 to force logging to the console (stderr).
++ Set that variable to 0 to force logging to the system-specific event
++ log (if any).
++ * [QTCREATORBUG-12564] Log output will now go to the system log (if
++ support for it was compiled into Qt) if the application has no
++ controlling terminal or console window. Set QT_LOGGING_TO_CONSOLE to 1
++ to force logging to go to stderr.
++
++ - QSettings:
++ * [QTBUG-41812] QSettings::value() now returns an invalid QVariant when
++ passing an empty key. The code path ran into an assert, which was only
++ noticeable in debug builds.
++ * [QTBUG-21739] The locking mechanism inside QSettings has changed
++ and is no longer compatible with the one of previous versions of
++ Qt. There might be corruption if two applications running different
++ versions of Qt are writing to the same config file at the same
++ time. You must also now have write permissions in the directory
++ containing the settings file in order to write settings.
++
++ ****************************************************************************
++ * Library *
++ ****************************************************************************
++
++ QtConcurrent
++ ------------
++
++ - [QTBUG-17220] run() now optionally takes as its first argument the
++ QThreadPool to run the task on.
++
++ QtCore
++ ------
++
++ - Added QEnableSharedFromThis, a class that allows obtaining a
++ QSharedPointer for an object already managed by a shared pointer.
++ - Added qHashBits() to aid implementing qHash() overloads for custom
++ types.
++ - Added new QByteArrayList class.
++ - Added QStorageInfo class to retrive information about mounted volumes
++ and drives
++
++ - Logging:
++ * QT_MESSAGE_PATTERN can include a backtrace using %{backtrace}
++ * QT_MESSAGE_PATTERN can include a timestamp using %{time}. By
++ default, this shows the time in ISO format (YYYY-MM-DDTHH:mm:ss),
++ but a different format string can be specified in the tag (e.g.,
++ %{time YYYYMMDDHHmmsszzz}). If the format is "process", Qt will
++ display the elapsed time since the process started.
++ * Added QtMsgType argument to QLoggingCategory constructor and
++ Q_LOGGING_CATEGORY macro that controls the default category
++ configuration.
++ * File, line, function information are not recorded anymore for logging
++ statements in release builds. Set QT_MESSAGELOGCONTEXT explicitly to
++ enable recording in all configurations.
++
++ - QAbstractProxyModel:
++ * [QTBUG-39549] QAbstractProxyModel now forwards the drop-related API.
++
++ - QByteArray:
++ * Added convenience methods to convert directly to and from std::string.
++ * Fixed a bug that would cause QByteArray to stop converting toUpper or
++ toLower at the first embedded null character.
++
++ - QCommandLineParser:
++ * Added addOptions() method.
++
++ - QElapsedTimer:
++ * Is no longer a POD; its default constructor now initializes the object to
++ an invalid QElapsedTimer
++
++ - QFlags:
++ * [QTBUG-39786] Added initializer_list constructor
++
++ - QFuture:
++ * [QTBUG-17220] Can now be used with any QThreadPool, not just
++ globalInstance().
++
++ - QPair:
++ * Can now be used in C++11 constexpr contexts.
++
++ - QSaveFile:
++ * Now follows symbolic links when writing to a link instead of
++ replacing the link with the contents.
++
++ - QSettings:
++ * [QTBUG-21739] Fixed data loss while writing the config to the disk
++ fails.
++
++ - QStandardPaths:
++ * [QTBUG-38483] QStandardPaths now has new enumeration values
++ AppDataLocation, AppLocalDataLocation to be able to differentiate
++ between roaming and local paths on the Windows operating system.
++ DataLocation is deprecated in favor of AppDataLocation.
++
++ - QString:
++ * QString can now split a string to a list of QStringRef.
++ * Added the QStringRef::split() function
++
++ - QTextStream:
++ * QTextStream now uses group separators when writing floating-point
++ numbers when the locale is not the C locale. The old behavior can be
++ restored by setting QLocale::OmitGroupSeparator on the locale.
++
++ - QTimer:
++ * [QTBUG-26406] Implemented new style connect syntax, including
++ functors, in QTimer::singleShot
++
++ - QUrl:
++ * QUrl::fromLocalFile now returns an empty URL if the input string is
++ empty.
++
++ - QVariant:
++ * [QTBUG-40363] Fixed ordered comparison between QVariants that do not
++ match but produce identical toString output.
++
++ - QVector:
++ * Added removeOne() and removeAll() for QList compatibility.
++
++ - QWeakPointer:
++ * Added lock() method for std::weak_ptr compatibility.
++ * Added member-swap function.
++
++ - QtJson:
++ * [QTBUG-26606] QJsonArray and QJsonObject now supports C++11
++ initializer lists.
++
++ - QtMath:
++ * Introduced qNextPowerOfTwo methods.
++
++ QtDBus
++ ------
++
++ - Blocking calls that take a long time will now generate a warning. The
++ time taken may be tuned using the environment variables
++ Q_DBUS_BLOCKING_CALL_MAIN_THREAD_WARNING_MS and
++ Q_DBUS_BLOCKING_CALL_OTHER_THREAD_WARNING_MS. The value represents (in
++ milliseconds) how long before a blocking call is warned about. A value
++ below zero disables the warning, a value of zero will warn about all
++ blocking calls.
++
++ QtGui
++ -----
++
++ - Added QPixelFormat class.
++ - Added QOpenGLWidget class.
++ - Added QOpenGLWindow class.
++ - Added QRasterWindow class.
++ - QOpenGLContext is now able to adopt existing native contexts.
++ - [QTBUG-38168] QtGui's OpenGL headers are now automatically including the
++ highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds.
++ - [QTBUG-36483] Dynamic OpenGL implementation loading is now supported on
++ Windows. This requires Qt to be configured with -opengl dynamic.
++ - [QTBUG-39583] Keymaps are now changeable at runtime when using eglfs.
++ - [QTBUG-40841] environment variable QT_DBL_CLICK_DIST customizes the
++ amount of movement allowed when detecting a double click.
++ - [QTBUG-37552] The eglfs mouse cursor properly resets the array buffer
++ from now on to avoid rendering issues.
++ - [QTBUG-40093] QWindow::close() is changed to send a QCloseEvent which
++ must be accepted before destroy() will be called.
++
++ - Clipboard:
++ * [QTBUG-41852] Fixed a memory leak in setMimeData() when the platform
++ plugin did not support the requested mode.
++
++ - Painting:
++ *[QTBUG-41413] Fixed some very rare cases of mismatched raster modes
++ in QPainter.
++
++ - QEvent:
++ * [QTBUG-38858] The debug output for events has been significantly
++ improved.
++
++ - QFont:
++ * [QTBUG-22814][QTBUG-22946] QFont now serializes its data properly,
++ without any data loss.
++
++ - QGuiApplication:
++ * Add support for -icon command line argument on X11, add -qwindowicon
++ on all platforms.
++ * Added QGuiApplication::screenRemoved signal to inform that a screen
++ has been removed, before Qt reacts to it.
++
++ - QImage:
++ * [QTBUG-25998] Added support for 10-bit per color channel image
++ formats.
++
++ - QImageReader now automatically rotates JPEG images according to Exif orientation
++
++ - QOpenGLBuffer:
++ * [QTBUG-38168] Added QOpenGLBuffer::mapBufferRange().
++
++ - QOpenGLFramebufferObject:
++ * Introduced an argument to QOpenGLFramebufferObject::toImage() to save
++ mirroring the result.
++ * Added support 10-bit per color channels formats as the internal
++ framebuffer format, making it possible to render in that precision.
++
++ - QOpenGLTextureCache:
++ * Added support for uploading common QImage formats directly to OpenGL,
++ if supported by the OpenGL implementation.
++
++ - QPicture:
++ * [QTBUG-20578] QPicture now serializes its data properly by also
++ accounting for QDataStream versions greater than Qt 4.5.
++
++ - Tablet support:
++ * [QTBUG-39458] Added buttons to QTabletEvent.
++ * [QTBUG-39666] Events correctly identify the tool.
++ * [QTBUG-39570][QTBUG-40469] Corrected valuator ranges across platforms.
++ * Better support for non-Wacom devices.
++ * Better manual test to verify more features.
++
++ - Text:
++ * [QTBUG-41372] Fixed regression when rendering Uchen text in WebKit
++ on Windows.
++ * Fixed use of uninitialized memory in the FreeType font engine
++
++ QtNetwork
++ ---------
++
++ - QNetworkAccessManager:
++ * Fixed behavior of upload QIODevice that generate data on readyRead()
++ for HTTP PUT/POST
++
++ - QSsl:
++ * QSsl::SecureProtocols now also excludes SSLv3
++
++ - QSslCertificate:
++ * Can now be used as a key in QSet/QHash.
++
++ - QSslError:
++ * Can now be used in QSet/QHash.
++
++ - QSslSocket:
++ * [QTBUG-28471] Added support for finding the version of SSL/TLS in
++ use by a connection.
++ * Added accessors for the version of OpenSSL used at build-time. This
++ will help when debugging problems caused by a mismatch with the
++ run-time version.
++ * [QTBUG-1565] Support for loading PKCS#12 bundles was added. These are
++ often used to conveniently transport keys and certificates,
++ particularly when making use of client certificates.
++
++ QtPrintSupport
++ --------------
++
++ - QPrinter:
++ * [QTBUG-11332] Added duplex support for Windows and OS X.
++
++ QtSql
++ -----
++
++ - ibase: Fixed memory corruption due to LONG being 4 bytes in firebird.
++
++ - QSqlDriver:
++ * Add support for determining DBMS type from SQL driver using
++ QSqlDriver::dbmsType()
++
++ QtTest
++ ------
++
++ - Tests now output build information.
++
++ QtWidgets
++ ---------
++
++ - All widgets with a setReadOnly method now send a ReadOnlyChange event
++ (e.g., for app-specific palette changes)
++ - [QTBUG-32888] Accessibility for widgets is now included in the widget
++ library instead of being a separate plugin. For static builds this means
++ that libqtaccessiblewidgets is no longer required.
++ - [QTBUG-39814] Accessors for Qt::MouseEventSource and Qt::MouseEventFlags
++ are now available in QGraphicsSceneMouseEvent.
++
++ - QComboBox:
++ * [QTBUG-33537] Fixed positions of items when QComboBox is set as
++ editable in Fusion style.
++ * [QTBUG-33537] Fixed updating appearance of popup menu when changing
++ the editable state of the combo box.
++
++ - QDialog / Windows:
++ * [QTBUG-2027] Dialogs can now be menuless.
++
++ - QGraphicsScene:
++ * Added the minimumRenderSize property which can be used to speed up
++ rendering by not painting items smaller than a give size.
++ * The removal of items when using the linear index is now more
++ efficient.
++
++ - QLayout:
++ * [QTBUG-37673] Widgets and dialogs containing layouts with
++ heightForWidth (such as a label with word wrap) will no longer get a
++ minimum size of 0x0.
++
++ - QLineEdit:
++ * [QTBUG-40287] The signal textEdited() is now emitted when the user
++ clicks the clear button created by setClearButtonEnabled() as well.
++
++ - QMainWindow:
++ * [QTBUG-40410] Dock widgets will now be resized properly when the
++ central widget has a fixed size.
++
++ - QPlainTextEdit:
++ * [QTBUG-36415] Fixed a crash when using full width selections and
++ issuing a complex undo command chain which removes and inserts an
++ empty block in one go.
++ * [QTBUG-40347] Fixed a possible divide by zero crash when font metrics
++ were missing for the font.
++
++ - QTabBar:
++ * Added changeCurrentOnDrag property.
++
++ - QTableView / QTableWidget:
++ * [QTBUG-29239] currentIndex() now reflects the top left cell when in a
++ span.
++
++ - QTreeView:
++ * Indentation is now style-dependent by default.
++ * Added resetIndentation().
++
++ - Styles:
++ * Allow overriding standardIcon() in a proxy style
++
++ ****************************************************************************
++ * Platform Specific Changes *
++ ****************************************************************************
++
++ - Several QPA logging categories are added under qt.qpa to enable logging
++ of various platform-specific details. qt.qpa.input is now used
++ consistently.
++
++ Android
++ -------
++
++ - [QTBUG-36019] Enable using native style also when Ministro deployment
++ mechanism is not in use.
++ - [QTBUG-29069] Release all windows when the application is suspended.
++ - Added Gradle support to build the APK.
++ - [QTBUG-39688] Back key no longer kills the application when no window is
++ visible.
++ - [QTBUG-41365] Default open-source license for Qt for Android is now
++ LGPLv3. For compatibility with the LGPLv2.1 license, add
++ "-no-android-style-assets" to your configuration.
++ - [QTBUG-32399] Input panels are now hidden when focus changes to an object
++ that does not accept input.
++ - [QTBUG-41854] Added support for QClipboard::clear()
++ - [QTBUG-41852] Fixed memory leak in QClipboard::setMimeData()
++ - [QTBUG-41817] QClipboard::mimeData() now returns an empty object instead
++ of null pointer from QClipboard when clipboard is empty for consistency
++ with other platforms.
++ - New bearer plugin. It's now possible to get more information about the
++ different network configurations on Android.
++ - Important Behavior Changes:
++ * [QTBUG-36274] The main event loop is now stopped when the app is
++ suspended
++
++ iOS
++ ---
++
++ - [QTBUG-39097] Accessibility was added to the iOS platform port. This
++ enables Qt applications to be read by VoiceOver on iOS devices.
++ - [QTBUG-42276] Fixed path to QStandardPaths::DataLocation. Until now,
++ DataLocation was pointing to the Document directory. With this patch,
++ it will return the more accurate Library/Application Support.
++ Applications making use of DataLocation should move these data to the
++ new location. This can be done using the path provided by
++ DocumentLocation as the source path.
++ - [QTBUG-41458] screen resolution update after device rotation now works.
++ - [QTBUG-42345] fixed crash on startup on iOS 7.1
++ - iOS is now using fat builds with both 32-, and 64-bit support.
++ - New launch screen added to support iPhone6/6+.
++ - QtQuick Controls now support native text selection and popup menus.
++ - Virtual keyboard visibility is now automatically managed by the platform plugin.
++ - Default theme fonts now uses Dynamic Type, which is based on user system settings.
++
++ Linux/XCB
++ ---------
++
++ - [QTBUG-35832] Fixed transparency of tray icons in cases where there
++ is no alpha channel or system tray visual.
++ - environment variables QT_XCB_DEBUG_XINPUT and
++ QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and replaced with logging
++ categories qt.qpa.input and qt.qpa.input.devices respectively
++ - [QTBUG-39572] Wacom touch devices are now working correctly.
++ - [QTBUG-42249] A path to a font file can now contain non-Latin characters.
++
++ OS X
++ ----
++
++ - OS X 10.6 is no longer supported.
++ - OS X 10.10 is now supported.
++ - QMacStyle has been updated with better OS 10.10 support.
++ - The Qt binary packages are now configured with C++11 enabled.
++ - [QTBUG-41208] Fixed detection of writing system support in fonts for
++ some scripts such as Mkhedruli.
++ - Fixed menu item shortcuts without keyboard modifiers.
++ - [QTBUG-31301] Drag-and-drop QMimeData requests are now delayed until
++ drop time.
++ - [QTBUG-10899] Added support for ApplicationState
++ capability. Application can now detect when an application states
++ have changed as well when the dock icon has been clicked.
++
++ - Fonts:
++ * [QTBUG-40986][QTBUG-40549] Fixed missing glyph box shown in place of
++ some uncommon Unicode code points.
++
++ Windows
++ -------
++
++ - [QTBUG-38259] Changed configure defaults so that Qt5Core does not link
++ against ICU libraries anymore. Pass '-icu' to enable it.
++ - [QTBUG-35432][QTBUG-23687] Command line parsing on Windows now uses
++ the WinAPI function CommandLineToArgvW() to exactly match the quoting
++ behavior used by the majority of applications.
++
++ - Fonts:
++ * [QTBUG-41783] Fix off-by-one in font descent when using the
++ DirectWrite font engine.
++ * [QTBUG-39961] Set default fallback font to MS Shell Dlg 2 instead of
++ Arial.
++
++ ****************************************************************************
++ * Compiler Specific Changes *
++ ****************************************************************************
++
++ - Release builds with Microsoft Visual Studio 2013 now enable the
++ standard-conforming C and C++ strict string behavior. This option will
++ be enabled in all builds with future Visual Studio versions.
++ Non-conforming code should be fixed for maximum portability and
++ for more information.
++
++ ****************************************************************************
++ * Tools *
++ ****************************************************************************
++
++ - [QTBUG-30900] The obsolete findtr script was removed.
++
++ configure & build system
++ ------------------------
++
++ - The -process/-fully-process/-dont-process configure options have been
++ removed due to being unnecessary and counterproductive.
++ - [QTBUG-36955] The -vcproj configure option was removed. Use "qmake -r -tp vc"
++ _after_ building Qt in case you want to use Visual Studio to work on Qt.
++ - [QTBUG-37961] Qt plugins contain version info again.
++ - [QTBUG-39216] Fixed more cases where the Qt build would pick up headers
++ from a pre-existing Qt installation.
++ - [QTBUG-41267] Fixed parallelized (jom) -debug-and-release builds.
++
++ moc
++ ---
++
++ - Fixed "zero as null pointer constant" warnings in moc's generated
++ code.
++
++ qmake
++ -----
++
++ - [QTBUG-21910][Unix] Added 'make dist' target for SUBDIRS projects.
++ - [QTBUG-32895][iOS] Fixed structure of bundles. They can be signed now.
++ - [QTBUG-26782][VS] Fixed handling of TARGET_EXT.
++ - [QTBUG-30712][VS] Fixed handling of QMAKE_LIBFLAGS.
++ - [QTBUG-30373][VS] Using different RESOURCES in different build variants
++ no longer produces invalid vcxproj files.
++ - [QTBUG-37520][VS] Made it possible to suppress qmake warnings about
++ unknown compiler options. CONFIG+=suppress_vcproj_warnings.
++ - [QTBUG-37363][MSVC2012+] embed_manifest_exe is now properly supported.
++ - [QTBUG-41504][MSVC2012+] Building DLLs targeting Windows XP is now
++ supported. As a side effect, Windows CE makespecs must not add /ENTRY: to
++ QMAKE_LFLAGS_CONSOLE any more. The flag is hard-coded in console.prf now.
++ - [QTBUG-35318][Xcode] Fixed QMAKE_BUNDLE_DATA's path resolution.
++ - [QTBUG-39527] Fixed qtCompile() when used with jom -jN.
++ - QMAKE_EXTRA_COMPILERS' commands and depend_command are no longer mangled.
++ Use $$shell_path() and $$shell_quote() to prepare the commands correctly.
++ - Added link-time optimization support for Clang, GCC and ICC. CONFIG+=ltgc.
++
++ rcc
++ ---
++
++ - rcc now supports an optional, two-pass compilation that improves build
++ times for large resource bundles. This feature can be enabled by adding
++ "CONFIG += resources_big" to your .pro file. Note that this feature may
++ interfere with builds that enable link-time code generation or other
++ optimization techniques.
++
++ ****************************************************************************
++ * Third-party libraries *
++ ****************************************************************************
++
++ - ANGLE has been upgraded to version 2.1, bringing partial support for
++ OpenGL ES3 over Direct3D 11, numerous bug fixes, and several new vendor
++ extensions.
++ - [QTBUG-40649][QTBUG-40658][QTBUG-41031][QTBUG-41081][QTBUG-41308][QTBUG-
++ 41563] ANGLE updated to 2.1~f8602ad91e4f
++ - [QTBUG-41031] The ANGLE D3D11 renderer is now enabled by default. Systems
++ which cannot use the new renderer will automatically fall back to the D3D9
++ renderer at runtime.