Qt 4.5.3 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 4.5.0.  For more details,
refer to the online documentation included in this distribution. The
documentation is also available online:

  http://qt.nokia.com/doc/4.5

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

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Task Tracker:

  http://qt.nokia.com/developer/task-tracker

Each of these identifiers can be entered in the task tracker to obtain more
information about a particular change.

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

- QColorDialog
    * [256164] Fixed the setting of alpha values in QColorDialog.

- QDirIterator
    * [258230] Fixed inconsistencies in value returned from
      QDirIterator::next().

- QDoubleSpinBox
    * [255019] Fixed a crash when using large value for decimals.

- QFileDialog
    * [None] Fix a bug when activating HideNameFilterDetails on Windows filedialog.
    * [258084] QFileDialog static functions doesn't honor the DontUseNativeDialog flag.

- QGraphicsItem
    * [258956] Fix ancestor flags that are not correctly update when reparenting.

- QGraphicsView
    * [258356] Fix the hand scrolling in QGraphicsView that will stop unexpectedly.

- QGraphicsWidget
    * [257232] Fix regression in clip path calculation for QGraphicsWidget.

- QInputDialog
    * [255502] Fixed bug in getDouble().

- QNetworkAccessManager
    * [256240] Proper handling of HTTP redirect in AlwaysCache mode.
    * [257662] Fix timing issues that could trigger double sending of an
      HTTP request.
    * [256630] Fix usage of QProgressDialog together with QNetworkReply.

- QPainter
    * [254105] Fixed potential segmentation fault when setting empty clip
      rectangle.
    * [256549] Fixed inconsistent behavior between paint engines when
      setting an IntersectClip after doing setClipping(false).
    * [254407] Fixed rendering issue with outline drawing using
      projective transforms.
    * [258776] Fixed rounding bug in drawImage().

- QPainterPath
    * [251909] Fixed bug in QPainterPath::united() / simplified().

- QSslCertificate
    * [256066] Fix loading of a PEM when the length was a multiple of 64.

- QTemporaryFile
    * [260165] Fixed a bug where temporary files would be left behind when
      copying a file to a non-existing directory.

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

- [QT-353] (ODBC) Fixed issue of forward only datasets failing when not
  explicitly set so.
- [222678] Fixed QSqlTableModel: trying to delete the wrong row.
- (Interbase) Fixed crash when calling numRows on unknown query type.
- Fixed several database autotests.
- Fixed determination of end of odbc string on deficient driver.
- Fixed formatting of date strings in psql driver.
- Fixed mysql queries automatically getting prepared. Now have to explicitly
  prepare them if you want that functionality.
- Fixed failure when QSqlTableModel has null fields to update.
- Fixed missing isnan/isinf on some platforms (needed for postgres driver)
- Fixed ::record for dialect 3 named tables in interbase/firebird.
- Fixed invalid length for numeric fields in oracle.
- (ODBC) Fixed non-unicode strings should be strings, not bytearrays.

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

Qt for Linux/X11
----------------
- Fixed a bug where an empty KDEDIRS variable would bring /share into the icon
  search path.
- [KDE 191759] Plasma spinning in endless loop.
- QClipboard can copy/paste on all screens in a multiscreen configuration.
- Fixed a bug that prevented QClipboard to work after some time.


Qt for Mac OS X
---------------
- [252088] Drag and drop events will now consider the
  WA_TransparentForMouseEvents in Cocoa port.
- [255428] Fixed an issue when calling QWidget::raise() on hidden windows
  making them visible in Cocoa port.
- [256269] Window resize events triggered from QWidget::adjustSize() will now
  be sent as a non-spontaneous event in the Cocoa port.
- [258822] Fixed a crash when inserting the same menu twice in a menubar in
  Cocoa port.
- Fixed the wizard background images for Snow Leopard.


Qt for Windows
-----------------
- [250188] Fixed size windows will show the maximize button if asked explicitely.

Qt for Windows CE
-----------------
- [260702] Fixed restoring of minimized Windows.

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

- DirectFB
    * Make autorepeat work for DirectFB keyboard driver.
    * Fix a crash when resizing windows.
    * Fix an off by one when flipping surfaces that could lead to artifacts.
    * Make painting operations with QRegion clips go to DirectFB rather than
      Raster (when possible).
    * Make porter duff operations work for blits.
    * Various optimizations.
    * Handle more operations in hw.

