blob: 79e01364d07d38b45e693d551467594cf7238c87 [file] [log] [blame]
Qt 3.1.2 is a bugfix release. It maintains both forward and backward
compatibility (source and binary) with Qt 3.1.1
****************************************************************************
* General *
****************************************************************************
Some build fixes on different platforms. Many small documentation
fixes.
XFree86 only: Tablet support now also looks for devices called "pen",
not just "stylus" and "eraser".
Animations: Less CPU-consuming roll effects.
X11 only: Disable effects on displays with <16bpp (rather than
falling back to the scrolling).
****************************************************************************
* Library *
****************************************************************************
- QAccel
Allow localization of status bar messages. Try harder to
distinguish between an accelerator and the identical
accelerator with Shift in case on of them is currently
disabled.
- QAccessible
Send accessibility notification for selection changes in
menubars and popup menus. Send accessibility
notifications for QListBox currentItem/selection changes.
- QActionGroup
Implement visibility for drop-down actiongroups.
- QApplication
Return focus to the widget that had it before a popup opened
even if the focus is passed on during the show event handling.
When the programmer/user explicitly sets the style (either
with QApplication::setStyle or the -style command line
option), do not reset the style on settings changes. Creating
a second QApplication reads the settings again.
Windows only: Emit aboutToQuit() when the user logs off. Send
a focusOut event to the focus widget when the user tries to
switch applications using Alt+Tab. Fixed setting of
desktop-wide fade and scroll effects.
Windows95/98/Me: Fixed enter/leave handling. Among other
benefits this makes tooltips work more reliably.
X11 only: Various fixes for input methods, e.g. Korean
'ami'. Some startup performance improvements with
QSettings. Mark the internal wakeUpGuiThread() pipe with
FD_CLOEXEC. Call XFilterEvent before the public X11 event
filters to avoid applications filtering out events that are
necessary for input methods to operate. Removed old en_US
locale workaround for Solaris. Close all open popups when
clicking on a screen different from the popup's screen. Do not
force 256 colors on 8-bit display (used to be a workaround for
a vnc bug).
Mac only: Popupmenus that are dismissed by clicking outside of their
bounds will no longer send the event to the widget clicked on (to avoid
selection changing when canceling a context menu). QContextMenuEvents
will be sent in the same style as Windows/X11 to make the platforms
more consistent, additionally mapping of Ctrl+Click to RightButton has
been added to allow easy context menu handling. Added warnings when a
Qt application is run outside of an application bundle (in GUI mode)
this will prevent accidental starving from events. Correct state when a
modal dialog is shown (to disable the menubar) is used now, and is
emulated to feel like Carbon applications. Fixed bug so that
QApplication::processEvents() can be called before
QApplication::exec(). Window activation will not change when a popup
menu is displayed. Toolbar toggle button will only toggle the top dock
in a QMainWindow. European text composition is supported now to take
advantage of TextInput modules available on Mac OS X. Window activation
has been improved to allow interleaving windows of different classes
correctly (to decrease differences between X11/Windows and Mac).
- QBuffer
IO_Truncate no longer detaches the explicitly shared byte array.
- QButton
In setPixmap(), avoid laying out again if the new pixmap does
not change the size. Use QSharedDoubleBuffer only if it is
enabled (this avoids repainting errors).
- QButtonGroup
Improve hit testing for cursor navigation.
- QCanvas
Do not try to double buffer invalid areas.
- QCanvasEllipse
Windows only: Workaround a Windows limitation that does not
support 2x2 ellipse rendering without a pen. Do not try to
double buffer invalid areas.
- QColorDialog
Allow the setting of all 48 standard colors.
- QComboBox
Close any popup menus or listboxes when disabling the combobox.
Fix text alignment when large pixmaps were inserted into the
combobox.
- QComplexText
Added correct positioning specs for all of Thai and Lao. Some
reordering fixes.
- QCursor
Mac only: Correct interpretation of mask/data of a QCursor so that the
mask will can be used as documented.
- QDate
Fixed addYears() for days missing in certain years.
- QDateTimeEdit
Compute an improved layout for the QDateEdit and QTimeEdit
components of the QDateTimeEdit (based on the size hints). Set
the size policy of the QDateTimeEdit to (Minimum, Fixed).
In time edit: If the display is AM/PM, do not accept 13-24 as
valid input for the hours. Go to the min/max value when
stepping down/up goes out of the valid range.
- QDesktopWidget
Mac only: Fixes to availableGeometry().
- QDialog
Fixed a visibility issue with setExtension().
X11 only: Modal dialogs that have no parent set their
WM_TRANSIENT_FOR hint to the main application widget (not
root). Do not raise the active modal widget if another one
gets focus. This used to be an incorrect workaround for a
now-obsolete problem where CDE would not keep modal dialogs
above their parents.
Do not reposition laid out dialogs that restore their geometry
in a polish() reimplementation.
- QDict
Handle zero sized hash tables.
- QDns
Slightly more reliable now, fixed a memory leak.
- QDockArea
Fixed resizing of a QDockWindow is no longer affected by
another closed QDockWindow in the same QDockArea. If a QDockWindow
has changed its sizeHint layout items use now the new size.
- QDockWindow
When undocking a window, use the last undocked size if we have
one.
X11 only: Make sure the moving frame is drawn on the correct screen.
Windows only: Fixed some focus issues.
- QDom
Create entity references for unknown entities.
- QDragManager
X11 only: Raise cursor decoration. Improved Motif drop support
to support non-textual data.
Windows only: Do not send any drag events if we don't have a receiver.
Windows 2000 only: Ignore illegal requests for error-clipboard
format when dropping files onto Explorer.
- QEventLoop
Window only: Fixed mutex lock problem. Fixed processEvents()
with ExcludeUserInput. Fixed QSocketNotifiers not being
removed when the notifier gets deleted and the event
loop is blocking.
Unix only: Fixed a 64 bit problem.
Mac only: Fixed hasPendingEvents() for non-gui apps.
- QFileDialog
Fix drag'n'drop for the first click into the listbox. Do not
auto-complete when saving a file. Enabled drag'n'drop of files
for all modes. In Directory* mode, do not set the filter to a
non-existent directory if one is specified.
Windows only: Fixed icon lookup.
Win 98/Me only: Make sure getExistingDirectory() doesn't
modify the current directory.
Mac only: Encoding fixes.
- QFont
Win95 only: Make symbol fonts work.
X11 only: Don't change the Xft enabled/disabled setting
at runtime. Avoid some X server roundtrips when loading fonts.
- QFontDialog
Fixed getFont() in case no default font is specified.
- QFrame
Turn on focus and mouse-over style flags for frame painting.
- QFtp
If the server does not expect a password (i.e. if you are
already logged in after you sent the username), do not send
the password since this might lead to errors.
- QGLWidget
X11 only: Xft fonts won't work with glXUseXFont() - so do not
try to use them.
Win32 only: Fixed text rendering to pixmap issues.
Mac only: Improved responsiveness when resizing opengl widgets.
Mac only: Optimized swapping between accelerated and
non-accelerated case.
Mac 10.2 only: Improved performance in the case of overlapping
opengl widgets.
- QHBoxLayout
Handle direction changes in user code.
- QHeader
Improved sizeHint() takes the arrows of sorted columns
into account. Fix redrawing problems when moving header
sections. Ignore grip-margin in mouse handling for
non-resizable sections.
- QHttp
Fixed a memory leak. (With thanks to valgrind's developer for
this useful tool). Improved head() implementation to actually
use HEAD requests. Accepts responses from web servers that
return \n instead of \r\n as line separators. Fixed a rare
infinite loop issue.
- QIconView:
Clip item drawing to current container to fix drawing of
pixmaps with alpha channels.
- QImageIO
jpegio: Fixed potential buffer overrun.
gif: Fixed a crash for invalid gif files.
- QInputContext
X11 only: Try harder to provide the input method with an
appropriate - and available - fontset.
- QInputDialog
Fixed size hint when using height-for-width rich text.
- QKeySequence
Fixed operator==() for some special cases.
- QLabel
When the the label is disabled, use identical color roles for both
rich text and plain text.
- QLibrary
Mac only: Return failure response when a library cannot be opened
due to missing symbols.
- QLineEdit
Do not truncate the text when we validateAndSet a text which
is longer than maxLength, but disallow the input. Respect
maxLength() in setText(). Make displayText() and selectedText()
not strip non-breaking spaces anymore. Fixed memory leak when
adding and deleting line edits. Undo now clears the current
selection. Undo/redo now works when overwriting the selection.
Fixed memory leak on constructing/destructing line edits. Give
line edit ownership of the popup menu returned by the default
createPopupMenu() implementation.
- QListView
Fixed background brush origin when using double buffering. Do
not resize a stretchable column in widthChanged(). Fixed
selecting when auto-scrolling. Initialize multi-selection
anchor. Accept drops outside items when acceptDrops() is true.
Use anchor correctly in Extended selection mode (also for
mouseMove). Make right clicking on a selected item not change
the selection. The AlignHCenter flag of a QCheckListItem now
behaves like for normal QListViewItems. Speed up opening and
closing of invisible items. Fixed a memory leak in removeColumn()
Single selection mode: If the selected item is taken out of the
listview, unselect it and emit selectionChanged(). Fixed
deselecting in multi-selection modes. Right release outside an
item in a listview no longer clears the selection if
ControlButton is set.
- QListViewItem
Invalidate column sorting in moveToJustAfter().
- QLocalFs
The network protocol for local file systems sets sets the
right permissions for the QUrlInfo objects if you do a
QUrlOperator::listChildren().
- QMainWindow
Fixed orientation handler calls.
- QMap
Fixed conversion from std::map.
- QMenuBar
Mac only: Fix for destruction of menu bars.
Mac only: Use process name instead of argv.
- QObject
Always emit the destroyed() signal, even when signals are
blocked.
- QPaintDevice
Mac only: Fixed raster op. for bitBlt.
- QPainter
X11 only: Fix for rotated rectangles. Fixed drawPolygon() with
winding being false.
Mac only: drawText() fixes.
Mac only: Fix for drawPie().
- QPicture
Warn about and catch save operations on still active devices.
- QPixmap
Made grabWidget() more robust.
X11 only: Fixed a bug in grabWindow(), fixes in
convertFromImage() for MonoOnly.
- QPointArray
The makeArc() function is now inclusive in respect of the start and
end points.
- QPopupMenu
If there is a custom QWhatsThis installed for the whole menu
but no whatsThis set for the item, use the custom QWhatsThis
to get the help text. Improved size for multi-column popups.
Mac only: Improved scrollable popups
Mac only: Fix handling of popupmenu dismissing mouse presses.
- QPrintDialog
Fix reentrancy issues when reading printer dialog settings.
Windows only: Handle lack of default printers more
gracefully.
- QPrinter
Windows only: Fix reentrancy issues and make sure that all
handles are updated correctly. Improved bottom and right
margin calculation. Fixed some problems with image printing.
Mac only: Support for high resolution printing. Support 1-bit
masking for pixmaps.
- QProcess
If the process's file descriptor is closed for stdout or
stderr, but the line in the buffer does not end with a \n or
\r\n, it is still possible to read this data using readLine().
Windows only: Make it safe to call qApp->processEvents() in a
slot connected to QProcess::readyReadStdout(). Fixed start()
with no arguments. Use a non-blocking file descriptor for
writes to stdin. Avoid leaking of handles.
- QPSPrinter
Fixed codec for Korean PostScript fonts (ksc5601.1987-0, not
the listbox. Do not auto-complete when saving a
fileeucKR). Fixed memory leak.
- QRichText
Improved Asian line breaking: Avoid breaking before
punctuation and closing braces and after opening braces. Fixed
a freed memory access problem with floating items on
destruction. When copying rich application/x-qrichtext, include
format information for the initial characters until the first
complete span. Make text="color" attributes in qt and body
tags work again.
- QScrollView
Restored the Qt 3 default sizeHint() that depends on the
scroll view's content, restricted within a 'sane' range (this
has no impact on most child classes, which already reimplement
sizeHint()).
- QSemaphore
Fixed race condition in operator-=().
Unix only: A bit more robust.
- QSettings
Implement scoping for file-based settings (Unix and
Ini-modes). Support storing and reading null strings. Other
fixes.
X11 only: Fixed rehash issues when using multiple screens.
Windows and Mac: Completed Ini mode.
- QSocket
If the read retruns 0, safely assume that the peer closed the
connection. Fixed readyRead sometimes not being
emitted. Fixed a select bug when the other end terminates
the connection. Some 64 bit fixes.
- QSound
Mac only: Implemented stop().
- QSplitter
Make sizes() return 0 for collapsed widgets.
- QSqlDriver
All drivers: Fixed crashes when accessing out of bound
fields. Clear the openError() flag when opening a connection
successfully.
MySQL only: Make use of mysql_use_result() in forward-only mode.
TDS only: Return NULL QVariants for NULL fields.
ODBC only: Do not require the SERVER keyword to be in a
connection string. Fix Unicode issues with MS Access. Allow
MS Access people to create a connection string without
creating a DSN entry first.
- QSqlQuery
Real values in queries containing placeholders were in some
cases incorrectly replaced in emulated prepared queries.
Added support for forward only queries in MySQL.
- QStatusBar
Make sure QStatusBar updates the minimum height when a child
widget triggers a relayout (e.g. from size/font/etc. changes).
- QString
Safer QString->std::string conversion (handles null-string
case). Fixed 64-bit issue in toLong() and toULong(). Make
prepend(), append() and operator+=() work with a QByteArray
argument that is not 0-terminated. Since this
fix is done in inline functions, you must recompile your
application to benefit from it. Make QString(const
QByteArray&) respect the array's size where a codec for
C strings is defined. Performance improvements for lower()
and upper(). Fix toDouble() when string contains trailing
whitespace.
- QSvgDevice
No background for Bezier curves. Fixed omission of font-family
attribute in SVG generator. Fixed bounding rect mapping.
- QStyle (and subclasses)
Usable size for subcontrols for small scrollbars. Fixed MDI
document window titlebar clipping.
XP style: Support non-default group boxes. Corrected tab
widget border drawing. More compliant dock window
appearance. Fixed translations for QCheckTableItem and
QComboTableItem.
Windows style: Use the highlighted text color role for arrows
in menus. Allow drawing of list view expand controls without
branches.
SGI style: Use correct background brush on pushbuttons with
popdown arrows.
Mac style (Mac only): Comboboxes will now be smaller (and closer to
Aqua Style suggested sizes). Expansion widgets (in a listview) will
now draw in the correct background color to allow non-white listviews.
- QSpinBox
Stop spinning when users press a button other than the
left one. Support Key_Enter in addition to Key_Return as the
documentation always stated.
- QTabBar
Let arrow buttons react correctly on style changes.
- QTabDialog
Fix reverse layout for right to left languages.
- QTable
Catch hideColumn() on tables with too few columns. Fixed an
endless recursion when swapping header sections. Fixed SingleRow
selection when using the vertical header. Emit the
sizeChange() signal when resizing a table header section with
a double click. Fixed set*MovingEnabled() when the selection
mode is NoSelection. Fix selection drawing for focusStyle ==
FollowFocus. Fixed a memory leak.
- QTableItem
Use virtual text() method for calculations instead of accessing the
data member directly. Do not crash when destroying a table item that
is not in a table.
- QTextCodec:
Fixed a bug in the Unicode -> jisx0208 conversion table.
- QTextEdit
Made setFormat() much faster when undo/redo is
disabled. Fixed double deletion crash when clearing a document
with floating custom items. AccelOverride events with Shift
pressed now work the same as for a normal key press.
LogText mode: Allow spaces in the font color tag. Fixed
background redraw issue. Stop scrollbar from disappearing
due to laying out the document incorrectly.
- QThread
Unix only: Do not rely on PTHREAD_MUTEX_INITIALIZER and
PTHREAD_COND_INITIALIZER. Fixed timeout calculation in
sleep().
- QTimeEdit
Typing in input for the first time now overwrites the existing
value.
- QToolButton
Fixed width calculation for multiline text.
- QTooltip
Try hard to avoid tooltips for widgets in inactive
windows. Use screen geometry rather than available geometry
for positioning. Avoid the mouse cursor covering part of the
tooltip.
- QTranslator
Notify main windows when installing an empty translator.
- QUrlOperator
Make setNameFilter() work with FTP.
- QValueVector
Fix operator==() to work as expected if the two vectors do not have
the same size.
- QVariant
Fixed canCast() for Bool -> String and ByteArray -> String conversion.
Fixed operator==() for maps. Fixed the asDouble() function to
detach first before a conversion is done. After streaming into
a QVariant isNull() now returns false.
- QWaitCondition
Unix only: Make sure the mutex is destroyed after it is
unlocked.
- QWhatsThis
Use screen geometry rather than available geometry
for positioning.
- QWidget
In adjustSize(), process LayoutHint events for all widgets,
not only this widget. Fixed a visibility issue with
reparent(). Fixed recursive update of child widgets with
background origin not being WidgetOrigin. Fixed isEnabledTo().
Windows only: Fixed mapFromGlobal() / mapToGlobal() for
widgets that are not visible.
X11 only: Set the WM_CLIENT_LEADER and SM_CLIENT_ID properties
according to the ICCCM (section 5.1). We accomplish this by
creating a hidden toplevel window to act as the client leader,
and all toplevel widgets will use this window as the client
leader. Fixed calling show() on minimized windows. Fixes to
grabWindow() for platforms that support different color depths
on one display.
Windows only: Handle frameGeometry() changes when users change
the titlebar font.
Mac only: Reparent fixes so that visiblity of a toplevel window
will be retained as well as to avoid painting errors when reparented
onto a different window. Fixed painting errors when a widget is
interactively moved off screen. showNormal() will now toggle
correctly when a window is minimized, additionally toggling between
showMaximized()/showNormal() will operate as expected. Qt will now
try to prevent placing a window partially offscreen. This will not
over-ride explicit window positioning, but it will correct default
placement.
- QWidgetStack
Make removeWidget() safe when there are several widgets
with the same id.
- QWorkspace
If the active window is clicked on, transfer focus to
the child. Restore focus to old subcontrol when changing the
active MDI window. Make sure a MDI window is not resized below
a child widget's minimum size. Do not allow resizing windows
when we have an active popup window. Another fix to the
windowActivated() signal. Fixed resize handling for fixed-size
windows.
- QXmlSimpleReader
Fixed a memory leak for incremental parsing.
****************************************************************************
* Tools *
****************************************************************************
- Qt Designer
Some small usability improvements and crash fixes. Fixed
editing properties of multiple selected widgets for custom
widgets. Fixed some problems with pixmaps, when using a pixmap
function. Allow entering ':' in the class name in the
form settings dialog (for namespaces). Do not show deleted
toolbars in the object explorer. Fixed inserting widgets into
toolbars. Fixed displaying nested widget stacks in the object
explorer. Added an option to enable auto saving. Fixed some
issues with auto-indent in the C++ editor plugin. Fixed
problems with slots which have namespaces in their function
arguments. Do not save invalid pixmaps. whatsThis properties
can now be edited with the richtext editor.
- Qt Assistant
Fixed crash when printing to file was cancelled. Fixed
mimesource settings when a link is opened in a new window.
Added missing translator. Fixed reloading pages when the
font was changed. Added accelerator for exiting Assistant.
Full text search now supports Unicode. Search accepts special
characters like '_'. Added option for disabling the first run
initialization. Now it is possible to open a link or new
window directly from the sidebar.
- moc
Make 'moc -p foo bar/baz.h' generates #include "foo/baz.h"
instead of #include "foo/bar/baz.h". Also avoid redundant "./"
at the beginning. Accept identifiers trailing the function
signature to allows sneaking in compiler specific attributes
via a macro.
- qmake
Qmake will no longer put the version number on plugins. These are
not a necessary part of the filename. A parser bug got into qmake
causing (right hand side) functions from being evaluated properly,
additionally the argument parser has been improved to allow functions
calling functions. Qmake now has support for ProjectBuilder 2.1, it
will no longer respect OBJECTS_DIR in ProjectBuilder (as this exposed
a bug in ProjectBuilder itself). It will automatically detect qt-mt
(when linking against Qt) so "CONFIG += thread" is not necessary,
however this will not turn on Q_THREAD_SUPPORT. A new test operator
has been added 'equals()' to allow testing for equality to a variable.
In 'project mode' qmake will now detect TRANSLATIONS files
automatically.
- uic
Some small fixes in code generation.
****************************************************************************
* Extensions *
****************************************************************************
- Netscape Plugin
The Netscape Plugin is supported again, now on both Netscape 4.x and
current versions based on the Mozilla code.
- ActiveQt
Activate socket notifiers and process config requests even if
Qt does not own the event loop.