Qt 4.3.4 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 4.3.0 through Qt 4.3.3.

The Qt version 4.3 series is binary compatible with the 4.2.x, 4.1.x and
4.0.x series. Applications compiled for Qt 4.0, 4.1 or 4.2 will continue to
run with Qt 4.3.

****************************************************************************
*                           General                                        *
****************************************************************************

General Improvements
--------------------

- Legal

    * This version adds the GNU General Public License (GPL) version 3
      to all Qt Open Source editions. The GPL Exception version 1.1
      applies to both versions of the GPL license.

Build System
------------
    * Ensure that Qt plugin paths are only added once to the LIBS variable.
    * MinGW: Ensure that PRE_TARGETDEPS and POST_TARGETDEPS are properly
      escaped in dependency lists, so they match the rules in the Makefiles.

I18n
----

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

General Improvements
--------------------

- QApplication
    * [193842] Fixed a bug where a statically built Qt would still try
      to load Qt plugins (such as style, imageformat, and sqldriver
      plugins) which causes the application to crash.

- QCoreApplication
    * [190356] Fixed a regression from 4.2 where the order of posted
      events with the same priority would be sent out of order.

- QComboBox
    * [166349] Fixed crash resulting from making the combo box non-editable from a
      slot caused by a line edit Key_Enter event.

- QFileDialog
    * [193483] Fixed crash when hidden directory is set as the current directory
      and hidden directories are not set to be visible.
    * [191301] Fixed QFileDialog closes even if the users indicate they do not
      wish to replace.

- QSslSocket
    * [191705] Fixed crash on remote disconnect
    * [190133] Fixed security bug in QSslSocket's certificate verification

- QTreeWidget
    * [191300] Adding QTreeWidgetItems into a sorted QTreeWidget can be slow.
    * [155700] Fixed potential assert when deleting QTreeWidgetItems with
      sorting enabled.

- QDirModel
    * [191765] Fixed crash when using QModelIndex from QDirModel::index()
      for a UNC path.

- QHeaderView
    * [190624] Fixed case when stretch resize sections would give wrong
      section sizes to all other sections.

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


****************************************************************************
*                               Examples                                   *
****************************************************************************


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

X11
---

Windows
-------
* [191309] Fixed a bug preventing browsing to UNC paths in the file dialog.
* [180010] Fixed a memleak in the raster paint engine. The HDC for the raster buffer was
	   not cleaned up correctly.
* [191305] Fixed a possible memleak and problem with calling QGLPixelBuffer::doneCurrent()
	   under Windows.

Mac OS X
--------
* [188837] Fixed a bug that would make Qt applications not quit when someone logs out of Leopard
* [192030] Prevent a crash when dragging over a widget that has a focus frame
* [291319] Send the kEventQtRequestWindowChange event when moving QGLWidgets.
* Fix binary compatibility issue in the OpenGL module that could cause problems when using
   Qt binaries compiled on Tiger for development on Leopard. The Mac binary package now supports 
   development on Leopard.

Qtopia Core
-----------
* [189195] Fix crash when using fonts containing embedded bitmaps with
  zero width and non-zero height.
* [189829] Fixed parsing of device specification in the QWS_KEYBOARD
  environment variable when specifying multiple keyboards.
