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

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

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                                        *
****************************************************************************

Qt Assistant
------------


Qt Designer
-----------


Qt Linguist
-----------

 - [QTBUG-32196] Fixed search skipping some messages entirely
 - [QTBUG-32218] Fixed search generally skipping plural forms
 - Fixed search skipping translator comments in multi-language mode
 - [QTBUG-14592] Fixed handling of country-less languages like Esperanto

 - lupdate

   * Made the functions lupdate looks for customizable
   * Made TR_EXCLUDE work for SUBDIRS and #include statements
   * [QTBUG-14056] Added collection of messages from INSTALL and DEPLOYMENT file lists
   * [QTBUG-24587] Fixed INCLUDEPATH resolution relative to current project
   * Fixed INCLUDEPATH erroneously contributing to VPATH for HEADERS
   * [QTBUG-12948] Fixed handling of PO files with obsolete fuzzy messages.
     This necessitated the introduction of a new message state, and thus an
     increment of the TS file format version to 2.1.
   * [QTBUG-27974] Fixed messages from included sources not being collected
   * [QTBUG-29131][QTBUG-32725] Fixed handling of incomplete and contradictory meta data
   * [QTBUG-18890] Fixed meta data changes being ignored
   * [QTBUG-11866] Fixed too aggressive collection of message meta data
   * [QTBUG-21876] Fixed numerous C++ parsing issues triggered by comments
   * [QTBUG-29998] Fixed parsing of tr() inside brackets (used as a hash key)
   * [QTBUG-9276] Fixed parsing of QT_TR_NOOP() in non-array static initializers
   * [QTBUG-4393] Fixed parsing of constructors with namespaced parent classes
   * Fixed long-standing performance regression relating to processing includes
   * Fixed decoding of qml files in non-UTF-8 locales
   * Made built-in qmake project parser more accurate and less noisy
   * Added -pro-debug option equivalent to qmake -d
