1Qt 4.2 introduces many new features as well as many improvements and
2bugfixes over the 4.1.x series. For more details, see the online
3documentation which is included in this distribution. The
4documentation is also available at http://qt.nokia.com/doc/
5
6The Qt version 4.2 series is binary compatible with the 4.1.x series.
7Applications compiled for 4.1 will continue to run with 4.2.
8
9The Qtopia Core version 4.2 series is binary compatible with the 4.1.x
10series except for some parts of the device handling API, as detailed
11in Platform Specific Changes below.
12
13
14****************************************************************************
15*                           General                                        *
16****************************************************************************
17
18
19New features
20------------
21
22- QCalendarWidget provides a standard monthly calendar widget with date
23  selection features.
24
25- QCleanlooksStyle provides the new Cleanlooks style, a clone of the GNOME
26  ClearLooks style, giving Qt applications a native look on GNOME desktops.
27
28- QCompleter provides facilities for auto completion in text entry widgets.
29
30- QDataWidgetMapper can be used to make widgets data-aware by mapping them
31  to sections of an item model.
32
33- QDesktopServices provides desktop integration features, such as support
34  for opening URLs using system services.
35
36- QDialogButtonBox is used in dialogs to ensure that buttons are placed
37  according to platform-specific style guidelines.
38
39- QFileSystemWatcher enables applications to monitor files and directories
40  for changes.
41
42- QFontComboBox provides a standard font selection widget for document
43  processing applications.
44
45- QGraphicsView and related classes provide the Graphics View framework, a
46  replacement for Qt 3's canvas module that provides an improved API, enhanced
47  rendering, and more responsive handling of large numbers of canvas items.
48
49- QGLFramebufferObject encapsulates OpenGL framebuffer objects.
50
51- QMacPasteboardMime handles Pasteboard access on Qt/Mac. This obsoletes
52  QMacMime as the underlying system has changed to support Apple's new
53  Pasteboard Manager. Any old QMacMime objects will not be used.
54
55- QNetworkInterface represents a network interface, providing information
56  about the host's IP addresses and network interfaces.
57
58- QResource provides static functions that control resource lookup and
59  provides a way to navigate resources directly without levels of
60  indirection through QFile/QFileEngine.
61
62- QSystemTrayIcon allows applications to provide their own icon in the
63  system tray.
64
65- QTimeLine gives developers access to a standard time line class with which
66  to create widget animations.
67
68- The QtDBus module provides inter-process communication on platforms
69  that support the D-BUS protocol.
70
71- The QUndo* classes in Qt's Undo framework provide undo/redo functionality
72  for applications.
73
74- Support for the Glib event loop to enable integration between Qt and non-Qt
75  applications on the GNOME desktop environment.
76
77- Improved Accessibility for item-based views and QTextEdit.
78
79- Support for main window animations and tabbed dock widgets.
80
81- Added an SVG icon engine to enable SVG drawings to be used by QIcon.
82
83- Widgets can now be styled according to rules specified in a style sheet,
84  using a syntax familiar to users of Cascading Style Sheets (CSS). Style
85  sheets are set using the QWidget::styleSheet property.
86
87- Introduced a new key mapper system which improves the shortcut system by
88  only testing the real possible shortcuts, such as Ctrl+Shift+= and Ctrl++
89  on an English keyboard.
90
91- Improved and enhanced QMessageBox to support native look and feel on many
92  common platforms.
93
94- Experimental support for Qt usage reporting ("metered licenses") on Linux,
95  Windows and Mac OS X. Reporting is disabled by default.
96
97- A screen magnification utility, pixeltool, is provided. It is designed to help
98  with the process of fine-tuning styles and user interface features.
99
100- New qrand() and qsrand() functions to provide thread safe equivalents to
101  rand() and srand().
102
103
104General improvements
105--------------------
106
107- Item views
108
109      * Selections are maintained when the layout of the model changes
110        (e.g., due to sorting).
111
112      * Convenience views can perform dynamic sorting of items when the data
113        in items changes.
114
115      * QStandardItem provides an item-based API for use with
116        QStandardItemModel and the model/view item view classes.
117
118      * QStandardItemModel API provides a classic item-based approach to
119        working with models.
120
121      * Single selection item views on Mac OS X cannot change their current
122        item without changing the current selection when using keyboard
123        navigation.
124
125- Plastique style has improved support for palettes, and now requires
126  XRender support on X11 for alpha transparency.
127
128- Tulip containers
129
130      * Added typedefs for STL compatability.
131
132      * Added function overloads to make the API easier to use.
133
134- Added the Q3TextStream class for compatiblity with Qt 3 and to assist with
135  porting projects.
136
137- OpenGL paint engine
138
139      * Added support for all composition modes of QPainter natively using
140        OpenGL.
141
142      * Fixed a case where very large polygons failed to render correctly.
143
144      * Ensured that glClear() is only called in begin() if the
145        QGLWidget::autoFillBackground() property is true.
146
147      * Ensured that a buffer swap is only performed in end() if
148        QGLWidget::autoBufferSwap() is true.
149
150      * Improved text drawing speed and quality.
151
152- Raster paint engine
153
154      * Fixed blending of 8 bit indexed images with alpha values.
155
156      * Fixed drawing onto QImages that were wider than 2048 pixels.
157
158      * Fixed alpha-blending and anti-aliasing on ARGB32 images.
159
160      * Improved point drawing performance.
161
162      * Fixed issue where lines were drawn between coordinates that were
163        rounded instead of truncated.
164
165      * Ensured that setClipRegion(QRegion()) clips away all painting
166        operations as originally intended.
167
168
169Third party components
170----------------------
171
172- Dropped support for MySQL version 3.
173
174- Updated Qt's SQLite version to 3.3.6.
175
176- Updated Qt's FreeType version to 2.2.1.
177
178- Updated Qt's libpng version to 1.2.10.
179
180
181Build System
182------------
183
184- Auto-detect PostgreSQL and MySQL using pg_config and mysql_config on UNIX
185  based systems in the configure script
186
187- Added "-system-sqlite" option to configure to use the system's SQLite
188  library instead of Qt's SQLite version.
189
190- Added QT_ASCII_CAST_WARNINGS define that will output a warning on implicit
191  ascii to Unicode conversion when set. Only works if the compiler supports
192  deprecated API warnings.
193
194- Added Q_REQUIRED_RESULT to some functions. This macro triggers a warning
195  if the result of a function is discarded. Currently only supported by gcc.
196
197
198- Qt/X11, Qt/Mac and Qtopia Core only:
199
200     * Added all QT_NO_* defines to the build key.
201
202
203- Qt/X11 and Qtopia Core only:
204
205     * As in Qt 3, the configure script enables the -release option by
206       default, causing the Qt libraries to be built with optimizations. If
207       configured with the -debug option, the debug builds no longer result
208       in libraries with the _debug suffix.
209
210       On modern systems, flags are added to the Qt build to also
211       generate debugging information, which is then stored in a
212       separate .debug file. The additional debug information does not
213       affect the performance of the optimized code and tools like gdb
214       and valgrind automatically pick up the separate .debug
215       files. This way it is possible to get useful backtraces even
216       with release builds of Qt.
217
218     * Removed the last vestiges of the module options in the configure
219       script, previously they were available but did not function.
220
221     * Implemented a -build option in the configure script to conditionally
222       compile only certain sections of Qt.
223
224     * Made it possible to build Qt while having "xcode" set as your
225       QMAKESPEC on OSX.
226
227
228- Windows only:
229
230     * Populated the build key, as done on all the other platforms.
231
232     * Fixed dependency generation in Visual Studio Solutions (.sln)
233       created by qmake.
234
235     * Added missing platforms to the Visual Studio project generator (X64,
236       SH3DSP and EBC).
237
238     * Made UIC3 use a temporary file for long command lines.
239
240     * Removed the object file (.o) conflicts with MinGW that appeared when
241       embedding a native resource file which was named the same as a normal
242       source file.
243
244     * Fixed mkspec detection when generating project files outside of QTDIR.
245
246     * Removed compiler warnings with MinGW g++ 3.4.5.
247
248
249
250****************************************************************************
251*                          Library                                         *
252****************************************************************************
253
254
255- QAbstractButton
256
257      * Returns QPalette::Button and QPalette::ButtonText for
258        backgroundRole() and foregroundRole(), respectively, rather than
259        QPalette::Background and QPalette::Foreground.
260
261      * Ensured that nextCheckState() is called only when there is a state
262        change.
263
264- QAbstractItemModel
265
266      * When dropping rows only insert rows that were actually dropped, not
267        the continuous row count from first to last.
268
269      * Added a supportedDragActions property to be used by
270        QAbstractItemView when starting a drag.
271
272      * When updating changed persistent indexes, ignore those that haven't
273        actually changed.
274
275      * Fixed endian issue with createIndex().
276
277      * Added FixedString matching for match().
278
279      * Changed the sorting algorithm to use a stable sort.
280
281      * Added persistentIndexList() function.
282
283- QAbstractItemView
284
285      * Added possibility to copy elements to clipboard on read-only views.
286
287      * Improved handling of QAbstractItemModel::supportedDropActions().
288
289      * Ensured that the current item is selected when using keyboard
290        search.
291
292      * Ensured that the view starts with a valid current index.
293
294      * Ensured that data is only committed in currentChanged() if the
295        editor is not persistent.
296
297      * Fixed crash that occurred when a modal dialogs was opened when
298        closing an editor.
299
300      * Added verticalScrollMode and horizontalScrollMode properties.
301
302      * Added setItemDelegateForRow() and setItemDelegateForColumn().
303
304      * Ensured that existing models are disconnected properly when
305        replaced.
306
307      * Ensured that the doubleClicked() signal is only emitted when the
308        left button has been double-clicked.
309
310      * Changed setSelection(...) to work when given a non-normalized
311        rectangle.
312
313      * Fixed regression for shift-selections in ExtendedSelection for
314        all views.
315
316      * Added dragDropMode property and implemented move support in all of
317        the views and models.
318
319      * For edit triggers SelectedClicked and DoubleClicked, only trigger
320        editing when the left button is clicked.
321
322      * Trigger SelectedClicked editing on mouse release, not mouse press.
323
324      * Suppressed the doubleClicked() signal in cases where the clicks
325        happened on two different items.
326
327      * Enabled keyboard search to be programmatically reset by calling
328        keyboardSearch() with an empty string as argument.
329
330      * Don't allow drops on items that don't have the Qt::ItemIsDropEnabled
331        flag set.
332
333      * Added modelAboutToBeReset() and layoutAboutToBeChanged() signals.
334
335      * Suppressed assertion in dropMimeData() for cases where mimeTypes()
336        returns an empty list.
337
338      * Ensured consistent behavior of drag and drop when rootIndex() is a
339        valid model index.
340
341      * Made it possible to check a checkbox with only a single click when
342        using the CurrentChanged edit trigger.
343
344      * Ensured that WhatsThis events are propagated when the relevant item
345        doesn't have a valid "What's This?" value.
346
347      * Added PositionAtCenter scrollHint.
348
349      * Added support to allow items to be checked and unchecked using the
350        keyboard.
351
352      * Added support for keypad navigation.
353
354- QAbstractProxyModel
355
356      * Added default implementations for data(), headerData() and flags()
357
358- QAbstractScrollArea
359
360      * Added ability to set a corner widget.
361
362      * Added ability to set scroll bar widgets.
363
364      * Added support for custom scroll bars.
365
366- QAbstractSpinBox
367
368      * Added a hasAcceptableInput() property.
369
370      * Ensured that fixup/validate are called for third party subclasses of
371        QAbstractSpinBox as well.
372
373      * Fixed geometry issues when toggling frames on and off for spinboxes.
374
375      * Added a property for correctionMode.
376
377      * Added a property for acceleration.
378
379- QAbstractPrintDialog
380
381      * Fixed handling of existing printer options so that storage of page
382        ranges using setFromTo() works as expected when printing in PDF format.
383
384- QAction
385
386      * Added the setAutoRepeat(bool) function to disable auto-repeating
387        actions on keyboard shortcuts.
388
389- QApplication
390
391      * Added saveStateRequest() and commitDataRequest() signals so that
392        QApplication does not need to be subclassed to enable session
393        management in an application.
394
395      * Added the styleSheet property to get/set the application style sheet.
396
397      * Support sending key events to non-widget objects.
398
399      * Ensured that argc and argv as passed to the QApplication constructor
400        will always be zero-terminated on all platforms after QApplication
401        consumes command line options for itself.
402
403- QBrush
404
405      * Added a constructor that accepts a QImage.
406
407- QButtonGroup
408
409      * Added pressed() and released() signals.
410
411      * Fixed a bug caused by removing buttons from button groups. Removed the
412        internal mapping as well.
413
414      * Ensured that checkedButton() returns the correct value with
415        non-exclusive groups.
416
417- QClipboard
418
419      * Added support for find text buffer.
420
421- QColor
422
423      * Fixed corruption in setRed(), setGreen() and setBlue() for HSV/CMYK
424        colors.
425
426- QComboBox
427
428      * Fixed drawing issues related to certain FocusPolicy values.
429
430      * Ensured that the ItemFlags of an Item (ItemIsEnabled,...) are
431        respected.
432
433      * Fixed cases where the popup could be shown completly on screen, but
434        weren't.
435
436      * Added the InsertAlphabetically insert policy.
437
438      * Fixed case where a QPixmap could not be displayed using a QIcon.
439
440      * Fixed the type of the modelColumn property from bool to int.
441
442      * Updated documentation to clarify the differences between activated(),
443        highlighted() and currentIndexChanged(), and describe what they
444        actually mean.
445
446      * Updated the behavior to ensure that, if the combobox isn't editable,
447        the Qt::DisplayRole rather than the Qt::EditRole is used to query the
448        model.
449
450- QCoreApplication
451
452      * Added flags to enable/disable application-wide features such as
453        delayed widget creation.
454
455- QCursor
456
457      * Added support for the newly added Qt::OpenHandCursor and
458        Qt::ClosedHandCursor enum values.
459
460- QDate
461
462      * Support dates all the way down to Julian Day 1 (2 January 4713 B.C.)
463        using the Julian calendar when appropriate.
464
465- QDateTime
466
467      * Fixed parsing issue in fromString(const QString &, Qt::DateFormat).
468
469- QDateTimeEdit
470
471      * Added the calendarPopup property to enable date selection using the
472        new QCalendarWidget class.
473
474      * Added a setSelectedSection() function to allow the currently selected
475        section to be programmatically set.
476
477- QDesktopWidget
478
479      * Remove a potential out-of-bounds read.
480
481- QDialog
482
483      * Improved stability in cases where the default button is deleted.
484
485- QDir
486
487      * Improved support for i18n file paths in QDir::tempPath().
488
489      * Improved support for UNC paths when the application is run from a
490        share.
491
492      * Ensured that mkpath() properly supports UNC paths.
493
494      * Obsoleted QDir::convertSeparators().
495
496      * Introduced QDir::toNativeSeparators() and QDir::fromNativeSeparators().
497
498      * Added a QDebug streaming operator.
499
500- QDirModel
501
502      * Fixed conversion from bytes to larger units in QDirModel in the file
503        size display.
504
505      * Remove hardcoded filtering of the '.' and '..' entries.
506
507- QErrorMessage
508
509      * Made qtHandler() work in cases where the message handler is invoked
510        from threads other than the GUI thread.
511
512- QEvent
513
514      * Added the KeyboardLayoutChange event type which is sent when the
515        keyboard layout changes.
516
517- QFile
518
519      * Improved support for UNC paths when the application is run from a
520        share.
521
522      * Added support for physical drives (e.g., "//./Physical01").
523
524      * Ensured that QFile::error() and QIODevice::errorString() are set
525        whenever possible when errors occur.
526
527      * Renamed readLink() to symLinkTarget().
528
529- QFileDialog
530
531      * Fixed a case where view mode got disabled.
532
533- QFileInfo
534
535      * Improved support for UNC paths when the application is run from a
536        share.
537
538      * Improved support for drive-local relative paths, such as "D:".
539
540      * Renamed readLink() to symLinkTarget().
541
542- QFlags
543
544      * Added the testFlag() convenience function.
545
546- QFont
547
548      * Added NoFontMerging as a flag to QFont::StyleStrategy.
549
550- QFontDatabase
551
552      * Added functions for handling application-local fonts at run-time:
553        addApplicationFont(), removeApplicationFont(),
554        applicationFontFamilies(), etc.
555
556- QFontDialog
557
558      * Enabled support for custom window titles.
559
560- QFontMetrics/QFontMetricsF
561
562      * Added the elidedText() function.
563
564      * Added the averageCharWidth() function.
565
566- QFrame
567
568      * Fixed a rendering issue when showing horizontal and vertical lines
569        created using Designer.
570
571- QFtp
572
573      * Improved parsing of the modified date in list().
574
575      * Ensured that all data has been received when downloading, before the
576        data connection is closed.
577
578      * Added support for FTP servers that reject commands with a 202 response.
579
580- QGLFormat
581
582      * Added the openGLVersionFlags() function.
583
584      * Added support for setting the swap interval for a context
585        (i.e., syncing to the vertical retrace).
586
587      * Added support for setting red, green and blue buffer sizes.
588
589- QGLWidget
590
591      * Fixed a resource leak that could occur when binding QImages with the
592        bindTexture() function.
593
594      * Fixed renderText() to produce proper output when depth buffering is
595        enabled.
596
597      * Fixed bindTexture() to respect premultiplied QImage formats.
598
599      * Ensured that the updatesEnabled property is respected.
600
601- QGradient
602
603      * Added default constructors and setter functions for all gradients and
604        their attributes.
605
606- QGridLayout
607
608      * Do not segfault if cellRect() is called before setGeometry(),
609        even though the result is documented to be undefined.
610
611      * Fixed maximum size handling when adding spacing.
612
613- QGroupBox
614
615      * Activating a group box by a shortcut will now show the focus rectangle.
616
617      * Added the clicked() signal
618
619- QHash
620
621      * Prevent conversion of iterator or const_iterator to bool
622        (e.g., if (map->find(value))) because the conversion always returned
623        true. Qt 4.1 code that doesn't compile because of this change was most
624        probably buggy.
625
626      * Added the uniqueKeys() function.
627
628- QHeaderView
629
630      * Use the current resize mode to determine section sizes when
631        new rows are inserted.
632
633      * Recover the internal state if other widgets steal the mouse release
634        event.
635
636      * Ensure that moved sections can be removed without asserting.
637
638      * Be more robust with regards to arguments sent to the rowsInserted slot.
639
640      * Let the stretchLastSection property override the globalResizeMode in
641        the resizeSections() function.
642
643      * Renamed ResizeMode::Custom to ResizeMode::Fixed.
644
645      * Added the swapSections() convenience function.
646
647      * Added a more "splitter-like" resize mode.
648
649      * Added the possibility for the user to turn off stretch mode by
650        resizing the header section. This includes the stretchLastSection
651        property.
652
653      * Added the minimumSectionSize property.
654
655      * Get the section size hint from the Qt::SizeHintRole, if set.
656
657      * Added the ResizeToContents resize mode.
658
659      * Ensure that all header contents are centered by default.
660
661      * Improved the internal structure to be more memory efficient.
662
663- QHostAddress
664
665      * Added QDataStream streaming operators.
666
667- QHttp
668
669      * Support percent-encoded paths when used with a proxy server.
670
671      * Improved handling of unexpected remote socket close.
672
673- QHttpHeader
674
675      * Improved support for case-insensitive header searching.
676
677- QIcon
678
679      * Fixed issue where actualSize() might return a larger value than the
680        requested size.
681
682      * Fixed improper pixmap caching
683
684      * Added QDataStream operators for QIcon.
685
686      * Added the Selected mode.
687
688- QImage
689
690      * Added support for 16 bit RGB format.
691
692      * Added QPoint overloads to various (int x, int y) functions.
693
694      * Added support for faster/better rotation of images by 90/180/270
695        degrees.
696
697      * convertToFormat() now supports the color lookup table.
698
699      * Improved algorithm for smooth scaling to produce better results.
700
701- QImageReader
702
703      * Ensured that size() returns an invalid QSize if the image I/O handler
704        does not support the QImageIOHandler::Size extension.
705
706      * Added support for reading negative BMP images.
707
708      * Improved handling of invalid devices.
709
710      * Added optimizations to ensure that the most likely formats and plugins
711        are tested first when reading unknown image formats.
712
713      * Improved reading of BMP images from sequential QIODevices.
714
715      * Support for scaledSize() with JPEG images.
716
717      * It is now possible to query the supported options of an image by
718        calling supportedOptions().
719
720      * Stability fixes for the built-in XBM reader.
721
722- QImageWriter
723
724      * Ensured that an error is reported when attempting to write an image
725        to a non-writable device.
726
727      * It is now possible to query the supported options of an image by
728        calling supportedOptions().
729
730- QIODevice
731
732      * Fixed a casting bug in QIODevice::getChar().
733
734      * Improved reading performance significantly by using an internal buffer
735        when a device is opened in buffered mode.
736
737      * Some behavioral differences have been introduced:
738
739        + The following functions now need to call the base implementation
740          when reimplemented: atEnd(), bytesAvailable(), size(), canReadLine().
741
742        + pos() should return the base implementation directly.
743
744        + QIODevice now handles the device position internally. seek() should
745          always end up calling the base implementation.
746
747- QItemDelegate
748
749      * Use a widget's USER property to set and get the editor data.
750
751      * Removed unnecessary assertions.
752
753      * Added the clipping property to enable clipping when painting.
754
755      * When the model specifies a font, resolve the font over the existing
756        one rather than replacing it.
757
758      * Fixed issue with rendering of selected pixmaps.
759
760      * Ensured that QItemEditorFactory is called with the variant's
761        userType() so that the factory can distinguish between multiple user
762        types.
763
764      * Ensured that Key_Enter is propagated to the editor before data is
765        committed, so that the editor has a chance to perform custom input
766        validation/fixup.
767
768      * Let the line edit grow to accomodate long strings.
769
770      * Made it easer to subclass the item delegate.
771
772      * Added support for keypad navigation.
773
774- QItemSelectionModel
775
776      * Improved overall speed, particularly when isSelected() is used.
777
778      * Added functions for getting the selected rows or columns.
779
780      * Ensured that the current index is updated when it is being removed.
781
782      * Ensure that QAbstractItemView::clearSelection() only clears the
783        selection and not the current index.
784
785      * Added the hasSelection() function.
786
787      * Fixed some connection leaks (connections were not disconnected) when
788        an QItemSelectionModel was deleted. This should also speed up some
789        special cases.
790
791- QKeySequence
792
793      * Added a set of platform-dependent standard shortcuts.
794
795      * Fixed incorrect parsing of translated modifiers.
796
797- QLabel
798
799      * Added support for text selection and hyperlinks.
800
801      * Improved handling of scaled pixmaps.
802
803      * Made handling of QMovie safer to avoid object ownership issues.
804
805- QLibrary
806
807      * Added support for hints to control how libraries are opened on UNIX
808        systems.
809
810      * Added errorString() to report the causes of errors when libraries
811        fail to load.
812
813      * Added easier way to debug plugin loading: Setting QT_DEBUG_PLUGINS=1
814        in the environment will enable debug message printing on the
815        console.
816
817      * Increased the number of acceptable file name suffixes used to
818        recognize library files.
819
820- QLineEdit
821
822      * Ensured that the Unicode context menu gets shown if language
823        extensions are present.
824
825      * Ensured that editingFinished() is not emitted if a validator is set
826        and the text cannot be validated.
827
828      * Ctrl+A now triggers select all on all platforms.
829
830      * Call fixup on focusOut() if !hasAcceptableInput().
831
832      * Added auto-completion support with the setCompleter() function.
833
834      * Fixed painting errors when contents margins were set.
835
836      * Invalid text set using setText() can now be edited where previously
837        it had to be deleted before new text could be inserted.
838
839      * Use SE_LineEditContents to control the contents rect of each
840        QLineEdit.
841
842- QListView
843
844      * Added the batchSize property.
845
846      * Don't un-hide currently hidden rows when new rows are inserted.
847
848      * Fixed partial repainting bug that occurred when alternatingRowColors
849        was enabled.
850
851      * Ensured that the resize mode is not reset in setViewMode() if it was
852        already set.
853
854      * Fixed crash that occurred when the first item was hidden and
855        uniformItemSizes was set.
856
857      * Added the wordWrap property for wrapping item text.
858
859      * Allow the user to select items consecutively when shift-selecting.
860
861      * Ensured that only the top item is selected when the user clicks on
862        an area with several items are stacked on top of each other.
863
864      * Optimized hiding and showing of items.
865
866      * Fixed issue where dragging an item in Snap mode did not respect the
867        scroll bar offsets.
868
869      * Fixed issue in Snap mode where a (drag and) drop did not always
870        query the item that existed in the corresponding cell for an enabled
871        Qt::ItemIsDropEnabled flag.
872
873- QListWidget/QTreeWidget/QTableWidget
874
875      * Ensured the dataChanged() signal is emitted when flags are set on an
876        item.
877
878      * Removed unnecessary assertions.
879
880      * Added more convenience functions in QListWidget, QTableWidget and
881        QTreeWidget for selecting, hiding, showing, expanding and collapsing
882        nodes.
883
884      * Ensured that changes to items are reported.
885
886- QLocale
887
888      * Fixed bug in the string-to-number functions which sometimes caused
889        them to fail on negative numbers which contained thousand-
890        separators.
891
892      * Implemented the numberOptions property for specifying how
893        string-to-number and number-to-string conversions should be
894        performed.
895
896- QMainWindow
897
898      * Added support for tabbed dock widgets.
899
900      * Enhanced look and feel of dock widget handling. When a dock widget
901        hovers over a main window, the main window animates the existing
902        dock widgets and main area to show how it will accept the dock
903        widget if dropped.
904
905      * Fixed issues related to insertToolBarBreak().
906
907- QMap
908
909      * Prevent conversion of iterator or const_iterator to bool
910        (e.g., if (map->find(value))), because the conversion always
911        returned true. Qt 4.1 code that doesn't compile because of this
912        change was most probably buggy.
913
914      * Added the uniqueKeys() function.
915
916- QMenu
917
918      * Added the aboutToHide() signal.
919
920      * Added the isEmpty() accessor function.
921
922      * Clear menuAction() when setMenu(0)
923
924      * Added support for widgets in menus via QWidgetAction.
925
926      * Collapse multiple consecutive separators. This can be turned off
927        with the collapsibleSeparators property.
928
929      * Made scrollable menus wrap, just like non-scrollable ones.
930
931- QMessageBox
932
933      * Updated the API to allow more than 3 buttons to be used.
934
935      * Added support to display buttons in the order required by
936        platform-specific style guidelines.
937
938      * Added support for display of informative text using the
939        informativeText property.
940
941      * Added the detailedText property to allow detailed text to be
942        displayed.
943
944      * Improved sizing of message box (especially on Mac OS X).
945
946      * Changed the behavior so that long text strings are automatically
947        wrapped.
948
949      * Updated icon handling to use QStyle::standardIcon() where possible.
950
951- QMetaObject
952
953      * Added the userProperty() and normalizedType() functions.
954
955- QMetaType
956
957      * Ensured that all type names are normalized before registering them.
958
959      * Added support for handling Qt's integer typedefs: qint8, qint16,
960        etc.
961
962- QModelIndex
963
964      * Added the flags() convenience function.
965
966- QMutexLocker, QReadLocker, and QWriteLocker
967
968      * These classes now track the state of the lock they are holding.
969        They will not unlock on destruction if unlock() has been called.
970
971- QObject
972
973      * thread() will always return a valid thread, even if the object was
974        created before QApplication or in a non-QThread thread.
975
976      * When thread() returns zero, events are no longer sent to the object.
977        (Previous versions of Qt would send posted events to objects with no
978        thread; this does not happen in Qt 4.2).
979
980      * Added support for dynamically added properties via the new
981        property(), setProperty(), and dynamicPropertyNames() functions.
982
983      * Fixed a crash that could occur when a child deleted its sibling.
984
985- QPainter
986
987      * Fixed a crash the occurred when drawing cosmetic lines outside the
988        paint device boundaries.
989
990      * Fixed a pixel artifact issue that occurred when drawing cosmetic
991        diagonal lines.
992
993      * Fixed opaque backgrounds so that they are identical on all
994        platforms.
995
996      * Optimized drawing of cosmetic lines at angles between 315 and 360
997        degrees.
998
999      * Added the setRenderHints() function.
1000
1001      * Fixed a memory corruption issue in drawEllipse().
1002
1003- QPixmap
1004
1005      * Fixed crash caused by setting a mask or alpha channel on a pixmap
1006        while it was being painted.
1007
1008      * Changed load() and save() to no longer require a format string.
1009
1010      * Ensured that grabWidget() works before the specified widget is first
1011        shown.
1012
1013- QPluginLoader
1014
1015      * Added errorString() to report the causes of errors when plugins fail
1016        to load.
1017
1018- QPrinter
1019
1020      * Added support for PostScript as an output format on all platforms.
1021
1022      * Significantly reduced the size of the generated output when using
1023        the PostScript and PDF drivers.
1024
1025      * Fixed issue where fromPage()/toPage() returned incorrect values when
1026        generating PDF files.
1027
1028      * Ensured that setOutputFormat() preserves previously set printer
1029        properties.
1030
1031      * Updated setOutputFileName() to automatically choose PostScript or
1032        PDF as the output format for .ps or .pdf suffixes.
1033
1034- QProcess
1035
1036      * Added support for channel redirection to allow data to be redirected
1037        to files or between processes.
1038
1039- QPushButton
1040
1041      * Ensured that, when a menu is added to a push button, its action is
1042        also added to enable keyboard shortcuts.
1043
1044- QRect, QRectF, QRegion
1045
1046      * Renamed unite(), intersect(), subtract(), and eor() to united(),
1047        intersected(), subtracted(), and xored() respectively.
1048
1049      * Added QRegion::intersects(QRegion) and QRegion::intersects(QRect).
1050
1051      * Fixed case where rect1 & rect2 & rect3 would return a non-empty
1052        result for disjoint rectangles.
1053
1054- QRegExp
1055
1056      * Added RegExp2 syntax, providing greedy quantifiers (+, *, etc.).
1057
1058      * Marks (QChar::isMark()) are now treated as word characters,
1059        affecting the behavior of '\b', '\w', and '\W' for languages
1060        that use diacritic marks (e.g., Arabic).
1061
1062      * Fix reentrancy issue with the regexp cache.
1063
1064- QScrollArea
1065
1066      * Added the ensureWidgetVisible() function to facilitate scrolling to
1067        specific child widgets in a scroll area.
1068
1069- QScrollBar
1070
1071      * Ensured that a SliderMove action is triggered when the slider value is
1072        changed through a wheel event.
1073
1074- QSet
1075
1076      * Added QSet::iterator and QMutableSetIterator.
1077
1078- QSettings
1079
1080      * Store key sequences as readable entries in INI files.
1081
1082      * Detect NFS to prevent hanging when lockd isn't running.
1083
1084- QShortcut
1085
1086      * Added the setAutoRepeat(bool) function to disable auto-repeating
1087        actions on keyboard shortcuts.
1088
1089- QSize
1090
1091      * Fixed potential overflow issue in scale().
1092
1093- QSlider
1094
1095      * Added support for jump-to-here positioning.
1096
1097- QSortFilterProxyModel
1098
1099      * Handle source model changes (e.g., data changes, item insertion
1100        and removal) in a fine-grained manner, so that the proxy model
1101        behaves more like a "real" model.
1102
1103      * Added sortRole, filterRole and dynamicSortFilter properties.
1104
1105      * Perform stable sorting of items.
1106
1107      * Fixed support for drag and drop operations where one item is dropped
1108        on top of another.
1109
1110      * Ensure that persistent indexes are updated when the layout of the
1111        source model changes.
1112
1113      * Made match() respect the current sorting and filtering settings.
1114
1115      * Forward mimeTypes() and supportedDropActions() calls to source
1116        models.
1117
1118      * Added the ability to filter on all the columns.
1119
1120      * Added the filterChanged() function to enable custom filtering to be
1121        implemented.
1122
1123- QSqlQuery
1124
1125      * Added execBatch() for executing SQL commands in a batch. Currently
1126        only implemented for the Oracle driver.
1127
1128      * Fixed a case where executedQuery() would not return the executed
1129        query.
1130
1131- QSqlRelationalTableModel
1132
1133      * Fixed issue related to sorting a relational column when using the
1134        PostgreSQL driver.
1135
1136      * revertAll() now correctly reverts relational columns.
1137
1138- QStackedLayout
1139
1140      * Fixed crash that occurred when removing widgets under certain
1141        conditions.
1142
1143- QStackedWidget
1144
1145      * Fixed crash that occurred when removing widgets under certain
1146        conditions.
1147
1148      * Fixed issue where the size hint of the current widget would not be
1149        respected.
1150
1151- QStandardItemModel
1152
1153      * Added an item-based API for use with QStandardItem.
1154
1155      * Reimplemented sort().
1156
1157      * Added the sortRole property.
1158
1159- QStatusBar
1160
1161      * Added the insertWidget() and insertPermanentWidget() functions.
1162
1163- QString
1164
1165      * Added support for case-insensitive comparison in compare().
1166
1167      * Added toUcs4() and fromUcs4() functions.
1168
1169- QStyle
1170
1171      * Added the following style hint selectors:
1172        SH_Slider_AbsoluteSetButtons, SH_Slider_PageSetButtons,
1173        SH_Menu_KeyboardSearch, SH_TabBar_ElideMode, SH_DialogButtonLayout,
1174        SH_ComboBox_PopupFrameStyle, SH_MessageBox_TextInteractionFlags,
1175        SH_DialogButtonBox_ButtonsHaveIcons, SH_SpellCheckUnderlineStyle,
1176        SH_MessageBox_CenterButtons, SH_Menu_SelectionWrap,
1177        SH_ItemView_MovementWithoutUpdatingSelection.
1178
1179      * Added the following standard pixmap selectors:
1180        SP_DirIcon, SP_DialogOkButton, SP_DialogCancelButton,
1181        SP_DialogHelpButton, SP_DialogOpenButton, SP_DialogSaveButton,
1182        SP_DialogCloseButton, SP_DialogApplyButton, SP_DialogResetButton,
1183        SP_DialogDiscardButton, SP_DialogYesButton, SP_DialogNoButton,
1184        SP_ArrowUp, SP_ArrowDown, SP_ArrowLeft, SP_ArrowRight, SP_ArrowBack,
1185        SP_ArrowForward.
1186
1187      * Added PE_PanelScrollAreaCorner and PE_Widget as primitive element
1188        selectors.
1189
1190      * Added PM_MessageBoxIconSize and PM_ButtonIconSize as pixel metric
1191        selectors.
1192
1193      * Added SE_LineEditContents and SE_FrameContents as sub-element
1194        selectors.
1195
1196      * Added SE_FrameContents to control the contents rectangle of a
1197        QFrame.
1198
1199- QSvgHandler
1200
1201      * Improved style sheet parsing and handling.
1202
1203      * Added support for both embedded and external style sheets.
1204
1205      * Improved parsing of local url() references.
1206
1207      * Improved coordinate system handling.
1208
1209      * Fixed issue where the viewbox dimensions would be truncated to integer
1210        values.
1211
1212      * Fixed support for gradient transformations.
1213
1214      * Fixed opacity inheritance behavior.
1215
1216      * Added support for gradient spreads.
1217
1218      * Fixed gradient stop inheritance behavior.
1219
1220      * Fixed parsing of fill and stroke properties specified in style sheets.
1221
1222      * Added support for reading and writing the duration of animated SVGs.
1223
1224      * Fixed incorrect rendering of SVGs that do not specify default viewboxes.
1225
1226      * Fixed radial gradient rendering for the case where no focal point is
1227        specified.
1228
1229- QSyntaxHighlighter
1230
1231      * Added various performance improvements.
1232
1233- Qt namespace
1234
1235      * Added ForegroundRole and BackgroundRole, allowing itemviews to use
1236        any QBrush (not just QColor, as previously) when rendering items.
1237
1238      * Added NoDockWidgetArea to the ToolBarArea enum.
1239
1240      * Added NoToolBarArea to the DockWidgetArea enum.
1241
1242      * Added GroupSwitchModifier to the KeyboardModifiers enum. It
1243        represents special keys, such as the "AltGr" key found on many
1244        keyboards.
1245
1246      * Added several missing keys to the Key enum: Key_Cancel, Key_Printer,
1247        Key_Execute, Key_Sleep, Key_Play and Key_Zoom.
1248
1249      * Added OpenHandCursor and ClosedHandCursor for use with QCursor.
1250
1251- QTabBar
1252
1253      * QTabBar text can now be elided; this is controlled by the elideMode
1254        property.
1255
1256      * You can now turn on or off the "scroll buttons" for the tab bar with
1257        the usesScrollButtons property.
1258
1259      * Non-pixmap based styles will now fill the background of the tab with
1260        the palette's window role.
1261
1262- QTabletEvent:
1263
1264      * Ensured that QTabletEvents are dispatched with the proper relative
1265        coordinates.
1266
1267      * Added proximity as another type of a tablet event (currently only sent
1268        to QApplication).
1269
1270- QTableView
1271
1272      * Added API for spanning cells.
1273
1274      * Ensured that cells are selected when the user right clicks on them.
1275
1276      * Added a corner widget.
1277
1278      * Added the setSortingEnabled property.
1279
1280- QTableWidget
1281
1282      * Added the clearContents() function to enable the contents of the view
1283        to be cleared while not resetting the headers.
1284
1285      * QTableWidget now uses stable sorting.
1286
1287      * Allow sorting of non-numerical data.
1288
1289      * Add convenience table item constructor that takes an icon as well as
1290        a string.
1291
1292- QTabWidget
1293
1294      * Added missing selected() Qt3Support signal.
1295
1296      * Clarified documentation for setCornerWidget().
1297
1298      * Ensured that the tab widget's frame is drawn correctly when the tab
1299        bar is hidden.
1300
1301      * Ensured that the internal widgets have object names.
1302
1303      * Added iconSize, elideMode, and usesScrollButtons as properties (see
1304        QTabBar).
1305
1306- QTcpSocket
1307
1308      * Fixed a rare data corruption problem occurring on heavily loaded
1309        Windows servers.
1310
1311- QTemporaryFile
1312
1313      * Added support for file extensions and other suffixes.
1314
1315      * Fixed one constructor which could corrupt the temporary file path.
1316
1317- QTextBrowser
1318
1319      * Fixed various bugs with the handling of relative URLs and custom
1320        protocols.
1321
1322      * Added isBackwardAvailable(), isForwardAvailable(), and
1323        clearHistory() functions.
1324
1325- QTextCodec
1326
1327      * Allow locale-dependent features of Qt, such as QFile::exists(), to
1328        be accessed during global destruction.
1329
1330- QTextCursor
1331
1332      * Added columnNumber(), blockNumber(), and insertHtml() convenience
1333        functions.
1334
1335- QTextDocument
1336
1337      * Added convenience properties and functions: textWidth, idealWidth(),
1338        size, adjustSize(), drawContents(), blockCount, maximumBlockCount.
1339
1340      * Added support for forced page breaks before/after paragraphs and
1341        tables.
1342
1343      * Added CSS support to the HTML importer, including support for
1344        CSS selectors.
1345
1346      * Added defaultStyleSheet property that is applied automatically for
1347        every HTML import.
1348
1349      * Improved performance when importing HTML, especially with tables.
1350
1351      * Improved pagination of tables across page boundaries.
1352
1353- QTextEdit
1354
1355      * Fixed append() to use the current character format.
1356
1357      * Changed mergeCurrentCharFormat() to behave in the same way as
1358        QTextCursor::mergeCharFormat, without applying the format to the
1359        word under the cursor.
1360
1361      * QTextEdit now ensures that the cursor is visible the first time the
1362        widget is shown or when replacing the contents entirely with
1363        setPlainText() or setHtml().
1364
1365      * Fixed issue where the setPlainText() discarded the current character
1366        format after the new text had been added to the document.
1367
1368      * Re-added setText() as non-compatibility function with well-defined
1369        heuristics.
1370
1371      * Added a moveCursor() convenience function.
1372
1373      * Changed the default margin from 4 to 2 pixels for consistency with
1374        QLineEdit.
1375
1376      * Added support for extra selections.
1377
1378- QTextFormat
1379
1380      * Fixed the default value for QTextBlockFormat::alignment() to return
1381        a logical left alignment instead of an invalid alignment.
1382
1383      * Added UnderlineStyle formatting, including SpellCheckUnderline.
1384
1385- QTextStream
1386
1387      * Added the pos() function, which returns the current byte-position
1388        of the stream.
1389
1390- QTextTableCell
1391
1392      * Added the setFormat() function to enable the cell's character format
1393        to be changed.
1394
1395- QThread
1396
1397      * Related to changes to QObject, currentThread() always returns a
1398        valid pointer. (Previous versions of Qt would return zero if called
1399        from non-QThread threads; this does not happen in Qt 4.2).
1400
1401- QToolBar
1402
1403      * Introduced various fixes to better support tool buttons, button
1404        groups and comboboxes in the toolbar extension menu.
1405
1406      * Fixed crash that occurred when QApplication::setStyle() was called
1407        twice.
1408
1409- QToolButton
1410
1411      * Fixed an alignment bug for tool buttons with multi-line labels and
1412        TextUnderIcon style.
1413
1414- QToolTip
1415
1416      * Added the hideText() convenience function.
1417
1418      * Added the showText() function that takes a QRect argument specifying
1419        the valid area for the tooltip. (If you move the cursor outside this
1420        area the tooltip will hide.)
1421
1422      * Added a widget attribute to show tooltips for inactive windows.
1423
1424- QTranslator
1425
1426      * Added support for plural forms through a new QObject::tr() overload.
1427
1428      * Ensured that a LanguageChange event is not generated if the
1429        translator fails to load.
1430
1431      * Fixed a bug in isEmpty().
1432
1433      * Added Q_DECLARE_TR_FUNCTIONS() as a means for declaring tr()
1434        functions in non-QObject classes.
1435
1436- QTreeView
1437
1438      * Ensured that no action is taken when the root index passed to
1439        setRootIndex() is the same as the current root index.
1440
1441      * When hiding items the view no longer performs a complete re-layout.
1442
1443      * Fixed possible segfault in isRowHidden().
1444
1445      * Significantly speed up isRowHidden() for the common case.
1446
1447      * Improved row painting performance.
1448
1449      * After expanding, fetchMore() is called on the expanded index giving
1450        the model a way to dynamically populate the children.
1451
1452      * Fixed issue where an item could expand when all children were
1453        hidden.
1454
1455      * Added support for horizontal scrolling using the left/right arrow
1456        keys.
1457
1458      * Added a property to enable the focus rectangle in a tree view to be
1459        shown over all columns.
1460
1461      * Added more key bindings for expanding and collapsing the nodes.
1462
1463      * Added the expandAll() and collapseAll() slots.
1464
1465      * Added animations for expanding and collapsing branches.
1466
1467      * Take all rows into account when computing the size hint for a
1468        column.
1469
1470      * Added the setSortingEnabled property.
1471
1472      * Fixed the behavior of the scrollbars so that they no longer
1473        disappear after removing and re-inserting items while the view is
1474        hidden.
1475
1476      * Fixed memory corruption that could occur when inserting and removing
1477        rows.
1478
1479      * Don't draw branches for hidden rows.
1480
1481- QTreeWidget
1482
1483      * Added the const indexOfTopLevelItem() function.
1484
1485      * Improved item insertion speed.
1486
1487      * Fixed crash caused by calling QTreeWidgetItem::setData() with a
1488        negative number.
1489
1490      * QTreeWidget now uses stable sorting.
1491
1492      * Made construction of single column items a bit more convenient.
1493
1494      * Added the invisibleRootItem() function.
1495
1496      * Made addTopLevelItems() add items in correct (not reverse) order.
1497
1498      * Ensured that the header is repainted immediately when the header
1499        data changes.
1500
1501- QUiLoader
1502
1503      * Exposed workingDirectory() and setWorkingDirectory() from
1504        QAbstractFormBuilder to assist with run-time form loading.
1505
1506- QUrl
1507
1508      * Added errorString() to improve error reporting.
1509
1510      * Added hasQuery() and hasFragment() functions.
1511
1512      * Correctly parse '+' when calling queryItems().
1513
1514      * Correctly parse the authority when calling setAuthority().
1515
1516      * Added missing implementation of StripTrailingSlash in toEncoded().
1517
1518- QVariant
1519
1520      * Added support for all QMetaType types.
1521
1522      * Added support for QMatrix as a known meta-type.
1523
1524      * Added support for conversions from QBrush to QColor and QPixmap,
1525        and from QColor and QPixmap to QBrush.
1526
1527      * Added support for conversions between QSize and QSizeF, between
1528        QLine and QLineF, from long long to char, and from unsigned long
1529        long to char.
1530
1531      * Added support for conversions from QPointF to QPoint and from QRectF
1532        to QRect.
1533
1534      * Fixed issue where QVariant(Qt::blue) would not create a variant of
1535        type QVariant::Color.
1536
1537      * Added support for conversions from int, unsigned int, long long,
1538        unsigned long long, and double to QByteArray.
1539
1540- QWhatsThis
1541
1542      * Improved look and feel.
1543
1544- QWidget
1545
1546      * Delayed creation: Window system resources are no longer allocated in
1547        the QWidget constructor, but later on demand.
1548
1549      * Added a styleSheet property to set/read the widget style sheet.
1550
1551      * Added saveGeometry() and restoreGeometry() convenience functions for
1552        saving and restoring a window's geometry.
1553
1554      * Fixed memory leak for Qt::WA_PaintOnScreen widgets with null paint
1555        engines.
1556
1557      * Ensured that widget styles propagate to child widgets.
1558
1559      * Reduced flicker when adding widget to layout with visible parent.
1560
1561      * Fixed child visibility when calling setLayout() on a visible widget.
1562
1563      * Speed up creation/destruction/showing of widgets with many children.
1564
1565      * Avoid painting obscured widgets when updating overlapping widgets.
1566
1567- QWorkspace
1568
1569      * Resolved issue causing the maximized controls to overlap with the
1570        menu in reverse mode.
1571
1572      * Fixed issue where child windows could grow a few pixels when
1573        restoring geometry in certain styles.
1574
1575      * Ensured that right-to-left layout is respected when positioning new
1576        windows.
1577
1578      * Fixed crash that occurred when a child widget did not have a title
1579        bar.
1580
1581      * Fixed issue where maximized child windows could be clipped at the
1582        bottom of the workspace.
1583
1584- quintptr and qptrdiff
1585
1586      * New integral typedefs have been added.
1587
1588- Q3ButtonGroup
1589
1590      * Fixed inconsistencies with respect to exclusiveness of elements in
1591        Qt 3.
1592
1593      * Fixed ID management to be consistent with Qt 3.
1594
1595- Q3Canvas
1596
1597      * Fixed several clipping bugs introduced in 4.1.0.
1598
1599- Q3CanvasView
1600
1601      * Calling setCanvas() now always triggers a full update.
1602
1603- Q3Grid, Q3Hbox, Q3VBox
1604
1605      * Fixed layout problem.
1606
1607- Q3IconView
1608
1609      * Fixed a case where selected icons disappeared.
1610
1611- Q3ListBox
1612
1613      * Fixed inconsistencies in selectAll() with respect to Qt 3.
1614
1615      * Fixed possible crash after deleting items.
1616
1617- Q3ListView
1618
1619        Fixed possible crash in Q3ListView after calling clear().
1620
1621        Fixed inconsistent drag and drop behavior with respect to Qt 3.
1622
1623- Q3Process
1624
1625      * Stability fixes in start().
1626
1627- Q3Socket
1628
1629      * No longer (incorrectly) reports itself as non-sequential.
1630
1631- Q3Table
1632
1633      * Improved behavior for combobox table elements.
1634
1635
1636
1637****************************************************************************
1638*                          Database Drivers                                *
1639****************************************************************************
1640
1641- Interbase driver
1642
1643      * Fixed data truncation for 64 bit integers on 64 bit operating
1644        systems.
1645
1646- MySQL driver
1647
1648      * When using MySQL 5.0.7 or larger, let the server do the text
1649        encoding conversion.
1650
1651      * Added UNIX_SOCKET connection option.
1652
1653      * Improved handling of TEXT fields.
1654
1655- OCI driver
1656
1657      * Improved speed for meta-data retrieval.
1658
1659      * Fixed potential crash on Windows with string OUT parameters.
1660
1661      * Improved handling of mixed-case table and field names.
1662
1663- ODBC driver
1664
1665      * Improved error reporting if driver doesn't support static result
1666        sets.
1667
1668      * Improved support for the Sybase ODBC driver.
1669
1670- SQLite driver
1671
1672      *  QSqlDatabase::tables() now also returns temporary tables.
1673
1674      *  Improved handling of mixed-case field names.
1675
1676
1677
1678****************************************************************************
1679*                             QTestLib                                     *
1680****************************************************************************
1681
1682- Added "-silent" options that outputs only test failures and warnings.
1683
1684- Reset failure count when re-executing a test object
1685
1686- Added nicer output for QRectF, QSizeF, and QPointF
1687
1688
1689
1690****************************************************************************
1691*                      Platform Specific Changes                           *
1692****************************************************************************
1693
1694
1695Qtopia Core
1696-----------
1697
1698- Fixed the -exceptions configure switch.
1699
1700- Fixed a build issue preventing the use of MMX instructions when
1701  available.
1702
1703- Fixed leak of semaphore arrays during an application crash.
1704
1705- Fixed cases where the wrong cursor was shown.
1706
1707- Fixed cases where QWidget::normalGeometry() would return wrong value.
1708
1709- Allow widgets inside QScrollArea to have a minimum size larger than the
1710  screen size.
1711
1712- Allow (0,0) as a valid size for top-level windows.
1713
1714- VNC driver
1715
1716      * Fixed keyboard shortcut problem when using the VNC driver.
1717
1718      *  Fixed issue with the VNC driver that prevented client applications to
1719         connect in some cases.
1720
1721      *  Fixed a leak of shared memory segments in the VNC driver.
1722
1723      *  Reduced CPU consumption in the VNC driver.
1724
1725      *  Implemented dynamic selection of the underlying driver for the VNC and
1726         transformed screen drivers.
1727
1728      *  Improved error handling when clients connects to the server.
1729
1730- Graphics system
1731
1732      * Introduced new API for accelerated graphics hardware drivers.
1733
1734      * Implemented support for multiple screens.
1735
1736      * QScreen has binary incompatible changes. All existing screen drivers
1737        must be recompiled.
1738
1739      * QWSWindow, QWSClient, QWSDisplay and QWSEvent have binary
1740        incompatible changes. QWSBackingStore has been removed.
1741        Existing code using these classes must be recompiled.
1742
1743      * Added support for OpenGL ES in QGLWidget.
1744
1745      * Implemented support for actual screen resolution in QFont.
1746
1747      * Removed internal limitation of 10 display servers.
1748
1749      * Improved memory usage when using screens with depths less than 16
1750        bits-per-pixel.
1751
1752      * Fixed 16 bits-per-pixel screens on big-endian CPUs.
1753
1754      * Optimized CPU usage when widgets are partially hidden.
1755
1756      * Improved detection of 18 bits-per-pixel framebuffers.
1757
1758      * Improved performance when using a rotated screen with 18 or 24
1759        bits-per-pixel depths.
1760
1761      * Improved speed of drawing gradients.
1762
1763      * Introduced the QWSWindowSurface as a technique to create
1764        accelerated paint engines derived from QPaintEngine.
1765
1766      * Implemented the Qt::WA_PaintOnScreen flag for top-level widgets.
1767
1768      * Extended QDirectPainter to include non-blocking API and support for
1769        overlapping windows. Existing code that subclasses QDirectPainter
1770        must be recompiled.
1771
1772      * Implemented QWSEmbedWidget which enables window embedding.
1773
1774      * Removed hardcoded 72 DPI display limitation.
1775
1776- Device handling
1777
1778      * QWSMouseHandler has binary incompatible changes. All existing mouse
1779        drivers must be recompiled.
1780
1781      * Fixed an issue of getting delayed mouse events when using the
1782        vr41xx driver.
1783
1784      * Improved event compression in the vr41xx mouse handler.
1785
1786      * Improved algorithm for mouse calibration which works for all
1787        screen orientations.
1788
1789      * Fixed an issue causing mouse release events with wrong positions
1790        when using a calibrated and filtered mouse handler on a rotated
1791        screen.
1792
1793      * Made the tty device configurable for the Linux framebuffer screen
1794        driver.
1795
1796      * Fixed a deadlock issue when using drag and drop and a calibrated
1797        mouse handler.
1798
1799      * Autodetection of serial mice is turned off to avoid disrupt serial
1800        port communication. Set QWS_MOUSE_PROTO to use a serial mouse.
1801
1802- QVFb
1803
1804      * Fixed an issue preventing QVFb from starting on some systems.
1805
1806      * Added support for dual screen device emulation in QVFb.
1807
1808- QCopChannel
1809
1810      *  Added a flush() function so that the QWS socket can be flushed,
1811         enabling applications to ensure that QCop messages are delivered.
1812
1813
1814Linux and UNIX systems
1815----------------------
1816
1817- Printing
1818
1819      * Improved CUPS support by sending PDF instead of Postscript to
1820        CUPS on systems that have a recent CUPS library, improving the
1821        print quality.
1822
1823      * Added a new and improved QPrintDialog.
1824
1825      * Improved font embedding on systems without FontConfig.
1826
1827- QApplication
1828
1829      * When available, use Glib's mainloop functions to implement event
1830        dispatching.
1831
1832- QPlastiqueStyle
1833
1834      * Added support to enable KDE icons to be automatically used on
1835        systems where they are available.
1836
1837- QTextCodec
1838
1839      * Uses iconv(3) (when available) to implement the codec returned by
1840        QTextCodec::codecForLocale(). The new codec's name is "System"
1841        (i.e., QTextCodec::codecForLocale()->name() returns "System"
1842        when iconv(3) support is enabled).
1843
1844
1845AIX
1846---
1847
1848- The makeC++SharedLib tool is deprecated; use the "-qmkshrobj" compiler
1849  option to generate shared libraries instead.
1850
1851
1852X11
1853---
1854
1855- Added support to internally detect the current desktop environment.
1856
1857- QAbstractItemView
1858
1859      * Fixed assertion caused by interrupting a drag and drop operation
1860        with a modal dialog on X11.
1861
1862      * Ensured that release events dispatched when closing a dialog
1863        with a double click, are not propagated through to the window
1864        underneath.
1865
1866- QCursor
1867
1868      * Fixed crash occuring when the X11 context had been released before
1869        the cursor was destructed.
1870
1871- QGLWidget
1872
1873      * Fixed crashes that could occur with TightVNC.
1874
1875      * Improved interaction between QGLWidget and the Mesa library.
1876
1877- QMenu
1878
1879      * Made it possible for popup menus to cover the task bar on KDE.
1880
1881- QMotifStyle
1882
1883      * Ensured that the font set on a menu item is respected.
1884
1885- QX11EmbedContainer, QX11EmbedWidget
1886
1887      * Added missing error() functions.
1888
1889- QX11PaintEngine
1890
1891      * Increased speed when drawing polygons with a solid pixmap brush.
1892
1893      * Fixed masked pixmap brushes.
1894
1895      * Increased QImage drawing performance.
1896
1897- Motif Drop support
1898
1899      * Support for drops from Motif applications has been refactored and is
1900        now working properly. QMimeData reports non-textual data offered in
1901        Motif Drops using a MIME type of the form "x-motif-dnd/ATOM", where
1902        ATOM is the name of the Atom offered by the Motif application.
1903
1904- Font rendering
1905
1906      * Improved stability when rendering huge scaled fonts.
1907
1908      * Enabled OpenType shaping for the Latin, Cyrillic, and Greek
1909        writing systems.
1910
1911      * Improved sub-pixel anti-aliasing.
1912
1913      * Improved font loading speed.
1914
1915
1916Mac OS X
1917--------
1918
1919- Mac OS 10.2 support dropped.
1920
1921- QuickDraw support in QPaintEngine dropped; everything folded into the
1922  CoreGraphics support.
1923
1924- All libraries in Qt are now built as frameworks when -framework mode is
1925  selected (default) during the configuration process.
1926
1927- Many accessibility improvements, including better VoiceOver support. The
1928  following widgets have had their accessibilty updated for this release:
1929  QSplitter, QScrollBar, QLabel, QCheckBox, QRadioButton, QTabBar,
1930  QTabWidget, QSlider, and QScrollBar.
1931
1932- Hidden files are now reported as hidden by QFileInfo, QDirModel, etc.
1933
1934- Windows now have a transparent size grips, an attribute for specifying an
1935  opaque size grip was added.
1936
1937- Metrowerks generator has been removed.
1938
1939- Ensured that the anti-aliasing threshold setting is followed.
1940
1941- Added a standard "Minimize" menu item to Assistant's Window menu.
1942
1943- The documentation now has "Xcode-compatible" links so that it can be added
1944  into Xcode's documentation viewer. This needs to be done by the developer
1945  as regenerating Xcode's index takes quite a long time
1946
1947- QAbstractScrollArea
1948
1949      * Improved look and feel by aligning the scroll bars with the size
1950        grip.
1951
1952- QClipboard
1953
1954      * Data copied to the clipboard now stays available after the
1955        application exits.
1956
1957      * Added support for the Find clipboard buffer.
1958
1959      * Fixed encoding of URLs passed as MIME-encoded data.
1960
1961- QComboBox
1962
1963      * Improved the popup sizing so it's always wide enough to display its
1964        contents.
1965
1966      * Improved the popup placement so it stays on screen and does not
1967        overlap the Dock.
1968
1969      * The minimumSizeHint() and sizeHint() functions now honor
1970        minimumContentsLength.
1971
1972- QKeyEvent
1973
1974      * The text() of a QKeyEvent is filled with the control character if
1975        the user pressed the real Control key (Meta in Qt) and another key.
1976        This brings the behavior of Qt on Mac OS X more in line with Qt on
1977        other platforms.
1978
1979- QLibrary
1980
1981      * Removed the dependency on dlcompat for library loading and resolving
1982        in favor of native calls. This means that you can unload libraries
1983        on Mac OS X 10.4 or later, but not on 10.3 (since that uses dlcompat
1984        itself).
1985
1986- QMacStyle
1987
1988      * QMacStyle only uses HITheme for drawing now (no use of Appearance
1989        Manager).
1990
1991      * Fixed placement of text on buttons and group boxes for non-Latin
1992        locales.
1993
1994      * Fixed rendering of small and mini buttons.
1995
1996      * Attempt to be a bit smarter before changing a push button to bevel
1997        button when the size gets too small.
1998
1999      * Draws the focus ring for line edits when they are near the "top" of
2000        the widget hierarchy.
2001
2002      * Ensured that the tickmarks are drawn correctly.
2003
2004      * Implemented the standardIconImplementation() function.
2005
2006      * Fixed the look of line edits.
2007
2008      * "Colorless" controls now look better.
2009
2010      * Fixed the sort indicator.
2011
2012      * Improved the look of text controls, such as QTextEdit, to fit in
2013        better with the native style.
2014
2015- QMenu
2016
2017      * Popups no longer show up in Expose.
2018
2019      * Ensured that the proper PageUp and PageDown behavior are used.
2020
2021- QMenuBar
2022
2023      * Added support for explicit merging of items using QAction::MenuRole.
2024
2025      * Added support for localization of merged items.
2026
2027- QMessageBox
2028
2029      * A message box that is set to be window modal will automatically
2030        become a sheet.
2031
2032      * Improved the look of the icons used to fit in with the native style.
2033
2034- QPainter
2035
2036      * Fixed off-by-one error when drawing certain primitives.
2037
2038      * Fixed off-by-many error when drawing certain primitives using a
2039        scaling matrix.
2040
2041      * Fixed clipping so that setting an empty clip will clip away
2042        everything.
2043
2044      * Fixed changing between custom dash patterns.
2045
2046      * Added combinedMatrix() which contains both world and viewport/window
2047        transformations.
2048
2049      * Added the setOpacity() function.
2050
2051      * Added MiterJoins that are compliant with SVG miter joins.
2052
2053- QPainterPath
2054
2055      * Added the arcMoveTo() and setElementPosition() functions.
2056
2057- QPixmap
2058
2059      * Added functions to convert to/from a CGImageRef (for CoreGraphics
2060        interoperability).
2061
2062      * Fixed various Qt/Mac masking and alpha transparency issues.
2063
2064- QPrinter
2065
2066      * Made QPrinter objects resuable.
2067
2068- QProcess
2069
2070      * Always use UTF-8 encoding when passing commands.
2071
2072- QScrollBar
2073
2074      * Improved handling of the case where the scrollbar is to short to
2075        draw all its controls.
2076
2077- QTextEdit
2078
2079      * Improved the look of the widget to fit in with the native style.
2080
2081- QWidget
2082
2083      * All HIViewRefs inside Qt/Mac are created with the
2084        kWindowStandardHandlerAttribute.
2085
2086      * Added the ability to wrap a native HIViewRef with create().
2087
2088      * Windows that have parents with the WindowStaysOnTopHint also get the
2089        WindowStaysOnTopHint.
2090
2091
2092Windows
2093-------
2094
2095- Ensured that widgets do not show themselves in a hover state if a popup
2096  has focus.
2097
2098- Fixed issues with rendering system icons on 16 bits-per-pixel displays.
2099
2100- Fixed issue where fonts or colors would be reset on the application
2101  whenever windows produced a WM_SETTINGSCHANGE event.
2102
2103- Fixed a bug with Japanese input methods.
2104
2105- Compile SQLite SQL plugin by default, as on all the other platforms.
2106
2107- Fixed build issue when not using Precompiled Headers (PCH).
2108
2109- Made Visual Studio compilers older than 2005 handle (NULL == p)
2110  statements, where p is of QPointer type.
2111
2112- Fixed HDC leak that could cause applications to slow down significantly.
2113
2114- Ensured that timers with the same ID are not skipped if they go to different
2115  HWNDs.
2116
2117- Improved MIME data handling
2118
2119      * Resolved an issue related to drag and drop of attachments from some
2120        applications.
2121
2122      * Resolved an issue where pasting HTML into some applications would
2123        include parts of the clipboard header.
2124
2125      * Improved support for drag and drop of Unicode text.
2126
2127      * Made it possible to set an arbitrary hotspot on the drag cursor on
2128        Windows 98/Me.
2129
2130- ActiveQt
2131
2132    * Fixed issues with the compilation of code generated by dumpcpp.
2133
2134    * Made ActiveQt controls behave better when inserted into Office
2135      applications.
2136
2137    * Ensured that slots and properties are generated for hidden functions and
2138      classes.
2139
2140    * Ensured that the quitOnLastWindowClosed property is disabled when
2141      QApplication runs an ActiveX server.
2142
2143    * Ensured that controls become active when the user clicks into a subwidget.
2144
2145    * Added support for CoClassAlias class information to give COM class a
2146      different name than the C++ class.
2147
2148- QAccessible
2149
2150      * Ensured that the application does not try to play a sound for
2151        accessibility updates when no sound is registered.
2152
2153- QAxBase
2154
2155      * Fixed potential issue with undefined types.
2156
2157- QDir
2158
2159      * Fixed bug where exists() would return true for a non-existent drive
2160        simply because the specified string used the correct syntax.
2161
2162      * Improved homePath() to work with Japanese user names.
2163
2164- QFileDialog
2165
2166      * Added support for relative file paths in native dialogs.
2167
2168      * Enabled setLabelText() to allow context menu entries to be changed.
2169
2170      * Ensured that users are denied entry into directories where they
2171        don't have execution permission.
2172
2173      * Disabled renaming and deleting actions for non-editable items.
2174
2175      * Added a message box asking the user to confirm when deleting files.
2176
2177- QFileInfo
2178
2179      * Fixed absoluteFilePath() to return a path that begins with the
2180        current drive label.
2181
2182- QGLWidget
2183
2184      * Fixed usage of GL/WGL extension function pointers. They are now
2185        correctly resolved within the context in which they are used.
2186
2187- QGLColormap
2188
2189      * Fixed cases where the colormap was not applied correctly.
2190
2191- QMenu
2192
2193      * Made it possible for popup menus to cover the task bar.
2194
2195- QPrinter
2196
2197      * Added support for printers that do not have a DEVMODE.
2198
2199      * Fixed a drawing bug in the PDF generator on Windows 98/Me.
2200
2201      * Made it possible to programmatically change the number of copies
2202        to be printed.
2203
2204      * Fixed possible crash when accessing non-existent printers.
2205
2206- QProcess
2207
2208      * Fixed lock-up when writing data to a dead child process.
2209
2210- QSettings
2211
2212      * Fixed bug causing byte arrays to be incorrectly stored on
2213        Win95/98/Me.
2214
2215      * Allow keys to contain HKEY_CLASSES_ROOT and HKEY_USERS to allow all
2216        registry keys to be read and prevent unintentional use of
2217        HKEY_LOCAL_MACHINE.
2218
2219      * Fall back to the local machine handle if a key does not start with a
2220        handle name.
2221
2222- QUdpSocket
2223
2224       * Introduced fixes for UDP broadcasting on Windows.
2225
2226- QWhatsThis
2227
2228       * Improved native appearance.
2229
2230- QWidget
2231
2232       * Top-level widgets now respect the closestAcceptableSize of their
2233         layouts.
2234
2235       * Ensured that getDC() always returns a valid HDC.
2236
2237- QWindowsStyle
2238
2239      * We no longer draw splitter handles in Windows style. This resolves
2240        an inconsistency with XP style, so that the two styles can use the
2241        same layout interchangeably. Note that it is fully possible to style
2242        splitter handles (if a custom style or handle is required) using
2243        style sheets.
2244
2245      * Disabled comboboxes now have the same background color as disabled
2246        line edits.
2247
2248- QWindowsXPStyle
2249
2250      * Made QPushButton look more native when pressed.
2251
2252      * Improved the look of checked tool buttons.
2253
2254      * Defined several values that are not present in MinGW's header files.
2255
2256
2257
2258****************************************************************************
2259*                   Significant Documentation Changes                      *
2260****************************************************************************
2261
2262
2263- Updated information about the mailing list to be used for porting issues
2264  (qt-interest).
2265
2266- Demos / Examples
2267
2268      * Added a new directory containing desktop examples and moved the
2269        Screenshot example into it.
2270
2271      * Added a new Chat client network example which uses QUdpSocket to
2272        broadcast on all QNetworkInterface's interfaces to discover its
2273        peers.
2274
2275      * The Spreadsheet demo now uses the QItemDelegate, QCompleter, and
2276        QDateTimeEdit with calendar popup.
2277
2278      * An OpenGL button is added to some of the demos to toggle usage of
2279        the OpenGL paint engine.
2280
2281      * Fixed crash resulting from incorrect painter usage in the Image
2282        Composition example
2283
2284
2285
2286****************************************************************************
2287*                          Tools                                           *
2288****************************************************************************
2289
2290
2291Assistant
2292---------
2293
2294- Middle clicking on links will open up new tabs.
2295
2296- Added "Find as you type" feature to search documentation pages.
2297
2298- Added "Sync with Table of Contents" feature to select the current page in
2299  the contents.
2300
2301- Fixed issue where activating a context menu over a link would cause the
2302  link to be activated.
2303
2304- Provides a default window title when not specified in a profile.
2305
2306- Fixed JPEG viewing support for static builds.
2307
2308- Fixed crash that could occur when opening Assistant with old and invalid
2309  settings.
2310
2311- Fixed display of Unicode text in the About dialog.
2312
2313
2314Designer
2315--------
2316
2317- Added QWidget and the new widgets in this release to Designer's widget
2318  box.
2319
2320- Updated the dialog templates to use the new QDialogButtonBox class.
2321
2322- Backup files created by Designer no longer overwrite existing files.
2323
2324- Promoted widgets inherit the task menu items of the base class.
2325
2326- Enums are no longer ordered alphabetically in the property editor.
2327
2328- Fixed issue where shortcuts could be corrupted in certain situations.
2329
2330- Line endings in .ui files now match the standard line endings for the
2331  platform the files are created on.
2332
2333- Ensured that a warning is displayed whenever duplicate connections are
2334  made in the connections editor.
2335
2336- Added shortcuts for the "Bring to Front" and "Send to Back" form editor
2337  actions.
2338
2339- Added new 22 x 22 icons.
2340
2341- Fixed selection of dock widgets in loaded forms.
2342
2343- Made QWidget::windowOpacity a designable property.
2344
2345- Numerous improvements and fixes to the action and property editors.
2346
2347- Windows only
2348
2349      * The default mode is Docked Window.
2350
2351- Mac OS X only
2352
2353      * Preview of widgets is no longer modal.
2354
2355      * Passing really long relative paths into the resource will no longer
2356        cause a crash.
2357
2358
2359Linguist
2360--------
2361
2362- Added a new "Check for place markers" validation feature.
2363
2364- Added the "Search And Translate" feature.
2365
2366- Added the "Batch translation" feature.
2367
2368- Added support for editing plural forms.
2369
2370- Extended the .ts file format to support target language, plural forms,
2371  source filename, and line numbers.
2372
2373- Added the "Translated Form Preview" feature.
2374
2375- Added placeholders for "hidden" whitespace (i.e., tabs and newlines) in
2376  the translation editor.
2377
2378
2379lupdate
2380-------
2381
2382- Added the -extensions command-line option in order to recursively scan
2383  through a large set of files with the specified extensions.
2384
2385- Made lupdate verbose by default (use -silent to obtain the old behavior).
2386
2387- Improved parsing of project files.
2388
2389- Fixed some issues related to parsing C++ source files.
2390
2391
2392lrelease
2393--------
2394
2395- Made lrelease verbose by default (use -silent to obtain the old behavior).
2396
2397- Disabled .qm file compression by default (pass -compress to obtain the old
2398  behavior).
2399
2400
2401moc
2402---
2403
2404- Fixed support for enums and flags defined in classes that are themselves
2405  declared in namespaces.
2406
2407- Added support for the -version and -help command line options (for
2408  consistency with the other tools).
2409
2410
2411rcc
2412---
2413
2414- Added support for the -binary option to generate resources that are
2415  registered at run-time.
2416
2417
2418qmake
2419-----
2420
2421- Added support for an Objective C compiler on platforms that support it via
2422  OBJECTIVE_SOURCES. Additionally, Objective C precompiled headers are
2423  generated as necessary.
2424
2425- Added support for a qt.conf to allow easy changing of internal target
2426  directories in qmake.
2427
2428- Added support for the recursive switch (-r) in shadow builds.
2429
2430- Introduced QMAKE_CFLAGS_STATIC_LIB to allow modified flags to be
2431  passed to temporary files when compiling a static library.
2432
2433- Added a target.targets for extra qmake INSTALLS. The $files() function
2434  is now completely consistent with wildcard matching as specified to
2435  input file variables.
2436
2437- Added QMAKE_FUNC_* variables to EXTRA_COMPILERS for late evaluation
2438  of paths to be calculated at generation time. $$fromfile() will no
2439  longer parse input file multiple times.
2440
2441- Added support for -F arguments in LIBS line in the Xcode generator.
2442
2443- $$quote() has changed to only do an explicit quote, no escape sequences
2444  are expanded. A new function $$escape_expand() has been added to allow
2445  expansion of escape sequences: \n, \t, etc.
2446
2447- Added a $$QMAKE_HOST variable to express host information about the
2448  machine running qmake.
2449
2450- Added a $$replace() function.
2451
2452- Ensured that PWD is always consulted first when attempting to resolve an
2453  include for dependency analysis.
2454
2455- Added support for UTF-8 encoded text in .pro files.
2456
2457- Variables $$_PRO_FILE_ and $$_PRO_FILE_PWD_ added for features to detect
2458  where the .pro really lives.
2459
2460- Added QMAKE_FRAMEWORK_VERSION to override the version inside a .framework,
2461  though VERSION is still the default value.
2462
2463- Added support for custom bundle types on Mac OS X.
2464
2465- Added support for Mac OS X resources (.rsrc) in REZ_FILES.
2466
2467
2468qt3to4
2469------
2470
2471- qt3to4 now appends to the log file instead of overwriting it.
2472
2473- Fixed one case where qt3to4 was inserting UNIX-style line endings on
2474  Windows.
2475
2476- Added the new Q3VGroupBox and Q3HGroupBox classes to ease porting.
2477
2478- Updated the porting rules for this release.
2479
2480
2481uic
2482---
2483
2484- Added support for more variant types: QStringList, QRectF, QSizeF,
2485  QPointF, QUrl, QChar, qlonglong, and qulonglong.
2486
2487- Fixed code generated by uic for retranslating item view widgets so that
2488  the widgets are not cleared when they are retranslated.
2489
2490- Ensured that no code is generated to translate empty strings.
2491
2492
2493uic3
2494----
2495
2496- Added line numbers to warnings.
2497
2498- Ensured that warnings show the objectName of the widget in question.
2499
2500- Added support for word wrapping in labels when converting files from uic3
2501  format.
2502
2503- Ensured that the default layouts are respected when converting files from
2504  uic3 format.
2505
2506- Ensured that double type properties are handled correctly.
2507