diff --git a/dist/changes-5.5.0 b/dist/changes-5.5.0 new file mode 100644 index 0000000000..cba1596940 --- /dev/null +++ b/dist/changes-5.5.0 @@ -0,0 +1,543 @@ +Qt 5.5 introduces many new features and improvements as well as bugfixes +over the 5.4.x series. For more details, refer to the online documentation +included in this distribution. The documentation is also available online: + + http://doc.qt.io/qt-5.5 + +The Qt version 5.5 series is binary compatible with the 5.4.x series. +Applications compiled for 5.4 will continue to run with 5.5. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + http://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Deprecation Notice * +**************************************************************************** + + - Support for the following platforms or toolchains is deprecated in Qt + 5.5 and may be removed or stop compiling in a future version of Qt: + * Apple OS X builds using GNU libstdc++ + * BlackBerry 10 + * GNU Compiler Collection (GCC) versions 4.6 and earlier + * QNX 6.5 + * Microsoft Visual Studio compiler versions 2008 and 2010 + * Microsoft Windows XP, Windows Vista + * Microsoft Windows Embedded Compact 7 + Note: QNX 6.6 continues to be supported. + + - The QtWebKit, QtScript modules and support for the QML 1 language and + QtQuick 1 is deprecated and Qt 5.5 will be the last release to + include them. Starting with Qt 5.6, the source code for those modules + will not be included in Qt's packaging. Compiling the 5.5 release of + those modules along with other, updated Qt 5.6 modules should work. + + - [QTBUG-25121] The usage of the QStyleOptionProgressBar::orientation + member has been deprecated. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + + - Q_ASSERT will now expand the condition even in release mode when asserts + are disabled, albeit in an unreachable code path. This solves compiler + warnings about variables and functions that were unused in release mode + because they were only used in assertions. Unfortunately, codebases that + hid those functions and variables via #ifndef will need to remove the + conditionals to compile with Qt 5.5. + - QDBusConnection::sender() (deprecated since Qt 4.3) has changed to + always return an invalid QDBusConnection. To know what connection the + incoming call was received from, use QDBusContext. + - QHostAddress will no longer convert IPv6 addresses of type "v4-mapped" + to IPv4. To perform this conversion manually, construct another + QHostAddress with the result of toIPv4Address(). + - (DY)LD_LIBRARY_PATH will no longer "stick" in the process environment + when starting a QProcess. This means that if a QProcess is started with + a clear environment, it will not specially inherit (DY)LD_LIBRARY_PATH + from the parent process. This should not affect most applications, but + if the old behavior is desired, one can simply pass a clear + QProcessEnvironment with the (DY)LD_LIBRARY_PATH values added, to the + QProcess. + - QAbstractTableModel and QAbstractListModel now reimplement sibling() + to avoid calling parent() (which returns a constant). Subclasses of + these models that override parent(), will likely also need to + override sibling() now. + + - QCoreApplication: + * [QTBUG-30330][QTSOLBUG-184] On Windows, QCoreApplication::arguments() + now returns a list built from argv on Windows as well if a modified + argv was passed to the class' constructor. + + - QIODevice: + * Opening Android assets with QIODevice::ReadWrite now returns false to + correctly indicate that the files are not writable. + + - QItemDelegate: + * [QTBUG-3305] QItemDelegate will now not close a + QTextEdit/QPlainTextEdit editor when the tab key is pressed; instead, + the key will reach the editor. + + - QProgressDialog: + * [QTBUG-17427][QTBUG-25316] The timer for estimating the duration of + the progress dialog is now started in the constructor and in + setValue(minimum()), as well as when calling setValue(0), as + previously documented. + + - QSaveFile: + * [QTBUG-44086] Files created by QSaveFile do now have the same + rights as files created by QFile. This also fixes a regression in + QSettings: In the Qt 5.4 series, new files created by QSettings + were only readable by the current user. + + - QVariant: + * [QTBUG-42722] QVariant now obeys the C++ type promotion rules when + comparing numeric types (integrals, float and double), including the + fact that unsigned comparisons are preferred for types of the same + rank (that is, now QVariant(-1) > QVariant(0U)). + + - QWindow: + * QWindows will no longer be re-shown automatically when moved from a + destroyed QScreen, unless that QScreen was a virtual sibling of the + primary screen. + + - qmake: + * Qt configure and qmake used with a MinGW spec will no longer emulate + MSVC by picking up the INCLUDE and LIB environment variables. Use the + -I/-L configure options to pass additional paths, as you would under + Unix. + +**************************************************************************** +* Library * +**************************************************************************** + +QtCore +------ + + - Added qEnvironmentVariableIntValue(). + - Added Q_DECL_RELAXED_CONSTEXPR for the corresponding C++14 feature + - Added qHashRange() and qHashRangeCommutative() functions to aid + implementing qHash() overloads for custom types. + - Q_ENUMS and Q_FLAGS have been deprecated, and replaced by Q_ENUM and + Q_FLAG macros. These two new macros automatically register the enum with + the Qt metatype system, allowing automatic conversion to or from string + in QVariant, or to show the strings by QDebug operators. They also + enable the new QMetaEnum::fromType function. + - QPersistentModel index becomes an built-in meta-type, including QVariant + support. + - Updated Unicode data to v.7.0 + - Updated QLocale data to CLDR v.27 + - Updated QTimeZone data to CLDR v.27 + + - Item Models: + * QItemSelectionModel can now be created without a model and have one + set later. + + - Logging: + * QtInfoMsg got added as a new QtMsgType. Use the new qInfo(), qCInfo() + macros to log to it. + + - Logging framework: + * %{threadid} now prints the real thread ID. On Linux, OS X, iOS, + FreeBSD and Windows, the value is unique system-wide. On other + systems, it will print something that may be process-specific (the + value of pthread_self(3)). To print the pointer to QThread::current(), + use %{qthreadptr}. + + - Objective-C: + * [QTBUG-37116] Added NSDate/CDateRef converters for QDateTime + + - QAssociativeIterable: + * Added find(). + + - QCommandLineParser: + * Message boxes are used to display errors and usage if no console + window can be obtained on Windows. + + - QDebug: + * Printing of QStrings and QStringRefs whenever "noquote" is not active + now prints the strings in a format that can be copied back to C++ + code. All characters that aren't printable in US-ASCII are escaped + (this includes printable Unicode characters outside of US-ASCII). + Pretty-printing will not respect QTextFormat padding or field widths. + * Similarly, printing of QByteArrays whenever "noquote" is not active now + prints the arrays in a format consumable in C++, with all non-printable + characters printed in hex escape sequences. + + - QJsonObject: + * Added conversion to and from QVariantHash + + - QLibrary: + * Added DeepBindHint which maps to RTLD_DEEPBIND on Linux making it + possible to load libraries with external symbols that clash with + already loaded ones, such as plugins linked to Qt4. + + - QLockFile: + * [QTBUG-45497] Detection of stale lock files got more robust and takes + the name of the process that belongs to the stored PID into account. + + - QRegularExpression: + * Support for matching using QStringRef as the subject's string type has + been added. + + - QSet: + * Can now be used as the key in QSet and QHash. + + - QSortFilterProxyModel: + * [QTBUG-35440] QSortFilterProxyModel now properly forwards the roles + that have been changed when the source model emits dataChanged(). + + - QStandardPaths: + * [QTBUG-38872][QTBUG-38845] Added QStandardPaths::AppConfigLocation, + for application-specific configuration directory. ConfigLocation was + inconsistent. + + - QString: + * Added support for retrieving the QRegularExpressionMatch to indexOf + and lastIndexOf. + * Added QT_RESTRICTED_CAST_FROM_ASCII macro as less intrusive + alternative to QT_NO_CAST_FROM_ASCII. + * Added methods for convenient conversion to and from std::u16string and + std::u32string. + * Added asprintf(), vasprintf(). + + - QThreadPool: + * Added QThreadPool::cancel() which allows removing from the job queue a + job that hasn't been started yet. + + - QTimeZone: + * Added methods systemTimeZone() and utc() that return QTimeZone objects + for the system time zone and for UTC, respectively. + + - QVector: + * Added QVector::append(const QVector &) overload + + - QVector3D: + * Added convenience project and unproject methods to use like gluProject + and gluUnproject + + - QtMath: + * qmath.h no longer includes math.h, so any sources depending on that + indirect inclusion may fail to build. + + - State Machine: + * Added support for internal transitions. + * [QTBUG-40293] Added an addTransition() overload that takes a + pointer-to-member for the signal triggering the transition. + * [QTBUG-44963] Fixed an issue where a history state restore would + activate too many states, possibly putting the state machine in an + invalid state. + * QTBUG-44783] Fixed an issue where the state machine could end up in + an invalid state when transitions from a parallel state were not + checked for conflicts. + * Fixed a case where a parallel state was not exited and re-entered + when one of its substates was exited and subsequently re-entered. + * Fixed the non-deterministic behavior of picking a transition from a + set of conflicting transitions. + +QtDBus +------ + + - Added annotation org.qtproject.QtDBus.MethodName to allow + autogenerating C++ methods with different names to the original DBus + method + +QtGui +----- + + - Added support for device-specific backend plugins in eglfs. + - eglfs is now using fullscreen mode also when running on X11. + - Added a plugin to get mouse, keyboard and touch events via libinput. + - The linuxfb platform plugin's input device handling is now compatible + with eglfs. The evdev keyboard, mouse and touch code is compiled in by + default. + - The mouse cursor on Embedded Linux is now handling hotplugging correctly + with eglfs and linuxfb regardless of how the input handling code is + loaded (via a generic plugin or built in to the platform plugin). + - QOffscreenSurface is now relying on EGL_KHR_surfaceless_context when + available, and avoids creating a pbuffer surface when the extension is + present. + - initializeOpenGLFunctions() no longer needs to be called when querying a + versioned function wrapper object via QOpenGLContext::versionFunctions(). + - Added version function classes for OpenGL 4.4 and 4.5 and deprecate some + erroneously classified functions. + - Exposed TabFocusBehavior in QStyleHints + - [QTBUG-42240][QTBUG-43263] Qt now contains a built-in GPU driver + blacklist for Windows that disables the usage of desktop OpenGL with + some older cards that are known to be unstable with opengl32.dll. + - [QTBUG-44937] Support for QScreen::grabWindow() is now available on + embedded platforms (eglfs, linuxfb). + - Added QStyleHints::singleClickActivation to access whether the platform + expects item activation to occur on single clicks rather than double + clicks. + - [QTBUG-40034] QOpenGLWidget and QQuickWidget are now supported on iOS. + + - Accessibility: + * [QTBUG-44479] Qt now reports text attributes correctly on Linux, so + ORCA+F now works properly in QTextEdit and other text controls. + + - Accessibility / OS X: + * QTextEdit now properly reports to accessibility visual lines + (softlines) as lines, instead of whole paragraphs. This allows better + VoiceOver user experience when reading text line by line using arrows + up/down. + * Visual bounds returned by QTextEdit were singificantly improved; this + enables VoiceOver to draw properly positioned VoiceOver cursor. + + - Image plugins: + * [QTBUG-37946][QTBUG-43563][QTBUG-45552][QTBUG-45865] An option has + been added to QImageReader to enable automatic application of EXIF + orientation. This behavior was default in Qt 5.4.1, but reverted in Qt + 5.4.2. + + - QFontDatabase: + * Added QFontDatabase::isPrivateFamily() + + - QImage: + * Added support for grayscale and alpha 8-bit formats which can also be + rendered to. + + - QPainter: + * [QTBUG-35830] QPainter will no longer try to replace IntersectClip + with ReplaceClip if the paint engine is a QPicture. + + - QPlatformSurfaceEvent: + * [QTBUG-42476][QTBUG-42483] Added event class QPlatformSurfaceEvent, + which is sent to QWindow and QOffscreenSurface when native surface is + created or about to be destroyed. + + - QQuaternion: + * Added methods to convert a quaternion to/from Euler angles and to/from + rotation matrix. + + - QScreen: + * Added devicePixelRatio property. + + - QTextDocument: + * Support for searching with a QRegularExpression in a document has been + added. + + - QWheelEvent: + * On OSX, trackpad wheel event phase transitions now occur in the order + ScrollBegin, ScrollUpdate, ..., ScrollEnd, ScrollUpdate, ..., + ScrollEnd, where the second batch of updates represents momentum + events (inertial scrolling). + + - QWindow: + * [QTBUG-32956] lastWindowClosed will now be emitted even if + quitOnLastWindowClosed is not set. + + - Windows: + * [QTBUG-43263] Introduced experimental feature allowing the user to + specify a GPU driver buglist with some additional keywords to chooose + the GL renderer backend depending on GPU. + + - i18n: + * [QTBUG-43447] Fixed bug where layout direction did not switch + according to the instruction in the translation file. + + - Text: + * [QTBUG-39286] Fixed position of underline on centered text when the + text layout's width is an even number. + +QtNetwork +--------- + + - [QTBUG-26295] Introduced libproxy backend for Unix platforms, enabled + automatically if the required dev package is present + - As some legacy ifdefs for OpenSSL 0.9.7 and 0.9.8f were removed, Qt + will no longer build with these versions. In addition, there is no + longer support for an OpenSSL library built with NO_TLSEXT. + - [QTBUG-26538] Fixed a bug that caused both QTcpSocket and QUdpSocket to + close the socket and lose any bound ports before connecting. Now + bind()/setSocketDescriptor() followed by connect() will retain the + original file descriptor. + + - QLocalSocket: + * [QTBUG-16688] On Windows, waitForReadyRead now always waits for more + data, even if bytes are still in the buffer. + + - QNetworkAccessManager: + * It is now possible to use TLS PSK ciphersuites when using HTTPS (or + similar protocols working over SSL). + + - QSslSocket: + * [QTBUG-39077] It is now possible to use TLS PSK ciphersuites in client + sockets. + * A new SSL backend for iOS and OS X, implemented with Apple's Secure + Transport (Security Framework). + + - SSL/TLS support: + * [QTBUG-18972] It is now possible to parse elliptic curve certificates. + * It is now possible to choose which elliptic curves should be used by + an elliptic curve cipher. + +QtTest +------ + + - QCOMPARE now pretty-prints QSizePolicy{,::Policy,::ControlType{,s}}. + - QtTest now prints an escaped version of QByteArrays that failed to + compare with QCOMPARE, instead of the hex dump. + - QTest::toString() can now be overloaded (instead of just specialized) + for custom types, and is now reliably found through argument-dependent + lookup (ADL). + +QtWidgets +--------- + + - Added QPlainTextEdit::createStandardContextMenu(QPoint) overload that + takes the position in document coordinates. This method enables the + actions that are sensitive to the given position eg. where the user + clicked. + + - Accessibility / OS X: + * VoiceOver users of QTextEdit can now use mouse and touch exploration + on trackpad to point at text to have spoken to them. + + - Layouts: + * [QTBUG-43099] Fixed a bug where spans sometimes didn't distribute + themselves to the last cells they covered. + + - QAbstractItemView: + * Added iconSizeChanged signal. + + - QAbstractScrollArea: + * [QTBUG-8315] A getter for the viewport margins has been added. + + - QComboBox: + * A QComboBox does not reset itself any more when setting the same model + more than once. + * [QTBUG-43350] QComboBox will now reset its root model index when a new + model is set on it. + + - QHeaderView: + * [QTBUG-21201] Auto-scroll the view when making extended row/column + selections. + * Default section size is now style-dependent by default. + * Added resetDefaultSectionSize(). + + - QMenu: + * [QTBUG-20094] QMenu now pick up how "sloppy" submenus behave from the + style. + + - QOpenGLWidget: + * [QTBUG-40717] Added an UpdateBehavior flag to QOpenGLWidget and + enabled support for NoParitalUpdate for QOpenGLWidget. NoPartialUpdate + is the default update behavior for QOpenGLWidget. + + - QSizePolicy: + * QSizePolicy::ControlTypes is now introspectable through QSizePolicy's + meta object. + + - QToolButton: + * [QTBUG-23396] Fixed the double removal of ampersands. + + - QTreeWidget: + * [QTBUG-40060] Restored Qt 5.1 behavior of QTreeWidgetItems with + ItemIsTristate to enable automatic management of the check state. + User-editable tristate checkboxes are now enabled by setting the new + flag ItemIsUserTristate. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + + - Removed BlackBerry PlayBook support. + +Android +------- + + - [QTBUG-43705] Fixed canonical path for nonexistent paths on some + devices. + - [QTBUG-38700] On devices with translucent system UI, Qt's windows are now + positioned to avoid overlapping it. This behavior can be + overridden in the application's AndroidManifest.xml. + - [QTBUG-45430] Fixed a bug that caused applications not to be resumable + after user changed language in system settings. + + - QtCore / QTimeZone: + * [QTBUG-35908] Android timezones are now available in QTimeZone. + + - QtWidgets: + * Enable QDockWidget window decorations. + +OS X +---- + + - [QTBUG-43999] QApplication::setWindowIcon now changes the icon for the + application in the dock. + + - Text: + * [QTBUG-44708] Fixed appending text with a different writing system and + formatting to a latin ligature. + +Windows +------- + + - QMimeData: + * [QTBUG-17373] Added support for handling dropping of multiple mail + attachments, adding ;index=N to the mimetype string + application/x-qt-windows-mime;value="FileContents" + + - Text: + * [QTBUG-44501] Fixed design metrics for text + +X11/XCB +------- + + - GLX and EGL code paths are now dynamically resolved, making it possible + for one build of a plugin to use both code paths. The default is to use + the GLX code path if available. This can be overridden by specifying + QT_XCB_GL_INTEGRATION=xcb_egl as an environment variable. Enable the + logging category qt.xcb.glintegration.debug to get debug log output of + what integration is used. + - [QTBUG-31762] QSystemTrayIcon now uses StatusNotifier D-Bus protocol + when the desktop environment supports it + - [QTBUG-40174][QTBUG-42985] If all QScreens (xcb outputs) are + disconnected while an application is running, + QGuiApplication::primaryScreen() will now return null until a screen is + connected again. + +**************************************************************************** +* Compiler Specific Changes * +**************************************************************************** + + - Qt 5.5 now unconditionally uses the "using" keyword. Compilers that do + not support this keyword are deprecated and will not be able to build + Qt. Previous versions of Qt may or may not compile, as no testing was + done to ensure it worked. + - Visual Studio: -Zm200 (an option to specify the precompiled header + memory allocation limit) is not added anymore by qmake to the compiler + calls. If you encounter an C1076 compiler error you might need to re-add + it in your .pro file. + +**************************************************************************** +* Tools * +**************************************************************************** + +configure +--------- + + - Added support for GCC/Clang -fsanitize= options + +qmake +----- + + - For commercial builds, qmake now checks for a valid Qt license. This + requires setting up a Qt Account (or .qt-license file) on the + development machine. + + - Important Behavior Changes: + * A lot of quoting issues have been fixed. As a side effect, qmake + has become more sensitive to over-quoted file names in project + files. + +**************************************************************************** +* Third-party libraries * +**************************************************************************** + + - [QTBUG-44815][QTBUG-37660][QTBUG-44694][QTBUG-42443] ANGLE was updated + to Chromium branch 2356 (2.1~99f075dade7c).