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

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

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

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
Tracker, or the Merge Request queue of the public source repository.

Qt Bug Tracker: http://bugreports.qt.nokia.com
Task Tracker:   http://qt.nokia.com/developer/task-tracker
Merge Request:  http://qt.gitorious.org


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

QtCore
------

 - QAtomicPointer
    * [QTBUG-7356] Fixed a compilation failure when using the Intel
      compiler on IA-64
 - QFile
    * Fixed double-buffering issue when opening files in buffered mode.
    * [QTBUG-7285] QFile::remove would() fail if an unrelated operation on the
      same instance had been previously failed. This manifested itself in
      QTemporaryFile failing to auto-remove files and QFile::copy() leaving
      temporary files behind in certain situations.
 - QFSFileEngine
    * Fix typo that made realpath() not be used.
 - QIODevice
    * Optimized readAll().
 - QReadWriteLock
    * [MR 426] Fixed documentation.
 - QXmlStreamWriter
    * [QTBUG-6893] Fixed adding extra Byte Order Marks when writing to a
      .xml file.

QtGui
-----

 - QApplication
    * [QTBUG-6098] Added a flag to avoid construction of application panes.
    * [QTBUG-7029] Fixed a crash when re-creating QApplication object due
      to a dangling gesture manager pointer.
 - QAbstractScrollArea
    * [QTBUG-1760] Reverted horizontal scrolling with mouse wheel when vertical
      scrollbar is hidden
 - QBmpHandler
    * [QTBUG-7530] Fixed an infinite loop that could occur when reading invalid
      BMP images.
 - QGraphicsEffect
    * [QTBUG-6901] Fixed performance problem when translating items with
      graphics effects.
 - QImage
    * [QTBUG-7231] Avoid an unnecessary copy in QImage::scaled().
 - QInputContext
    * [QTBUG-7439] Avoided the loss of preedit text when losing focus on
      Symbian.
 - QPDFEngine
    * [QTBUG-7249] Fixed the encoding of the Tile and Creator tags in the PDF
      engine.
 - [QT-2629] Implemented event filter functions for Symbian.
 - [QTBUG-7198] Setting a style sheet could break the checkbox position in
   item views.
 - [QTBUG-7253] Fixed wrong stroke clipping with the raster engine when using
   a QPen with a style other than SolidLine.

QtDBus
------

 - QDBusConnection
    * [QT-2307] Fixed sending of D-Bus method calls with QDBus::BlockWithGui.

QtNetwork
---------

 - QNetworkAccessManager
    * Optimizations
    * HTTP: Get rid of QAbstractSocket warnings that were sometimes displayed.
    * HTTP: setReadBufferSize() of the QNetworkReply finally is working on all
      layers.
    * [QTBUG-7713] HTTP: Fix bug related to re-sending a request.
    * [QTBUG-7060] Fixed an issue with parsing of HTTP headers like
      "private, max-age=300".
 - QSslCertificate
    * [QTBUG-6466] Fix issuerInfo() and subjectInfo().
 - QTcpSocket
    * [QTBUG-7344] Fix performance degredation with write() on Windows.
    * [QTBUG-7316,QTBUG-7317] Handle unknown errors from socket engine.

QtOpenGL
--------

 - [QTBUG-7490] Better support for user-generated binary shaders.
 - QGLPixelBuffer
    * [QTBUG-7476] Fixed a crash under X11 when drawing QPixmaps to
      QGLPixelBuffers.
 - QGL2PaintEngineEx
    * [QTBUG-7203] Reset the GL stencil mask, op and function in resetGLState().
 - QGLWidget
    * [QTBUG-7213] Fixed QGLWidget::renderPixmap() on Windows.


QtOpenVG
--------

 - [QTBUG-7791] Optimize single-rect IntersectClip in OpenVG using the scissor.
 - [QTBUG-7864] Use OpenVG scissor on 90/180/270 rotations and simple clips.

QtMultimedia
------------

 - QAudioInput
    * [QTBUG-7044]: QAudioInput stopped working correctly after
      suspend()/resume() on linux.

Examples
--------

 - QtMultimedia
    * [MR 418] Fixed the example for QAudioOutput.
 - WebKit
    * [MR 2235] Added the framecapture example to the default build.


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

Qt for Linux/X11
----------------
 - Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
   in Qt/X11.
 - Fixed a crash when an input method tries to create a widget after the
   application is destroyed.
 - [QTBUG-6952] Fixed a problem using NoButtons in spinbox with QGtkStyle.
 - [QTBUG-7504] Fixed missing focus rect on check- and radiobutton with
    some GTK+ themes.
 - [QTBUG-6522] Fixed missing menu separator in some GTK+ themes.

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

 - [QTBUG-7832]: Restored missing margins around non-unified toolbars.
 - [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget
   on Cocoa.
 - [QTBUG-7481]: Re-added the Close button in QPrintPreviewDialog for
   Mac/Carbon.
 - [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4
   lead to crash.
 - [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results
   in top menu hiding.
 - [QTBUG-7086]: QFileDialog now correctly responds to fileMode & acceptMode
   changes.
 - [QTBUG-7162]: Fixed a crash in Designer when previewing a QMainWindow with
   native toolbar.
 - [QTBUG-7305]: Fixed a crash when deleting QMainWindow with native toolbar
   on Cocoa.
 - [QTBUG-6882]: Fixed a text layout issue with QHeaderView in right-to-left
   mode.

DirectFB
--------

 - Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
   in DirectFB.
 - Reimplement QPixmapData::scroll for QDirectFBPixmapData which optimizes
   QPixmap::scroll.
 - Fix a rendering issue for semi-transparent top level windows in DirectFB.
 - Make it possible to fall back to the raster engine for stretch blits in
   DirectFB using QT_NO_DIRECTFB_STRETCHBLIT.

Qt for Symbian
--------------

 - [QTBUG-6556] Improve the DEF file handling scheme, to allow simple enable/
   disable of DEF file usage (for use _during development only_ to decouple
   the need to update the DEF files at the precise point that symbols are
   removed, therefore allowing builds by CI systems to succeed even if symbols
   have been removed.  This does not remove the need to update the DEF files
   before release.  NOTE: Builds generated using this flag are not binary
   compatible with previous versions of Qt.)
 - QProcess
   * [QTBUG-7667] Fixed no-timeout case for QProcess::waitForFinished.
 - qmake
   * [QTBUG-7695] Added support for ifdeffing for manufacturer in generated
     pkg files.
   * [QTBUG-7908] Smart installer package generation support.
 - Patch_capabilities script
    * Added support for embedded sis name/uid patching.
 - Qt deployment
    * [QTBUG-7518] Backup and restore support for Qt libs.


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

 - Designer
   * [QTBUG-6965] Enabled editing seconds of QDateTime-type properties.
   * [QTBUG-6757] Fixed bug where selection handles would be affected by
     a style sheet set on the main form.

 - uic3
   * [QTBUG-7404] Added option to preserve layout names set by Qt 3 Designer.

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

 - QNetworkAccessManager cache
   * QNetworkAccessManager will no longer return expired pages, as
     stated in the documentation
   * The behaviour of PreferCache and PreferNetwork modes now match
     the documentation more closely

 - QUrl
    * QUrl will now accept hostnames ending in dot and will not treat
      those as invalid hostnames
