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

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

 - Documentation:
   - Moved documentation under the correct module, fixed module identifiers
   - Cleanup of examples and their documentation
   - [QTBUG-28579] Fixed broken links to C++ class reference and examples
     for a number of modules in Qt Creator Help contents
   - Fixed incorrect or missing links, typos

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

Legal
-----


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

QtCore
-----

 - Fix QMutex::tryLock with negative values
 - Fix a leak in case the QMetaObject::Connection survives the sender object,
   after a successful disconnect().
 - Speed up and fix QByteArray::setNum()
 - [QTBUG-28924] Don't increase the reference count if dynamic_cast failed

QtGui
-----

 - Fix QGuiApplication::keyboardModifiers() and QGuiApplication::mouseButtons()
 - Fix styleName support in QPA font database
 - Make QImage::mirrored() propagate devicePixelRatio
 - [QTBUG-28324] Fixed invalid memory read in SSSE3 image blending code.

QtWidgets
---------

 - Do not inform that a widget is not visible when it's disabled.
 - [QTBUG-28031, QTBUG-2596] QMenu: Do not set snapToMouse if a caused-widget exists.
 - [QTBUG-28321] Fix focusproxy-relayed crash in QGraphicsItem destructor.
 - [QTBUG-28446] Fix compilation when Q_NO_USING_KEYWORD is defined
 - [QTBUG-28477] Fix QWidget::setWindowOpacity() when called before show().
 - [QTBUG-28506] Style animations: fix QCommonStylePrivate::stopAnimation()
 - [QTBUG-28557] Fix QGtkPainter::reset() to reset the clip rect

QtNetwork
---------

 - [QTBUG-28937] SSL certificates: blacklist mis-issued Turktrust certificates

QtDBus
------

 - qdbusxml2cpp: Check string length before checking for \r\n.

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

QtOpenGL
--------

 - Fix compilation of Open GL ES 2 examples when using a Qt-namespace.
 - Fixed deadlock situation in QtOpenGL's texture management.
 - updating qeglfshooks_imx6.cpp to 12.09.01 (L3.0.35) opengl-drivers
 - [QTBUG-27512] Entered hardcoded urls for <OpenGL> and <Khronos O.GL>
 - [QTBUG-28875] Fix bug in multisampling handling when converting from surface format

QTestLib
--------

 - Add qtest_widget.h to the list of testlib headers

QtSql
-----

 - Fix QSqlQuery test in relation to PSQL support

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

sqlite
------

postgres
--------

 - Use PG_VERSION if PG_MAJORVERSION is not defined

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

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

 - XCB: add support for getting and setting appTime and appUserTime.
 - [QTBUG-28561] Fixed incorrect handling of extra mouse buttons in XCB platform plugin.

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

 - DBUS: Fix linker errors on Windows.
 - Define Q_COMPILER_AUTO_FUNCTION for MVSC
 - [QTBUG-28611] Fix warnings about not being able to set Window geometry on Windows.
 - [QTBUG-28611] QMdiArea: Increase minimum size for Windows 8/Large fonts.
 - [QTBUG-28645] Rename conflicting symbol QVariantToVARIANT
 - [QTBUG-28876] QWindowsVistaStyle: fix frame rendering

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

 - Ignore ScrollBarAlwaysOn policy for transient scrollbars
 - New rendering for disclose triangle, get proper color when selected
 - [QTBUG-27415] Fix bugs for font selection in QFontDialog
 - [QTBUG-28161] Ensure the native filedialog starts up with the right directory
 - [QTBUG-28443] Cocoa: Re-enable per class palette on QPA plugin
 - [QTBUG-28669] Fix transient QScrollBar flashing
 - [QTBUG-28738] Bring back proper layout in QMessageBox

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

 - Reset virtual keyboard when shown.
 - Disable Q_COMPILER_RVALUE_REFS on QNX
 - Fix QNX QPA plugin clipboard impl
 - Don't crash because the window hasn't been initialized yet.

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

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

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

 - MinGW: Statically link runtime libraries into qmake

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

configure
---------

 - Remove the -fast configure option as it was pretty much broken
 - [QTBUG-23569, QTBUG-25760] Check for gtk_adjustment_configure as this is not always implemented

mkspecs
-------

 - Fix the computation of the location of mkspecs.
 - [QTBUG-28215] Enable forcing generation of static plugin imports
 - [QTBUG-28606] Fix installation of plugin module .pris in static Qt builds

moc
---

 - [QTBUG-26589] Remove the timestamp info in genarated files to optimize rebuilds with ccache

qmake
-----

 - Do not fixify + create QMAKE_{PKGCONFIG,LIBTOOL}_DESTDIR
 - Fix qtCompileTest for cross building modules
 - [QTBUG-28104] Respect the OBJECTS_DIR setting for XCode projects
 - [QTBUG-24589] Fix handling of precompiled header files in XCode projects
 - [QTBUG-28624] accept hex/octal values for RC_LANG and RC_CODEPAGE
 - [QTBUG-28625] fix duplicate TRANSLATION entry in generated RC file
 - [QTBUG-28682, QTBUG-28683] fix DLL manifest resource ids for debug builds

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

 - Accessibility Linux: Prevent access to invalid interfaces
 - Call QAccessible::updateAccessibility when caret moves in QTextEdit

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

- QSharedMemory on Unix systems now no longer creates shared memory
  segments that are readable and writeable to everyone. From Qt 5.0.1
  forward, the segments are created readable and writeable only by the
  current user. This matches the behavior on Windows.
