Don't check for null if never happens, but test it if it may...
[qt-netbsd.git] / dist / changes-3.1.2
blob79e01364d07d38b45e693d551467594cf7238c87
2 Qt 3.1.2 is a bugfix release. It maintains both forward and backward
3 compatibility (source and binary) with Qt 3.1.1
6 ****************************************************************************
7 *                               General                                    *
8 ****************************************************************************
10 Some build fixes on different platforms. Many small documentation
11 fixes.
13 XFree86 only: Tablet support now also looks for devices called "pen",
14 not just "stylus" and "eraser".
16 Animations: Less CPU-consuming roll effects.
17 X11 only: Disable effects on displays with <16bpp (rather than
18 falling back to the scrolling).
21 ****************************************************************************
22 *                               Library                                    *
23 ****************************************************************************
25 - QAccel
26         Allow localization of status bar messages. Try harder to
27         distinguish between an accelerator and the identical
28         accelerator with Shift in case on of them is currently
29         disabled.
31 - QAccessible
32         Send accessibility notification for selection changes in
33         menubars and popup menus. Send accessibility
34         notifications for QListBox currentItem/selection changes.
36 - QActionGroup
37         Implement visibility for drop-down actiongroups.
39 - QApplication
40         Return focus to the widget that had it before a popup opened
41         even if the focus is passed on during the show event handling.
42         When the programmer/user explicitly sets the style (either
43         with QApplication::setStyle or the -style command line
44         option), do not reset the style on settings changes. Creating
45         a second QApplication reads the settings again.
46         Windows only: Emit aboutToQuit() when the user logs off. Send
47         a focusOut event to the focus widget when the user tries to
48         switch applications using Alt+Tab. Fixed setting of
49         desktop-wide fade and scroll effects.
50         Windows95/98/Me: Fixed enter/leave handling. Among other
51         benefits this makes tooltips work more reliably.
52         X11 only: Various fixes for input methods, e.g. Korean
53         'ami'. Some startup performance improvements with
54         QSettings. Mark the internal wakeUpGuiThread() pipe with
55         FD_CLOEXEC. Call XFilterEvent before the public X11 event
56         filters to avoid applications filtering out events that are
57         necessary for input methods to operate. Removed old en_US
58         locale workaround for Solaris. Close all open popups when 
59         clicking on a screen different from the popup's screen. Do not
60         force 256 colors on 8-bit display (used to be a workaround for
61         a vnc bug).
62         Mac only: Popupmenus that are dismissed by clicking outside of their
63         bounds will no longer send the event to the widget clicked on (to avoid
64         selection changing when canceling a context menu). QContextMenuEvents
65         will be sent in the same style as Windows/X11 to make the platforms
66         more consistent, additionally mapping of Ctrl+Click to RightButton has
67         been added to allow easy context menu handling. Added warnings when a
68         Qt application is run outside of an application bundle (in GUI mode)
69         this will prevent accidental starving from events. Correct state when a
70         modal dialog is shown (to disable the menubar) is used now, and is
71         emulated to feel like Carbon applications. Fixed bug so that
72         QApplication::processEvents() can be called before
73         QApplication::exec(). Window activation will not change when a popup
74         menu is displayed. Toolbar toggle button will only toggle the top dock
75         in a QMainWindow. European text composition is supported now to take
76         advantage of TextInput modules available on Mac OS X. Window activation
77         has been improved to allow interleaving windows of different classes
78         correctly (to decrease differences between X11/Windows and Mac).
80 - QBuffer
81         IO_Truncate no longer detaches the explicitly shared byte array.
83 - QButton
84         In setPixmap(), avoid laying out again if the new pixmap does
85         not change the size. Use QSharedDoubleBuffer only if it is
86         enabled (this avoids repainting errors).
88 - QButtonGroup
89         Improve hit testing for cursor navigation.
91 - QCanvas
92         Do not try to double buffer invalid areas.
94 - QCanvasEllipse
95         Windows only: Workaround a Windows limitation that does not
96         support 2x2 ellipse rendering without a pen. Do not try to
97         double buffer invalid areas.
99 - QColorDialog
100         Allow the setting of all 48 standard colors.
102 - QComboBox
103         Close any popup menus or listboxes when disabling the combobox.
104         Fix text alignment when large pixmaps were inserted into the
105         combobox.
107 - QComplexText
108         Added correct positioning specs for all of Thai and Lao. Some
109         reordering fixes.
111 - QCursor
112         Mac only: Correct interpretation of mask/data of a QCursor so that the
113         mask will can be used as documented.
115 - QDate
116         Fixed addYears() for days missing in certain years.
118 - QDateTimeEdit
119         Compute an improved layout for the QDateEdit and QTimeEdit
120         components of the QDateTimeEdit (based on the size hints). Set
121         the size policy of the QDateTimeEdit to (Minimum, Fixed).
122         In time edit: If the display is AM/PM, do not accept 13-24 as
123         valid input for the hours. Go to the min/max value when
124         stepping down/up goes out of the valid range.
126 - QDesktopWidget
127         Mac only: Fixes to availableGeometry().
129 - QDialog
130         Fixed a visibility issue with setExtension().
131         X11 only: Modal dialogs that have no parent set their
132         WM_TRANSIENT_FOR hint to the main application widget (not
133         root). Do not raise the active modal widget if another one
134         gets focus. This used to be an incorrect workaround for a
135         now-obsolete problem where CDE would not keep modal dialogs
136         above their parents. 
137         Do not reposition laid out dialogs that restore their geometry
138         in a polish() reimplementation.
140 - QDict
141         Handle zero sized hash tables.
143 - QDns
144         Slightly more reliable now, fixed a memory leak.
146 - QDockArea
147         Fixed resizing of a QDockWindow is no longer affected by
148         another closed QDockWindow in the same QDockArea. If a QDockWindow
149         has changed its sizeHint layout items use now the new size.
151 - QDockWindow
152         When undocking a window, use the last undocked size if we have
153         one.
154         X11 only: Make sure the moving frame is drawn on the correct screen.
155         Windows only: Fixed some focus issues.
157 - QDom
158         Create entity references for unknown entities.
160 - QDragManager
161         X11 only: Raise cursor decoration. Improved Motif drop support
162         to support non-textual data.
163         Windows only: Do not send any drag events if we don't have a receiver.
164         Windows 2000 only: Ignore illegal requests for error-clipboard
165         format when dropping files onto Explorer.
167 - QEventLoop
168         Window only: Fixed mutex lock problem. Fixed processEvents()
169         with ExcludeUserInput. Fixed QSocketNotifiers not being
170         removed when the notifier gets deleted and the event
171         loop is blocking.
172         Unix only: Fixed a 64 bit problem.
173         Mac only: Fixed hasPendingEvents() for non-gui apps.
175 - QFileDialog
176         Fix drag'n'drop for the first click into the listbox. Do not
177         auto-complete when saving a file. Enabled drag'n'drop of files
178         for all modes. In Directory* mode, do not set the filter to a
179         non-existent directory if one is specified.
180         Windows only: Fixed icon lookup.
181         Win 98/Me only: Make sure getExistingDirectory() doesn't
182         modify the current directory.
183         Mac only: Encoding fixes.
185 - QFont
186         Win95 only: Make symbol fonts work.
187         X11 only: Don't change the Xft enabled/disabled setting
188         at runtime. Avoid some X server roundtrips when loading fonts.
190 - QFontDialog
191         Fixed getFont() in case no default font is specified.
193 - QFrame
194         Turn on focus and mouse-over style flags for frame painting.
196 - QFtp
197         If the server does not expect a password (i.e. if you are
198         already logged in after you sent the username), do not send
199         the password since this might lead to errors.
201 - QGLWidget
202         X11 only: Xft fonts won't work with glXUseXFont() - so do not
203         try to use them.
204         Win32 only: Fixed text rendering to pixmap issues.
205         Mac only: Improved responsiveness when resizing opengl widgets.
206         Mac only: Optimized swapping between accelerated and
207         non-accelerated case.
208         Mac 10.2 only: Improved performance in the case of overlapping
209         opengl widgets.
211 - QHBoxLayout
212         Handle direction changes in user code.
214 - QHeader
215         Improved sizeHint() takes the arrows of sorted columns
216         into account. Fix redrawing problems when moving header
217         sections. Ignore grip-margin in mouse handling for
218         non-resizable sections.
220 - QHttp
221         Fixed a memory leak. (With thanks to valgrind's developer for
222         this useful tool). Improved head() implementation to actually
223         use HEAD requests. Accepts responses from web servers that
224         return \n instead of \r\n as line separators. Fixed a rare
225         infinite loop issue.
227 - QIconView:
228         Clip item drawing to current container to fix drawing of
229         pixmaps with alpha channels.
231 - QImageIO
232         jpegio: Fixed potential buffer overrun.
233         gif: Fixed a crash for invalid gif files.
235 - QInputContext
236         X11 only: Try harder to provide the input method with an
237         appropriate - and available - fontset.
239 - QInputDialog
240         Fixed size hint when using height-for-width rich text.
242 - QKeySequence
243         Fixed operator==() for some special cases.
245 - QLabel
246         When the the label is disabled, use identical color roles for both
247         rich text and plain text.
249 - QLibrary
250         Mac only: Return failure response when a library cannot be opened
251         due to missing symbols.
253 - QLineEdit
254         Do not truncate the text when we validateAndSet a text which
255         is longer than maxLength, but disallow the input. Respect
256         maxLength() in setText(). Make displayText() and selectedText()
257         not strip non-breaking spaces anymore. Fixed memory leak when
258         adding and deleting line edits. Undo now clears the current
259         selection. Undo/redo now works when overwriting the selection.
260         Fixed memory leak on constructing/destructing line edits. Give
261         line edit ownership of the popup menu returned by the default
262         createPopupMenu() implementation.
264 - QListView 
265         Fixed background brush origin when using double buffering. Do
266         not resize a stretchable column in widthChanged(). Fixed
267         selecting when auto-scrolling. Initialize multi-selection
268         anchor. Accept drops outside items when acceptDrops() is true.
269         Use anchor correctly in Extended selection mode (also for
270         mouseMove). Make right clicking on a selected item not change
271         the selection. The AlignHCenter flag of a QCheckListItem now
272         behaves like for normal QListViewItems. Speed up opening and
273         closing of invisible items. Fixed a memory leak in removeColumn()
274         Single selection mode: If the selected item is taken out of the 
275         listview, unselect it and emit selectionChanged(). Fixed
276         deselecting in multi-selection modes. Right release outside an
277         item in a listview no longer clears the selection if
278         ControlButton is set.
280 - QListViewItem
281         Invalidate column sorting in moveToJustAfter().
283 - QLocalFs
284         The network protocol for local file systems sets sets the
285         right permissions for the QUrlInfo objects if you do a
286         QUrlOperator::listChildren().
288 - QMainWindow
289         Fixed orientation handler calls.
291 - QMap
292         Fixed conversion from std::map.
294 - QMenuBar
295         Mac only: Fix for destruction of menu bars.
296         Mac only: Use process name instead of argv.
298 - QObject
299         Always emit the destroyed() signal, even when signals are
300         blocked.
302 - QPaintDevice
303         Mac only: Fixed raster op. for bitBlt.
305 - QPainter
306         X11 only: Fix for rotated rectangles. Fixed drawPolygon() with
307         winding being false.
308         Mac only: drawText() fixes.
309         Mac only: Fix for drawPie().
311 - QPicture
312         Warn about and catch save operations on still active devices.
314 - QPixmap
315         Made grabWidget() more robust. 
316         X11 only: Fixed a bug in grabWindow(), fixes in 
317         convertFromImage() for MonoOnly.
319 - QPointArray
320         The makeArc() function is now inclusive in respect of the start and
321         end points.
323 - QPopupMenu
324         If there is a custom QWhatsThis installed for the whole menu
325         but no whatsThis set for the item, use the custom QWhatsThis
326         to get the help text. Improved size for multi-column popups.
327         Mac only: Improved scrollable popups
328         Mac only: Fix handling of popupmenu dismissing mouse presses.
330 - QPrintDialog
331         Fix reentrancy issues when reading printer dialog settings.
332         Windows only: Handle lack of default printers more
333         gracefully.
335 - QPrinter
336         Windows only: Fix reentrancy issues and make sure that all
337         handles are updated correctly. Improved bottom and right
338         margin calculation. Fixed some problems with image printing.
339         Mac only: Support for high resolution printing. Support 1-bit
340         masking for pixmaps.
342 - QProcess
343         If the process's file descriptor is closed for stdout or
344         stderr, but the line in the buffer does not end with a \n or
345         \r\n, it is still possible to read this data using readLine().
346         Windows only: Make it safe to call qApp->processEvents() in a
347         slot connected to QProcess::readyReadStdout(). Fixed start()
348         with no arguments. Use a non-blocking file descriptor for
349         writes to stdin. Avoid leaking of handles.
351 - QPSPrinter
352         Fixed codec for Korean PostScript fonts (ksc5601.1987-0, not
353         the listbox. Do not auto-complete when saving a
354         fileeucKR). Fixed memory leak.
356 - QRichText
357         Improved Asian line breaking: Avoid breaking before
358         punctuation and closing braces and after opening braces. Fixed
359         a freed memory access problem with floating items on
360         destruction. When copying rich application/x-qrichtext, include
361         format information for the initial characters until the first
362         complete span. Make text="color" attributes in qt and body
363         tags work again.
365 - QScrollView
366         Restored the Qt 3 default sizeHint() that depends on the
367         scroll view's content, restricted within a 'sane' range (this
368         has no impact on most child classes, which already reimplement
369         sizeHint()).
371 - QSemaphore
372         Fixed race condition in operator-=().
373         Unix only: A bit more robust.
375 - QSettings
376         Implement scoping for file-based settings (Unix and
377         Ini-modes). Support storing and reading null strings. Other
378         fixes.
379         X11 only: Fixed rehash issues when using multiple screens.
380         Windows and Mac: Completed Ini mode.
382 - QSocket
383         If the read retruns 0, safely assume that the peer closed the
384         connection. Fixed readyRead sometimes not being
385         emitted. Fixed a select bug when the other end terminates
386         the connection. Some 64 bit fixes.
388 - QSound
389         Mac only: Implemented stop().
391 - QSplitter
392         Make sizes() return 0 for collapsed widgets.
394 - QSqlDriver
395         All drivers: Fixed crashes when accessing out of bound
396         fields. Clear the openError() flag when opening a connection
397         successfully.
398         MySQL only: Make use of mysql_use_result() in forward-only mode.
399         TDS only: Return NULL QVariants for NULL fields.
400         ODBC only: Do not require the SERVER keyword to be in a
401         connection string. Fix Unicode issues with MS Access. Allow 
402         MS Access people to create a connection string without 
403         creating a DSN entry first.
405 - QSqlQuery
406         Real values in queries containing placeholders were in some
407         cases incorrectly replaced in emulated prepared queries.
408         Added support for forward only queries in MySQL.
410 - QStatusBar
411         Make sure QStatusBar updates the minimum height when a child
412         widget triggers a relayout (e.g. from size/font/etc. changes).
414 - QString
415         Safer QString->std::string conversion (handles null-string
416         case). Fixed 64-bit issue in toLong() and toULong(). Make
417         prepend(), append() and operator+=() work with a QByteArray
418         argument that is not 0-terminated. Since this
419         fix is done in inline functions, you must recompile your
420         application to benefit from it. Make QString(const
421         QByteArray&) respect the array's size where a codec for
422         C strings is defined. Performance improvements for lower() 
423         and upper(). Fix toDouble() when string contains trailing
424         whitespace.
426 - QSvgDevice
427         No background for Bezier curves. Fixed omission of font-family
428         attribute in SVG generator. Fixed bounding rect mapping.
430 - QStyle (and subclasses)
431         Usable size for subcontrols for small scrollbars. Fixed MDI
432         document window titlebar clipping.
433         XP style: Support non-default group boxes. Corrected tab
434         widget border drawing. More compliant dock window
435         appearance. Fixed translations for QCheckTableItem and
436         QComboTableItem.
437         Windows style: Use the highlighted text color role for arrows
438         in menus. Allow drawing of list view expand controls without
439         branches.
440         SGI style: Use correct background brush on pushbuttons with
441         popdown arrows.
442         Mac style (Mac only): Comboboxes will now be smaller (and closer to
443         Aqua Style suggested sizes). Expansion widgets (in a listview) will
444         now draw in the correct background color to allow non-white listviews.
446 - QSpinBox
447         Stop spinning when users press a button other than the
448         left one. Support Key_Enter in addition to Key_Return as the
449         documentation always stated.
451 - QTabBar
452         Let arrow buttons react correctly on style changes.
454 - QTabDialog
455         Fix reverse layout for right to left languages.
457 - QTable
458         Catch hideColumn() on tables with too few columns. Fixed an
459         endless recursion when swapping header sections. Fixed SingleRow
460         selection when using the vertical header. Emit the
461         sizeChange() signal when resizing a table header section with
462         a double click. Fixed set*MovingEnabled() when the selection
463         mode is NoSelection. Fix selection drawing for focusStyle ==
464         FollowFocus. Fixed a memory leak.
466 - QTableItem
467         Use virtual text() method for calculations instead of accessing the
468         data member directly. Do not crash when destroying a table item that
469         is not in a table.
471 - QTextCodec:
472         Fixed a bug in the Unicode -> jisx0208 conversion table.
474 - QTextEdit
475         Made setFormat() much faster when undo/redo is
476         disabled. Fixed double deletion crash when clearing a document
477         with floating custom items. AccelOverride events with Shift
478         pressed now work the same as for a normal key press.
479         LogText mode: Allow spaces in the font color tag. Fixed
480         background redraw issue. Stop scrollbar from disappearing
481         due to laying out the document incorrectly.
483 - QThread
484         Unix only: Do not rely on PTHREAD_MUTEX_INITIALIZER and
485         PTHREAD_COND_INITIALIZER. Fixed timeout calculation in
486         sleep().
488 - QTimeEdit
489         Typing in input for the first time now overwrites the existing
490         value.
492 - QToolButton
493         Fixed width calculation for multiline text.
495 - QTooltip
496         Try hard to avoid tooltips for widgets in inactive
497         windows. Use screen geometry rather than available geometry
498         for positioning. Avoid the mouse cursor covering part of the
499         tooltip.
501 - QTranslator
502         Notify main windows when installing an empty translator.
504 - QUrlOperator
505         Make setNameFilter() work with FTP.
507 - QValueVector
508         Fix operator==() to work as expected if the two vectors do not have
509         the same size.
511 - QVariant
512         Fixed canCast() for Bool -> String and ByteArray -> String conversion. 
513         Fixed operator==() for maps. Fixed the asDouble() function to
514         detach first before a conversion is done. After streaming into
515         a QVariant isNull() now returns false.
517 - QWaitCondition
518         Unix only: Make sure the mutex is destroyed after it is
519         unlocked.
521 - QWhatsThis
522         Use screen geometry rather than available geometry
523         for positioning.
525 - QWidget
526         In adjustSize(), process LayoutHint events for all widgets,
527         not only this widget. Fixed a visibility issue with
528         reparent(). Fixed recursive update of child widgets with
529         background origin not being WidgetOrigin. Fixed isEnabledTo().
530         Windows only: Fixed mapFromGlobal() / mapToGlobal() for
531         widgets that are not visible.
532         X11 only: Set the WM_CLIENT_LEADER and SM_CLIENT_ID properties
533         according to the ICCCM (section 5.1). We accomplish this by
534         creating a hidden toplevel window to act as the client leader,
535         and all toplevel widgets will use this window as the client
536         leader. Fixed calling show() on minimized windows. Fixes to
537         grabWindow() for platforms that support different color depths
538         on one display.
539         Windows only: Handle frameGeometry() changes when users change
540         the titlebar font.
541         Mac only: Reparent fixes so that visiblity of a toplevel window
542         will be retained as well as to avoid painting errors when reparented
543         onto a different window. Fixed painting errors when a widget is
544         interactively moved off screen. showNormal() will now toggle
545         correctly when a window is minimized, additionally toggling between
546         showMaximized()/showNormal() will operate as expected. Qt will now
547         try to prevent placing a window partially offscreen. This will not
548         over-ride explicit window positioning, but it will correct default
549         placement.
551 - QWidgetStack
552         Make removeWidget() safe when there are several widgets
553         with the same id.
555 - QWorkspace
556         If the active window is clicked on, transfer focus to
557         the child. Restore focus to old subcontrol when changing the
558         active MDI window. Make sure a MDI window is not resized below
559         a child widget's minimum size. Do not allow resizing windows
560         when we have an active popup window. Another fix to the
561         windowActivated() signal. Fixed resize handling for fixed-size
562         windows.
564 - QXmlSimpleReader
565         Fixed a memory leak for incremental parsing.
568 ****************************************************************************
569 *                                Tools                                     *
570 ****************************************************************************
572 - Qt Designer
573         Some small usability improvements and crash fixes. Fixed
574         editing properties of multiple selected widgets for custom
575         widgets. Fixed some problems with pixmaps, when using a pixmap
576         function. Allow entering ':' in the class name in the
577         form settings dialog (for namespaces). Do not show deleted
578         toolbars in the object explorer. Fixed inserting widgets into
579         toolbars. Fixed displaying nested widget stacks in the object
580         explorer. Added an option to enable auto saving. Fixed some
581         issues with auto-indent in the C++ editor plugin. Fixed
582         problems with slots which have namespaces in their function
583         arguments. Do not save invalid pixmaps. whatsThis properties
584         can now be edited with the richtext editor.
586 - Qt Assistant
587         Fixed crash when printing to file was cancelled. Fixed
588         mimesource settings when a link is opened in a new window.
589         Added missing translator. Fixed reloading pages when the
590         font was changed. Added accelerator for exiting Assistant.
591         Full text search now supports Unicode. Search accepts special
592         characters like '_'. Added option for disabling the first run
593         initialization. Now it is possible to open a link or new
594         window directly from the sidebar.
596 - moc
597         Make 'moc -p foo bar/baz.h' generates #include "foo/baz.h"
598         instead of #include "foo/bar/baz.h". Also avoid redundant "./"
599         at the beginning. Accept identifiers trailing the function
600         signature to allows sneaking in compiler specific attributes
601         via a macro.
603 - qmake
604         Qmake will no longer put the version number on plugins. These are
605         not a necessary part of the filename. A parser bug got into qmake
606         causing (right hand side) functions from being evaluated properly,
607         additionally the argument parser has been improved to allow functions
608         calling functions. Qmake now has support for ProjectBuilder 2.1, it
609         will no longer respect OBJECTS_DIR in ProjectBuilder (as this exposed
610         a bug in ProjectBuilder itself). It will automatically detect qt-mt
611         (when linking against Qt) so "CONFIG += thread" is not necessary,
612         however this will not turn on Q_THREAD_SUPPORT. A new test operator
613         has been added 'equals()' to allow testing for equality to a variable.
614         In 'project mode' qmake will now detect TRANSLATIONS files
615         automatically.
617 - uic
618         Some small fixes in code generation.
620 ****************************************************************************
621 *                              Extensions                                  *
622 ****************************************************************************
624 - Netscape Plugin
625         The Netscape Plugin is supported again, now on both Netscape 4.x and
626         current versions based on the Mozilla code.
628 - ActiveQt
629         Activate socket notifiers and process config requests even if
630         Qt does not own the event loop.