Qt 5.3 introduces many new features and improvements as well as bugfixes
over the 5.2.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.3 series is binary compatible with the 5.2.x series.
Applications compiled for 5.2 will continue to run with 5.3.

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.

****************************************************************************
*                           General                                        *
****************************************************************************

General Improvements
--------------------

Third party components
----------------------

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

 - Signals declared in QML that take "var" parameters, are now using QJSValue
   as C++ type for these parameters, instead of QVariant.

 - [QTBUG-35913] A QQuick Item is now strongly referenced by its visual
   parent item, so it doesn't require a QObject parent to stay alive.

 - [QTBUG-37924] Keys.forwardTo no longer propagates key events to the
   target item's parents. This makes Keys.forwardTo act more as expected,
   like an event filter. This way Keys.forwardTo becomes usable for
   composite types that want to enable the Keys attached property
   handling by forwarding key events from an internal editor.

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

QtQml
-----

 - [QTBUG-36491] Fixed JavaScript Array.push() not working on QStringList
   properties.
 - [QTBUG-38430] Fixed a bug that caused a crash when the item is deleted but
   is not removed from the QQmlDelegateModel's cache.

QtQuickWidgets
-------
 - Introduced QQuickWidget. This is the equivalent of QQuickView in the
   QWidget world. It allows easy and flexible embedding of QtQuick
   scenes into widget-based application windows without the
   restrictions imposed by QWidget::createWindowContainer().


QtQuick
-------

 - Added displayMarginBeginning/End to ListView and GridView.
 - Added a new sceneGraphError() signal to QQuickWindow which applications
   can use to detect errors like OpenGL context creation failures and react
   in their own custom ways.
 - Moved dialog implementations from qtdeclarative repository to
   qtquickcontrols repository due to dependencies. QML import remains unchanged.


 - [QTBUG-18946] Added Text::linkAt(x,y) method.
 - [QTBUG-18946] Added TextEdit::linkAt(x,y) method.
 - [QTBUG-19961] Added Image.mipmap property to enable mipmap filtering when
   scaled or transformed.
 - [QTBUG-38004] Mac: any editable text input will get tab focus when "Text
   boxes and lists only" option was selected.
 - [QTBUG-21549] Fixed a bug where Behavior would trigger when the tracked
   value has not changed.
 - [QTBUG-35073] QQuickWindow will now emit the afterAnimating() signal
   from the gui thread before each scenegraph sync request.
 - [QTBUG-36749] Fixed wrong baseline alignment for TextInput
 - [QTBUG-31047] handles mouse as a touchpoint; added mouseEnabled
   property to permit transparent pass-through to mouse-sensitive items
 - [QTBUG-31830] "updatePolish" is not called for invisible items any more.
 - [QTBUG-35772] Changed QSGGeometry::lineWidth to also affect point size
   (glPointSize) when drawing GL_POINTS, in addition to the existing
   behavior of affecting line width when drawing GL_LINES, GL_LINE_STRIP,
   and GL_LINE_LOOP.
 - [QTBUG-36069] Fixed TextEdit not vertically aligning its text after
   having its height changed.
