Qt 5.1 introduces many new features and improvements as well as bugfixes
over the 5.0.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.1

The Qt version 5.1 series is binary compatible with the 5.0.x series.
Applications compiled for 5.0 will continue to run with 5.1.

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
--------------------
- The Qt.application object in QML has gained the following new members
  * arguments property, containing any command line arguments of the application
  * name property, containing the string of the application name
  * version property, containing the string of the application version
  * aboutToQuit() signal, allowing last-minute cleanup
- New Qt.platform.os property exposes the current platform.

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



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

 - A Window declared nested inside another Item or Window automatically
   becomes transient for (centered upon) its parent's window, if x and y
   were not explicitly specified
 - The resources property of Item is now its own property independent
   of QObject. It no longer returns all QObject children, or explicitly
   sets QObject parent. The resources property now behaves as documented.

 - As part of a fix for QTBUG-30555, ListView and GridView properties, such
   as count, which are based off of the data model will no longer update
   immediately if queried. Updates are batched to happen once per frame (or
   when properties are being set). You may manually update using the
   forceLayout() method, new in QtQuick 2.1.

 - For QML tests, tryCompare now correctly fails when it only gets two parameters

 - If a QObject has a property and a slot (or invokable method) with the same
   name, in QML the previous behavior was to let the property obscure the
   method; from Qt 5.1 things work in the opposite way, that is a property can
   never obscure a method having the same name. This is especially important
   for objects having dynamic properties, such as QQmlPropertyMap. This change
   was a consequence of the fix for QTBUG-29836.

 - The 'with' statement has been deprecated in the QML language. Using this
   statement now produces a deprecation warning, and future versions of the
   QML engine may not recognize it.

 - The implicit import is now only loaded for QML files if there are
   unresolved types after loading all explicit imports. Applications where
   the implicit import triggered code other than the registration of types
   will now need to add import "." to their QML files.

****************************************************************************
*                          Library                                         *
****************************************************************************
QtQml
------
 - New QML import version QtQml.Models 2.1 contains generic versions of the VisualModel
   types. These new generic versions work with any QObject based delegate,
   not just QQuickItem based delegates.
 - New module version QtQml 2.1 provides the new Instantiator type, which
   is a generic version of Repeater which works with any QObject based
   delegate, not just QQuickItem based delegates.
 - New convenience class QQmlApplicationEngine automatically provides
   functionality common in the C++ shell of a primarily QML application.
 - New qmlClearTypeRegistrations() function in qqml.h. This function drops all
   static data generated by previous qmlRegisterType calls.
 - New qmlRegisteredType function in qqml.h, allowing the registration of
   composite types from C++.
 - New baseUrl() accessor in QQmlExtensionPlugin, in case a plugin
   needs to load QML or other assets from the same directory.

QtQuick
------
 - New QML import version QtQuick 2.1 contains no new types, but adds new
   properties, methods and signals to existing types. See the release notes
   in the QtQuick documentation for details.
 - QTBUG-30837: The Flickable type no longer fixes up the content area on
   startup to move it inside the viewport.
 - QTBUG-28086: Remote image URLs now work as a source for AnimatedSprite


****************************************************************************
*                          Database Drivers                                *
****************************************************************************


****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************
 - New threaded render loop for Mac and Linux should lead to improved
   graphical performance of QtQuick 2 on those platforms.
 - New render loop on Windows should lead to smoother animations.
 - assets: scheme supported on Android for urls inside QML
 - Mac: "@2x" images are now loaded on "retina" systems.

****************************************************************************
*                      Compiler Specific Changes                           *
****************************************************************************


****************************************************************************
*                          Tools                                           *
****************************************************************************

- qmlplugindump gains a -relocatable flag.


****************************************************************************
*                          Plugins                                         *
****************************************************************************

- New QML import QtQuick.Dialogs 1.0 contains types for more easily adding
  dialogs to an application. Initially comes with FileDialog and ColorDialog

- New QML import version QtQuick.Window 2.1 adds many new properties to both
  the Screen and Window types. See the release notes in the QtQuick
  documentation for further details.

- QTBUG-30915: Animating emitRate on Emitter no longer fails for specific
  animation timings. As a side effect, when emitting infinite particles
  changing the particle count will no longer have an effect after initial
  emission (previously it no longer had an effect after a certain point
  into the animation).

