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://qt-project.org/doc/qt-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-project.org/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                   Important Behavior Changes                             *
****************************************************************************

QtQml
-----

   * [QTBUG-44934] Assigning a char to a string will now create a string
     with the actual character instead of a string representation of the
     character's code-point. A side effect of this change is that a
     one-character string also can be assigned to a character type.

QtQuick
-------

   * Flickable.DragAndOvershootBounds value changed from 2 to 3. This will
     only affect you if you've worked around enum type checking and have
     the integer value explicitly in your code.


****************************************************************************
*                          Library                                         *
****************************************************************************


Android
-------

 - [QTBUG-43515] Fixed a vertex shader compilation issue on certain OpenGL
   drivers.

QtQml
-----

 - [QTBUG-29769] Custom C++ value types annotated with Q_GADGET are now
   fully accessible in the QML and QJSEngine JavaScript environment.

 - Added qjsEngine(QObject*) getter similar to qmlEngine(object) that
   allows retrieving the engine for an exposed object.

 - Added Qt.hsva() function

 - XMLHttpRequest:
   * [QTBUG-35892] XMLHttpRequest now supports the OPTION method in
     HTTP requests.
   * QQmlXMLHttpRequest now supports "arraybuffer" binary response type.
   * Support for synchronous requests

QtQuick
-------

 - BorderImage: Add support for @2x HiDPI border images. This means, no more need to
   multiply the border sizes by the device pixel ratio.

 - [QTBUG-37946] Image: An autoTransform property has been added to control
   whether metadata image transforms such as EXIF orientation are
   automatically applied. By default it enabled for TIFF images and
   disabled for JPEG.

 - Changed to use the threaded render loop by default on Windows when
   running with desktop OpenGL (opengl32.dll).
 - [QTBUG-42813] QQuickRenderControl can now be used to render the Qt Quick
   scene on a dedicated render thread, similarly to how the built-in
   threaded render loop operates.
 - Added Window.width and Window.height attached properties
 - Added a Shortcut utility type for catching keyboard shortcuts

 - Flickable:
   * Introduced Flickable.OvershootBounds behavior that allows content
     overshooting the boundary when flicked, but does not allow dragging
     content beyond the boundary of Flickable.
   * [QTBUG-22407] Flickable handles pixel deltas from trackpad gestures as
     drags, for a more native feel

 - PinchArea:
   * Pinch gestures are recognized by the operating system on OSX
   * Fix infinite recursion when TouchCancel events are received.

 - TextInput:
   * SetFocusOnTouchRelease is honored

 - [QTBUG-44743] Text: Fixed assert when setting an invalid width or height on an
   <img> tag in a text element.

 - TextEdit:
   * [QTBUG-44492] Fixed positioning of text decoration with some fonts.
   * [QTBUG-45032] Fixed issues with using other vertical alignments than
   AlignTop.
