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.
