Qt 3.2.1 is a bugfix release. It maintains both forward and backward
compatibility (source and binary) with Qt 3.2.0


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

Compilers
---------

Small fixes to build with gcc-3.4.  Build fix for the DB2 Sql driver
on Borland.  Work around a compiler bug in Sun Forte 6.  Fix a build
issue for 64bit HP/UC.

Qt Motif Extension
------------------

Document a known problem related to clipboard and selection handling
between Qt and Motif components.  See the Qt Motif Extension
documentation for a more detailed description of the problem.

Qt Designer
-----------
Correctly remove connections to deleted actions from the meta
database.


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

General Fixes
-------------

- QApplication
        Update arguments passed to the constructor correctly when
        arguments have already been processed.
- QDockWindow
	Fix a regression against 3.1.2 with minimized dock windows.
- QDom
	Fix a bug in ownerDocument()
- QFontDialog
	Fix to small usability regressions from 3.1.2.
- QLineEdit
	Fix regression against 3.1.2: textChanged signal after 
	setText("") should contain a non null string.
- QMotifDialog [Qt Motif Extension]
- QMotifWidget [Qt Motif Extension]
	Fix incorrect usage of XtSetArg().  In certain cases, some
	variables would be incorrectly modified, resulting in
	out-of-bounds memory access and/or crashes.
- QPainter/QFontMetrics
	Fix some problems related to line breaking and size
	calculation of multi line text layouts.
- QSplitter
	Fix a problem with setCollapsible.
- QSqlCursor
	Fix updates in tables without a primary key.
- Sql
	Fix crash in odbc and db2 drivers when using binary fields.
- QTable
	Fix possible crash in the QTable destructor.
- QWidgetStack
	Fix a slight behavioral change in the sizeHint between 3.1.2
	and 3.2.
- QApplication::reverseLayout
	Fix some problems with dockwindows/toolbars in reverse layout
	mode.
- QListView
	Fix emitting of dropped().	

Platform Specific Issues
------------------------

Windows:

- QFont
	Fix possible memory corruption when printing.
	Windows 98: Fix a problem with displaying of russian
	text using the default font.
- QPainter
	Fix a regression printing text in high resolution mode.
- QPrinter
	Fix a problem in setPageSize().
	Windows 95/98/Me: Fix a possible crash.
- QWaitCondition and QThread
	Fix two possible race conditions.
- XP style
	Fix resource leak.
- QString
	QString::sprintf() work around a memory leak in the Windows C
	runtime.
- Dnd
	Fix problem with dragging URLs.
	Reverted back accept(), ignore(), acceptAction() to 3.1.x behavior.
- IME framework
	Better positioning of the IME composition window.

Mac:

- QStyle:
	Smaller fixes to the Mac Style.
	Some fixes for Panther.
- QFont
	Fixes for arabic; speed improvements.
	Make the NoAntialias flag work.

X11:

- QFont
	Fix possible crash with broken open type fonts.
- QWidget
	Fix possible crash in setMicroFocusHint().
- QPrinter
	Fix possible crash when drawing text with opaque background.
	Fix crash if printer tries to print to a nonexistant printer.
- QRegion
	Fix drawing problem when using some complex clip 
	regions on the painter.
- IME framework
	Fix a possible performance problem and server side memory
	leak.
- DnD
	Fix regression against 3.1.1 when dragging across multiple
	screens.

Embedded:

- QApplication
	Fix mouse event delivery bug with modal dialogs and touch
	screens.
- QRegion
	An empty rectangle will now create an empty region, like on
	the other platforms.
- QPixmap
	Preserve alpha channel in xform().
- QFont
	Make setPixelSize() work correctly.
- QImage
	Fix loading of BMP images.
- Build system
	Make the -no-zlib option work correctly.
