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.