Changes 3.0.5
Product:
Qt
Version:
3.0.5
Qt 3.0.5 is a bugfix release.
To avoid problems with loading plugins which link against different Qt
libraries, the semantics of plugin loading has been changed. For
detailed information look at the updated Plugin HOWTO
($QTDIR/doc/html/plugin-howto.html)
****************************************************************************
* General *
****************************************************************************
BINARY COMPATIBILITY WARNING: Qt 3.0.5 is backward and forward binary
compatible with Qt 3.0.6, and is planned to be binary compatible with
Qt 3.1. Unfortunately Qt 3.0.5 is not 100% backward binary compatible
with Qt 3.0.4 (a class got a few bytes smaller), meaning executables
compiled with 3.0.5 may not run properly when linked dynamically to
3.0.4. at runtime. Due to its wide distributed in various GNU/Linux
distributions, we have decided to stick with 3.0.5's ABI. If you ship
dynamically linked executables, we suggest putting a QT_REQUIRE_VERSION macro
at the beginning of your main function:
...
#include <qmessagebox.h>
...
int main( int argc, char **argv )
{
QT_REQUIRE_VERSION( argc, argv, "3.0.5" )
...
}
The macro will show a message box with a warning message and then
abort the application gracefully with exit(1).
The version number format of QT_VERSION changed. It is now 0xmmiibb
(m = major, i = minor, b = bugfix). Qt 3.0.5's QT_VERSION is 0x030005.
Qt 3.0.5 introduces changes in some aspects of plugins, in particular
their loading, path handling and library versions. As a result of this
change, NO plugins compiled with Qt 3.0.4 and earlier can be loaded by
Qt 3.0.5 and later. ALL plugins must be recompiled to be loaded by 3.0.5
and later.
All the larger template methods in QValueList, QMap, QPair and QTL,
which used to be inline, are no longer inline. This saves a significant
amount of code size. If you prefer to keep them inlined (as before),
define Q_INLINE_TEMPLATES in qglobal.h.
****************************************************************************
* Library *
****************************************************************************
- QApplication:
Reset the mouse grab when entering a modal loop. Support the
setting of data without running the QApplication event loop.
Windows only: Bugfix for input methods on Win98. Support mouse
wheel on multihead setups with negative coordinates.
- QCanvasSprite:
Fix out-of-bounds read in frame handling.
- QCheckTableItem:
Fixed isChecked() so that it no longer calls updateCell() (which
in turn calls QCheckTableItem::paintCell()). This means that
isChecked() can now be used inside paintCell() without causing
endless recursion.
- QDataBrowser:
Clear the form values if a delete operation deletes the last
record in the form.
- QDataTable:
Don't let setColumnStrechable() crash if the table doesn't
contain any columns.
- QDateTimeEdit:
Spin the section the mouse is over when wheeling.
- QDir:
Removed the warning resulting from attempts to call entryList()
on a non-existent directory. The behaviour for this case is
safely handled and well defined.
- QDns:
Windows only: Better support of DNS lookup if the DNS servers
are configured via DHCP (especially under Windows NT).
- QDockArea:
Skip hidden dock windows when resizing them in the dock area.
- QDockWindow:
Don't eat the Escape key unless the dockwindow is being moved by
the mouse, in which case simply stop the moving of the
dockwindow.
- QDom:
The hasAttributes() function now only returns TRUE if the node
really has attributes.
- QFileDialog:
Fixed handling filenames which contain non latin1 characters.
- QFtp:
Respect the line continuation of replies from the server. This
makes QFtp work with a wider ranger of FTP servers.
- QHeader:
Fixed the height of table headers with multi-line
labels. Fixed adjustHeaderSize() to work with sections smaller
that 20 pixels. When a label doesn't have a label explicitly
set return the number associated with the label.
- QIconView:
Fixed sizehint to return a proper size when the iconview has
scrollbars.
- QInputDialog:
Accept empty text as still being text.
- QIODevice:
Unix only: readBlock() returns -1 if a fatal error occurs like
it does on Windows and Mac (and as it is documented to).
- QLabel:
Fixed sizeHint() so that it doesn't call the virtual
minimumSizeHint() function.
- QLineEdit:
Reset blink timer when receiving a keypress event to keep the
cursor visible during navigation.
Windows only: CTRL+A now calls selectAll(), not home().
- QListView:
Fixed drawing the branches. Fixed updating the truncated text
of cells. Removed gratuitous inefficiency when sorting is
disabled. If the item is not selected, but is current, then
don't rename when it is clicked to be selected. Calculate
rectangle for focus indicator correctly if the first column is
too small for the item.
- QMenuBar:
Fixed accelerators. QMenuBar Make more Window-ish for
WindowsStyle styles.
- QMutex:
Release the mutex again when testing locked status with
locked. Don't block in tryLock when called twice by the same
thread.
- QODBCDriver:
Add support for qualifying a tablename with catalog and schema
names.
- QODBCResult:
Implement fetchNext() properly. Speeds up access to flat
files.
- QOCIDriver:
Fix crash when trying to read empty BLOB fields. Speed up the
QOCIDriver::primaryIndex() call.
- QOCIResult:
Fixed support for RAW and LONG RAW fields. Make RAW fields
return correct field sizes, not just the column size.
- QPainter:
QPainter clipping to an empty region resulted in no clipping
on Windows, while everything was clipped on X11. Adjusted
Windows behavior to match X11.
Windows only: Fixed drawLine() on Windows 95/98/Me to behave
the same as on X11 and NT/2000 for pen widths >=1.
- QPicture:
SVG support: Fixed default element stroke. Added support for
reading and writing bold and cursive font styles. Corrected
default brush and polyline brush
- QPopupMenu:
Fixed inserting widgets with index smaller than 0. Fixed
accelerators. Passing in an iconset and custom menu data now
shows the icon in the menu item.
X11 only: Fixed placement of popup menus on normal X11
multiscreen.
- QPrinter:
QPrinter setMinMax() also sets a reasonable default for
fromPage and toPage if these weren't already set. QPrinter
use the resolution the user sets with setResolution() in all
cases.
Windows only: make QPrinter work without having to call
setup(). Fixed a problem where pixmaps where printed upside
down on certain printer drivers. On some Windows printer
drivers the page offsets where wrong on the second page when
using setFullPage( TRUE ). Fixed some problems leading to
memory corruption with some Windows printer drivers on Win95.
Windows 95/98 only: fix setPrinterName() method.
- QPrintDialog:
Windows only: Disabled the selection radiobutton, since we don't
support this.
- QProcess:
Windows only: normalExit() now returns FALSE when the process
was terminated with a call to kill(). Fixed some rare blocking
behaviour in the readStdin() and readStdout() functions.
- QPSPrinter:
Output encapsulated ps, if only one page is printed and the
output is to a file with '.eps' as extension.
- QPSQLDriver:
Map the TIMESTAMPTZOID type defined in PostgreSQL 7.2 to
QVariant::DateTime, not QString. Make character based fields
return correct null/empty strings.
- QRichText:
Greatly improved HTML export. Handle tables taller than 32767
pixels. Fixes with lists in HTML documents. Many other
rendering fixes and memory and speed optimizations. Fixed
parsing <br>. Now supports the Unicode linebreak
character. Speedup for removeSelections() when only text in
one para is selected. Fixed AlignJustify to work properly with
tabs. Fixed an endless loop in find(). Draw the text cursor
correctly when the paragraph spacing is larger than 0.
- QSignal:
Interpret slots whose name contains 'int' correctly
(e.g. intSlot(int)).
- QSimpleRichText:
QSimpleRichtext anchorAt() takes images into account.
- QSocket/QSocketDevice:
Windows only: Detect when the peer closes the connection even
if you are writing a lot of data to the socket.
- QStyleSheetItem:
setLineSpacing() now really defines the linespacing of a line,
not an extra space added to the line spacing.
- QTable:
Shift+Click on table headers now works as expected in multi
selection mode. When clicking on a cell item which has the edit
type QTableItem::WhenCurrent, forward mouse clicks to the cell
widget, so that it is enough to click on e.g. a checkbox item or
combobox item once, and no second click is needed to toggle the
item or open the combobox. clearCell() now deletes the cell's
item as documented. Fixed tabbing over disabled items. Columns
that are stretchable also hideable. If the current row or the
current column gets hidden, move the current cell to a visible
one. Fixed updating cell widget's positions in setNumRows() and
setNumCols(). Fixed activateNextCell(). Improved speed of
removeRows(), removeColumns(), etc. (all functions which swap
columns and rows) for large tables.
- QTabWidget:
Make currentPage() return a widget which is consistent with
page( currentPageIndex() ).
- QTDSDriver:
Major speed improvement when iterating over large result
sets. Add support for BIT field types. Cancel any previous
queries before a new one is executed when the same
QSqlQuery/QSqlCursor object is used. Previously the result set
had to be exhausted for this to work.
Windows only: Make numRowsAffected() return -1 if the result
set has not yet been processed.
- QTextEdit:
Fixed append() for the richtext case (it didn't add a new
paragraph for each append). Made the output format of the
editor in rich text mode lossless. Fixed support for line
breaks, they now start a new line in the same paragraph rather
than a new paragraph. Fixed losing anchor information
on splitting paragraphs. In RichText mode Ctrl+Return inserts
a line break and does not start a new paragraph. Fixed a
repaint problem that sometimes left garbage at the end of the
editor widget when removing some text. Fixed reacting to
palette changes and updating the text color correctly. Pasting
over selected text removes the selected text before inserting
the clipboard contents.
- QTextStream:
Avoid calling slow function QChar::networkOrdered()
repeatedly.
- QToolBar:
Don't add hidden widgets to extension menu.
- QToolTip:
If there is just a group text and no tip, then behave
correctly and hide the group text when the mouse leaves the
tip area.
- QUrl:
Make the class Unicode aware. If you construct a QUrl with the
default constructor and set the entries by hand, the isValid()
function now returns TRUE.
- QWaitCondition:
Reset waitcondition when using wakeAll().
- QWidget:
Don't set the application cursor for invisible widgets.
- QWorkspace:
Set focus back to the minimized window if the new focused window
is also minimized. Don't return empty MDI clients in
the list returned by windowList().
- QXML:
Report the line number of the XML document as expected when the
line termination is done by '
'.
****************************************************************************
* Extensions *
****************************************************************************
****************************************************************************
* Other *
****************************************************************************
****************************************************************************
* Qt/Embedded-specific changes *
****************************************************************************
****************************************************************************
* Qt/Mac-specific changes *
****************************************************************************

