Qt 5.0.2 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.0.0 and 5.0.1.

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.0/

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

 - Lots of fixes to enable static builds on Windows, Linux and Mac.

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

QtCore
-----

 - [QTBUG-29130] Fixed compilation when connecting with the new syntax to a
   signal that has more than 3 registered meta type arguments, and the compiler
   does not support variadic templates

QtGui
-----

 - [QTBUG-14766] Fixed potential access violation in QPixmap::copy() for <32 bit pixmaps.
 - [QTBUG-24762] Fixed dashes being rendered differently depending on system clip.
 - [QTBUG-25036] Fixed artifacts when drawing same line with different clips.
 - [QTBUG-29643] Fixed crashes when using QImage in combination with QCoreApplication.

QtWidgets
---------

 - [QTBUG-28817] Fixed QColorDialog::setOption(), QFontDialog::setOption().
 - [QTBUG-29680] Fix mouse double click events not bubbling up to parent widgets.

QtNetwork
---------

 - [QTBUG-29103] Toggle on demand loading of root certs properly.

QtConcurrent
------------

 - [QTBUG-28984] Fix compilation of Qt Concurrent with gcc 4.3.

QtSql
-----

 - Fix QSqlTableModel:revert() for OnFieldChange.
 - [QTBUG-29102] Support refreshing inserted rows with auto columns.
 - [QTBUG-29108] Fix QSqlTableModel::headerData() for empty query with inserted row.
 - [QTBUG-29217] Fix QSqlTableModel::setData() for non-change detection.

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

sqlite
------

postgres
--------

****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************

Qt for Linux/X11
----------------

 - Fix focus handling of native child widgets in xcb.
 - Fixed crash when VNCing and trying to use non-present XFixes extension.

Qt for Windows
--------------

 - [QTBUG-28439] Implement QPlatformWindow::isExposed() on Windows.
 - [QTBUG-29010, QTBUG-28531] Fixed handling of layered windows required for
   translucent or non-opaque windows.
 - [QTBUG-30185] Fixed adding of suffixes in Window native file save dialog.

Qt for Mac OS X
---------------

 - [QTBUG-29389] Fix transient scroll bar appearance before the proper one.
 - [QTBUG-25297, QTBUG-29434] Add QMdiSubWindow size grip back.

Qt for BlackBerry
-----------------

Qt for Embedded Linux
---------------------

Qt for Windows CE
-----------------

 - Removed User32.dll usage.
 - Fix compilation with QT_NO_CURSOR.

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

 - [QTBUG-29099] Fix gcc OOM error when compiling in release mode.

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

Build System & configure
------------------------

 - [QTBUG-26697] The -skip option was added to configure, which enables not
   building particular modules. Typical use case: -skip webkit.
 - [QTBUG-28769, ...] Assorted build fixes
 - [QTBUG-28902] Fixed contents of installed .prl files
 - [QTBUG-29110, QTBUG-29186, ...] Assorted fixes to CMake config files
 - [QTBUG-29174] Fixed numerous configure options which start with -l
 - [QTBUG-29400] Fixed configure -fully-process not creating .vcproj files
 - [QTBUG-29453, ...] Fixed generation of pkg-config .pc files
 - [QTBUG-29478] Fixed static builds with ICU
 - [QTBUG-29661] Fixed QtWebProcess.exe not finding Qt DLLs. -libexec
   now defaults to bin/ on Windows.
 - [QTBUG-29838] Fixed module versioning when mixing releases
 - [QTBUG-30102] Fixed passing of values with spaces to -device-option
 - Production builds do not build examples any more. 'make install' will
   copy only the example sources.
 - pkg-config: qt_config is now contained only in Qt5Core.pc, and it reflects
   QT_CONFIG, not the module build's CONFIG.

qmake
-----

 - [QTBUG-28132] Fixed parallelized 'jom install'
 - [QTBUG-29143] MSVC: Fixed parsing of /openmp
 - [QTBUG-29286] MSVC: Fixed use of VERSION breaking MSVC2010 projects
 - [QTBUG-29329] MSVC: Fixed misparsing of /Gs as /GS
 - [QTBUG-29329] MSVC: Stopped disabling buffer security check by default
 - [QTBUG-29371] Fixed generation of XCode projects for XCode 4.6
 - [QTBUG-29698] MSVC: Fixed incremental linking with non-standard shells
 - [QTBUG-29700] Fixed pkg-config file generation when cross-compiling
 - Qt modules are now enumerated in QT_MODULES, not QT_CONFIG. For portability,
   use qtHaveModule() (since 5.0.1) or !isEmpty(QT.<module>.name) instead.
 - $$(VAR) style environment variable expansions will not split on
   whitespace any more. Use $$split() if necessary.
 - Fixed qmake -tp vc (and configure without -no-vcproj)
 - MSVC: Fixed an empty VERSION causing a garbled version in .rc files
 - Windows: Added support for specifying application icon (via RC_ICONS)
 - Added spec for BlackBerry Playbook

moc
---

 - [QTBUG-29759] Fixed infinite recursion in macro substitution which
   prevented some headers to compile.

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


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

