From 4204f543eb82f96bf9f2b45b9b8b5e490517880b Mon Sep 17 00:00:00 2001 From: Antti Kokko Date: Fri, 17 Apr 2020 10:05:39 +0300 Subject: Add changes file for Qt 5.15.0 Change-Id: I0b9ea908c0510120a7d4e94f462e057f175abde9 Reviewed-by: Fabian Kosmale Reviewed-by: Shawn Rutledge Reviewed-by: Ulf Hermann --- dist/changes-5.15.0 | 283 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 dist/changes-5.15.0 diff --git a/dist/changes-5.15.0 b/dist/changes-5.15.0 new file mode 100644 index 0000000000..1b2d3c5edd --- /dev/null +++ b/dist/changes-5.15.0 @@ -0,0 +1,283 @@ +Qt 5.15 introduces many new features and improvements as well as bugfixes +over the 5.14.x series. For more details, refer to the online documentation +included in this distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.15 series is binary compatible with the 5.14.x series. +Applications compiled for 5.14 will continue to run with 5.15. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + + - [QTBUG-74137] CMake: Added a Qt6 forward compatible CMake API. Using this, + you can define projects that work with either Qt5 or Qt6, without further + changes. + + - [QTBUG-79331] If you register the same revision of the same type multiple + times, the last registration is the one QML will use. This allows you to + override qmlRegisterSingleton*() calls, for example in order to register a + singleton instance for a type tagged with QML_SINGLETON. Previously, the + first registration would take effect. + + - [QTBUG-79868] Using instanceof to check whether an instance has the type of + QObject or one of its derived classes used to raise a TypeError, if the + instance was not derived from QObject. Now, it instead returns false, which + is more in line with the ECMAScript semantic. + + - The QML ObjectModel type had an undocumented "feature" which made it sort + items in list views into sections according to context properties of the QML + context the created objects belong to. Instead of context properties, object + properties are used now. + + - [QTBUG-73669] Using the Qt Quick Compiler would exclude the original .qml + files from the resource system. This made it impossible to change the Qt + library binary later as the program binary was tied the to the exact Qt + version. In addition sometimes unrelated files (QTBUG-73669) were removed. + For the latter scenario, retain and skip options were added for the Qt + Quick Compiler. In Qt 5.15 the Qt Quick Compiler does not remove the input + files anymore. All files are retained and the compiler merely adds the + more efficient binary representation to the application. + +**************************************************************************** +* Deprecation Notice * +**************************************************************************** + + - The qmlmin tool is deprecated and not needed anymore. The built-in caching of + qml files addresses the needs and unfortunately the tool does not work with + more advanced concepts such as required properties or the ES 7 yield + statement. It will be removed in Qt 6. + + - qmlRegisterExtendedType() without URI or version, is deprecated. You should + state the module the type belongs to, by supplying a URI and version. + + - qmlRegisterInterface(const char *typeName) without URI or version, is + deprecated. You should state the module the type belongs to, but supplying a + URI and version. Conversely, the typeName is redundant as the type itself + is already supplied as template parameter. None of the other registration + functions allow overriding the name for the metatype registration. + + - QQmlIncubationController::incubateWhile(volatile bool *flag, int msecs) is + deprecated. The volatile parameter is used as a poor man's atomic bool, with + all the well known downsides of such a practice. A replacement method + taking an actual atomic is provided. + + - In QML Connections elements, the handlers should be defined as plain + JavaScript functions, not as "onPropertyChanged properties". + + - You can currently access local files from QML via XMLHttpRequest using + "file://..." URLs. This will not be allowed by default anymore in Qt6. If + you actually need this behavior, you can set the environment variables + QML_XHR_ALLOW_FILE_READ and/or QML_XHR_ALLOW_FILE_WRITE to 1. You can also + set them to 0 when using Qt 5.15 to prevent local file access. + + - [QTBUG-78596] The class QSGEngine is now deprecated. + +**************************************************************************** +* QtQml * +**************************************************************************** + + - QML allows a new attribute "required" to be attached to properties. Such + properties have to be set when instantiating a component. The various models + and views use this as the preferred way of communicating model data to + delegates. The old way of passing model data via context properties should + be avoided in new code. + + - The qmllint tool has been extended to check for patterns considered to be + potentially problematic in Qt6, and suggest better solutions. Pass the -U + command line option to enable the checks. + + - The new qmlformat tool can be used to pretty-print a QML file according to + the recommended code style. + + - QML supports type assertions similar to typescript. So far this is only used + to make the intended type of an expression known to qmllint. At run time, + type assertions are ignored. + + - C++ types can and should be registered to QML at compile time now. For this + purpose there are a number of macros available in qqml.h that can be added + to a class declaration. A new tool, qmltyperegistrar, will evaluate them and + generate the actual registrations. You should not need to call any + qmlRegister* function manually anymore in new code. + + - New classes QQmlEngineExtensionInterface and QQmlEngineExtensionPlugin are + available and should be used in place of QQmlExtensionInterface and + QQmlExtensionPlugin. The new classes do not offer a virtual registerTypes() + method as types should be registered at compile time. + + - [QTBUG-81631] Qt.formatDateTime, Qt.formatDate and Qt.formatTime now support + formatting according to a locale and an optional locale format type. If + locale dependent formatting is desired, this method should be used instead + of the locale-related DateFormat enum members. + + - [QTBUG-77926] Nullish coalescing is now implemented as specified in + https://github.com/tc39/proposal-nullish-coalescing. + + - It is now possible to declare new QML components in a QML file via the + component keyword. They can be used just as if they were declared in another + file, with the only difference that the type name needs to be prefixed with + the name of the containing type outside of the file were the inline + component has been declared. + + - The Qt.uiLanguage and QJSEngine::uiLanguage properties were added. They can + be used to dynamically change the translation language from both QML and C++. + QQmlApplicationEngine does this automatically. When using other engines, you + need to listen for changes of QJSEngine::uiLanguage and load the respective + translator in response. + + - [QTBUG-82743] Assigning to a QSet property from JS works again. + + - [QTBUG-74087] There is now an option to disable the (necessarily) + conservative stack size checks when parsing and executing JavaScript. If the + environment variable QV4_CRASH_ON_STACKOVERFLOW is set, JavaScript stack + overflows crash the program the same way C++ stack overflows do. On the flip + side, more stack space is made available that way. + + - [QTBUG-81714] You can add annotations, prefixed by "@" to QML elements now, + similar to Java type annotations. These annotations have to be written in QML + and are ignored by the QML interpreter. Tools processing QML can evaluate + them. + + - [QTBUG-82843] Fixed a crash caused by creating QQmlValueTypeWrapper from + an invalid Q_GADGET type. + + - [QTBUG-82150] QML Debugger now shows correct values for color objects. + + - [QTBUG-81970] QQmlCustomParser now resolves import namespaces. + + - [QTBUG-81678] Fixed qml loading problems caused by cycles. + + - [QTBUG-81825] Array.includes now works with value types such as point. + + - [QTBUG-79263] QQmlListProperty now has replace and removeLast functions. + + - [QTBUG-81123] Fixed a crash in QQmlListProperty if a contained object is deleted. + + - [QTBUG-58858] The path for storing QML cache files can now be customized. + + - [QTBUG-80030] Implemented TypedArray.from() + + - [QTBUG-80413] WorkerScript now has a ready property. + + - [QTBUG-75110] Locale NumberOptions are now exposed to QML. + + - [QTBUG-41087] Primitive self-references in composite types are now supported. + + - [QTBUG-76074] Custom QML types can now be freed when unloading plugins. + + - [QTBUG-73669] Fixed link errors when enabling CONFIG+=qtquickcompiler + on non-QML projects. + + - [QTBUG-60908] Removed an unnecessary assert when setting a binding to alias. + + - qml: The QML Runtime tool --selector option now allows defining a custom + QQmlFileSelector. + +**************************************************************************** +* QtQuick * +**************************************************************************** + + - Animations: + * [QTBUG-48193] Fixed signal emission order for zero-duration animations. + + - AnimatedSprite: + * [QTBUG-59090] Added finishBehavior to allow a sprite to finish on the + last frame. + + - Behavior: + * [QTBUG-70964] Behavior now has a targetProperty property to allow custom + logic based on the target property's object or name. + + - Event handlers: + * [QTBUG-68073] Pointer Handlers now have a cursorShape property to set the + cursor when the handler is active and the mouse or a tablet stylus is hovering, + and restore to the previous cursor when the pointing device leaves. + * [QTBUG-79660] QTabletEvents are now delivered to pointer handlers. + For example PointHandler { acceptedPointerTypes: PointerDevice.Pen } + is one way of receiving stroke information for drawing via Canvas or Shapes, + and HoverHandler can use the new cursorShape property to show when a + stylus is in use. + * [QTBUG-68075] Pointer Handlers now have a dragThreshold property to + define the distance at which DragHandler will activate and TapHandler + will deactiveate, for example. + + - FolderListModel: + * [QTBUG-82298] The fileUrl property was added to replace the fileURL + property, which is now deprecated. + + - Image: + * Image now has a sourceClipRect property to render a clipped image from a + region of the sourceSize. + * [QTBUG-80616] Image now has a colorSpace property. + + - Item: + * Item.mapToItem() and mapFromItem() now work with QPointF and QRectF types + as well as with raw numbers. + * Item.mapToGlobal() and mapFromGlobal() now work with QPointF as well as + with raw numeric coordinates. + + - Item Views: + * [QTBUG-81580] DelegateChooser now supports using a property name as + roleValue when an array of QObject instances is used as the model for a + * [QTBUG-74046] ListView no longer allows the user to press on an Overlay or + PullBack header or footer and start scrolling, but only on the content + delegates. + * [QTBUG-80507] ListView now has support for reusing delegate items. This can + be switched on by setting the reuseItems property of ListView to true. + + - MouseArea: + * [QTBUG-74987] MouseArea no longer gets stuck in pressed state if it + is set invisible on press. + + - MultiPointTouchArea: + * [QTBUG-81944] The TouchPoint.x and y properties are updated together + before the change signals are emitted. + + - Particles: + * [QTBUG-76827] QQuickItemParticle::give() is now implemented. + + - RHI / scene graph: + * [QTBUG-82927] QSGRenderNode is now usable in Quick3D. + * [QTBUG-78570] Added API to get the platform specific texture handle. + * [QTBUG-80690] Fixed invalid core profile shader code. + * [QTBUG-80498] We now avoid unnecessary rendering of an extra frame with QSG_RHI=1 + * [QTBUG-80365] Initialization failure now results in a sensible error dialog + rather than an infinite loop. + * [QTBUG-82988] QSGSimpleMaterial and QSGSimpleMaterialShader are now + deprecated. + + - Shapes: + * Added PathText path element which can be used together with Qt Quick Shapes + to get text rendering that does not cache glyphs in a texture, but + triangulates the outlines of the glyphs instead. + + - Text: + * [QTBUG-78277] Added new API that exposes implicitWidth, and isLast on the + QQuickTextLine for use in the lineLaidOut signal. This allows the user to + layout other items relative to the lines of text. + * [QTBUG-80759] Reduced redundant renderering of glyphs, thus fixing incorrect + rendering of superscripts. + + - TextInput: + * [QTBUG-76320] Inputmask X character now requires non-blank input. + + - QQuickItem: + * [QTBUG-68176] ParentChange now avoids roundoff error when restoring the old position. + + - QQuickWidget: + * [QTBUG-78323] When QQuickWidget is resized, an in-scene dialog or other + content that is rendered into an offscreen window is now resized correctly. + + - QQuickWindow: + * [QTBUG-78141] LanguageChange events are now delivered to items to enable + them to update translations. + * [QTBUG-79268] createTextureFromId() is now deprecated. -- cgit v1.2.3