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


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

Compilers
---------

Make Qt work on Windows 9x compiled with Borland.

Meta Object Compiler
--------------------

Generate safer code for signals with pointer-to-pointer arguments.


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

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

- QButton
        Make sure button pops up when mouse leaves the button.
- QEffects
        Don't crash when widget is destroyed during effect.
- QFont
        Load the correct font for characters that have the 'Unicode'
        script assigned to them (e.g. the em-dash).
        Fix exact match for raw mode fonts.
        Fix conversion from unicode to gb2312 to make Chinese appear
        correctly again when using xlfd fonts.
- QLineEdit
        Proper behavior when dragging text inside the same line edit.
        Make sure the cursor is immediately displayed upon entering a
        line edit.
- QListView
        Update the scroll bars correctly when double clicking on the
        edge of the header.
- QPainter
        Fix case in text rendering, where overfull lines did not get
        layouted correctly.
        Fix the last known problems in Indic rendering.
- QProcess
        Make canReadLine...() work in a busy loop.
- QPrinter
        Set the default paper source properly.
- QPSPrinter
        Handle broken true type fonts better.
        Handle true type fonts with spaces in the family name.
- QRichText
        Fix a crash when zooming.
        Fix possible memory leak.
- QScrollBar
        Propagate context menu events that are not handled by the
        scroll bar.

- QString
        Support non-'C' locales for string-to-double conversion.
- QSql
        Oracle crash fix in some really weird situations.
- QTable
        Handle icons correctly when swapping columns/rows.
        Fix case where a dialog containing a table could hang when
        opening.
        Do not crash when QTableHeader::updateSelections() is called,
        without a current selection.
- QTextEdit
        Fixed crash in setCurrentFont() when in LogText mode.
        Fixed backward searches for the first character or word in a
        document.
- QTextEngine
        Fix memory leaks.
- QWidgetResizeHandler
        Improve user interaction.
- QXmlSimpleReader
        Fix reading of events after a skippedEntity().

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

Windows:

- QFontDatabase
        Report fixedPitch attribute for fonts correctly.
        Handle fonts with a hyphen in the name properly.
- QGLContext
        Thread safety fix for makeCurrent().
- QPixmap
        Detect alpha channel in pixmaps correctly.
        Fix crash on Windows 9x using alpha blended pixmaps with
        MemoryOptim.
        Fix memory leak when detaching copies from pixmaps with
        alpha channels.
        Make sure that sizes are correct after xForm().
        Fix drawing of a masked pixmap into a pixmap with an alpha
        channel.
- QPrinter
        Fix printer output of the drawPixmap()/drawImage() functions
        that take a rectangle as a parameter.
        Block all application windows modally when the system printer
        dialog is open.
- QWidget
        Speedup case where tablet support is enabled in library, but
        no tablet device is present.
- QWindowsXPStyle
        Fix gradient background of QLabels within QTabWidgets.
        Fix "password" character for systems without extended font
        support.

Mac:

        Improved documentation of Mac-specific issues. A number of
        general improvements, style fixes, optimizations and bugfixes
        have been made for Qt/Mac in 3.2.2. Some of the most visible
        are:

- QSizeGrip
        Handle hide/show better.
- QSocket
        More responsive handling of incoming data reads.
- QWidget
        Create widget even if widget flag combinations make no sense.
        Widget clipping fixes for OpenGL.
        Widget masking fixed.
        Fix the problem of a window being set active in show() and
        then losing its activation when returning from a second event
        loop.

X11:

- Drag'n'drop
        Stability improvements.
- QApplication
        Make sure that mouse events have proper coordinates when mouse
        enters widget.
- QFont
        Make sure that screen and printer metrics are the same for
        bitmapped fonts.
        Avoid crashes with invalid fonts.
- QPicture
        Fix text drawing.

Embedded:

- QWSPcMouseHandler
        Fix buffer overrun when reading from mouse device.
        Also look for mouse in /dev/inputs/mice when autodetecting.

- QPainter
        Fix rotated text on 4, 8 and 16 bpp screens.
