1****************************************************************************
2*                          Important Notices                               *
3****************************************************************************
4
5Meta-Object System
6------------------
7
8Qt 4.0.0 introduced a change to the way type names outside the current
9scope were handled in signals and slots declarations and connections
10which differed from the behavior in Qt 3.x.
11
12Unfortunately, this could lead to signal-slot connections that were
13potentially type-unsafe. Therefore, in Qt 4.0.1 type names must be fully
14qualified in signal-slot declarations and connections.
15
16For example, in Qt 4.0.0, it was possible to write:
17
18    connect(socket, SIGNAL(error(SocketError)), ...);
19
20In Qt 4.0.1, the above connection must be made in the following way:
21
22    connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), ...);
23
24
25Library
26-------
27
28Support for SGI Altix has been added for both gcc and Intel icc.
29
30
31QX11EmbedContainer and QX11EmbedWidget are now exported classes.
32
33This change only affects developers using Qt/X11 with gcc >= 4.0 and
34symbol visibility enabled. Applications built against Qt 4.0.1 that
35use these classes cannot be linked against Qt 4.0.0.
36
37
38****************************************************************************
39*                                Changes                                   *
40****************************************************************************
41
42Qt Designer
43-----------
44
45Fixed crash in designer when using fonts in custom widgets that
46don't have a point size set but use a pixel size instead.
47
48Fixed initial positions of the form windows in the MDI mode.
49
50Ensured that the object inspector is updated when a page is added
51to a widget stack.
52
53Ensured that the SDK is installed and the library symbols are
54exported.
55
56Fixed crash when breaking a layout after deleting all widgets within.
57
58Fixed handling of nested action groups.
59
60Fixed mouse handling to match user expectations on different
61platforms.
62
63Don't change system setting for double click interval.
64
65Disabled the richtext editor for the "statusTip" property.
66
67Improved widget handling, loading and saving for QFrame, QTabWidget,
68and Q3GroupBox.
69
70Added a platform-neutral mechanism for saving key sequences.
71
72Used Qt's list of supported image formats rather than an incomplete
73static list.
74
75Provided a way for plugins to access to the layout of container
76widgets.
77
78Added support for editable byte arrays.
79
80
81Qt Linguist
82-----------
83
84Made lupdate handle cases where the compiler converts strings using
85a different codec to that used by lupdate.
86
87Fixed bug in lupdate and lrelease's .pro file parser.
88
89Fixed lupdate's octal sequence handling.
90
91Fixed duplicate context when two contexts have the same hash value.
92
93
94Qt 3 to 4 Porting Tool
95----------------------
96
97Fixed connnect statement that did not work with the new stricter moc.
98
99Fixed incorrect porting of enum values in switch statements.
100
101Fixed header file name replacements in include directives.
102
103
104Meta Object Compiler (moc)
105--------------------------
106
107Fixed VC6 compilation of moc generated code with namespaced
108superclasses.
109
110Fixed parsing of functions that throw exceptions.
111
112Fixed compilation of moc generated code with VC6 when inheriting
113from classes inside namespaces.
114
115Improved the efficiency of signals with default arguments.
116
117
118Qt Assistant
119------------
120
121Fixed the document list for full text search indexing.
122
123Fixed case sensitive completion in the find dialog combobox.
124
125Re-enabled the "add content file" option.
126
127Removed the "General" tab in the settings dialog.
128
129Fixed registry key handling and deletion of cache files.
130
131Made it possible to read titles in the tabs in assistant.
132
133Updated the QAssistantClient documentation.
134
135Added the QtAssistantClient headers to the other library headers
136for installation.
137
138Fixed full text search for phrases.
139
140
141General Fixes
142-------------
143
144- Dialogs
145        Removed hard-coded margin and spacing values from built-in
146        dialogs.
147
148- QAbstractItemModel
149        Fixed crash caused by removing an item with expanded children.
150        Added some more see also links and defined QModelIndexList.
151
152- QAbstractItemView
153        Fixed rendering and selection issues with MultiSelection
154        mode.
155        Improved handling of persistent editors.
156        Improved performance of item insertion.
157        Improved signal handling and emission.
158
159- QAbstractSlider
160        Ensured that no changes occur if the orientation doesn't
161        change in a call to setOrientation().
162        Introduced better keyboard control for sliders.
163        Fixed sliderPressed() and sliderReleased() signal emissions.
164
165- QAbstractSocket
166        Fixed race condition in connectToHost().
167        Made bytesAvailable() return the unget buffer size as well
168        as the size of any pending data.
169        Made NetworkLayerProtocol non-internal.
170
171- QAbstractSpinBox
172        Fixed problems with locale and the "." and "," separators.
173        Improved handling of extra whitespace at the beginning and
174        end of user input.
175
176- QApplication
177        Made closeAllWindows() respect windows that reject the close
178        event.
179        Fixed crash caused by calling QApplication::setStyle()
180        before a qApp was created.
181        Improved handling of the last open window for most cases.
182        Improved event handling.
183
184- QBezier
185        Used a new algorithm for offsetting curves.
186        Improved performance by using a more sophisticated
187        algorithm and by making QBezier a POD type.
188
189- QBrush
190        Improved radial gradient rendering.
191
192- QColorDialog
193        Process the return key correctly.
194
195- QComboBox
196        Fixed behaviour of setMaxItems() to enable new items to be
197        inserted within the range allowed.
198
199- QCommonStyle
200        Ensured that mnemonics are always shown for buttons.
201        Fixed position of right corner widget when used on its own.
202
203- QDateTimeEdit
204        Improved the range of input allowed for numbers.
205
206- QDial
207        Fixed valueChanged() signal emission.
208
209- QDialog
210        Fixed Lower QSizeGrip in QDialog instead of raising it.
211
212- QDir
213        Fixed relative path handling on Windows.
214        Reverted empty string matching behavior to match Qt 3's
215        behavior.
216        Restored API compatibility with Qt 3.
217
218- QDirModel
219        Fixed accidental deletion of directories in read-only mode.
220
221- QDockWidget
222        Ensured that the size of a floating dock widget is the same
223        regardless of how it was floated.
224        Reintroduced double-clicking behavior to float a dock
225        widget.
226        Fixed incorrect moving behavior for floating widgets.
227        Ensured that dock widgets display a close icon only if they
228        can be closed.
229
230- QDockWidgetLayout
231        See QMainWindow.
232
233- QDomNodeList
234        Fixed handling of out-of-range items.
235
236- QDoubleSpinBox
237        Improved decimals handling and rounding behavior in
238        QDoubleSpinBox.
239
240- QFile
241        Fixed problems with carriage return and line feed handling
242        in readLine().
243        Ensured that pos() returns the correct value if the file
244        shrinks.
245
246- QFileDialog
247        Fixed incorrect behavior where the dialog would go to the
248        root directory if the user tried to enter a non-existent
249        directory.
250        Fixed sorting by type behavior.
251
252- QFontDatabase
253        Fixed loading of special fonts.
254        Fixed sample characters for Chinese scripts.
255
256- QFontDialog
257        Switched the locations of the OK and Cancel buttons.
258        Made items in the font dialog read-only.
259        Improved handling of the OK and Cancel buttons when the
260        dialog is in reverse layout mode.
261
262- QGifHandler
263        Reintroduced GIF plugin support.
264
265- QGridLayout
266        Improved default size handling.
267
268- QHeaderView
269        Fixed section hiding behavior.
270        Fixed Out of bounds error and improper calculation of last
271        column.
272        Improved mouse handling and widget updating.
273        Fixed crashes caused by moving or removing sections, or by
274        updating the current section.
275        Improved signal behavior for resized or removed sections.
276
277- QHttp
278        Fixed proxy authentication.
279        Fixed broken behavior when scheduling many requests to
280        different hosts.
281        Fixed socket object ownership issues with setSocket() that
282        could lead to a crash.
283
284- QImage
285        Fixed smooth scaling for image formats other than RGB and
286        ARGB32.
287
288- QImageReader
289        Fixed the default implementation of imageCount() to return a
290        valid number of images.
291
292- QInputDialog
293        Switched the locations of the OK and Cancel buttons.
294
295- QIODevice
296        Fixed problems with carriage return and line feed handling
297        in readLine().
298        Made bytesAvailable() return the unget buffer size as well
299        as the size of any pending data.
300        Fixed error handling when reading lines with QFile.
301        Fixed seek() behavior with regard to the unget buffer.
302
303- QItemDelegate
304        Improved layout handling, redrawing, signal emission,
305        and mouse click behavior.
306
307- QKeySequence
308        Fixed accidental HTML escaping of ampersands.
309
310- QLayout
311        Print out object names in warnings.
312
313- QLineEdit
314        Enabled textChanged() signal emission when using input
315        methods.
316        Improved return key press handling for users of the
317        returnPressed() signal.
318        Fixed context menu action handling.
319        Fixed editingFinished() signal emission behavior.
320        Fixed Ctrl-K and Ctrl-U behavior to cut text rather than
321        just deleting it.
322        Fixed line edit selection behavior to maintain any current
323        selection when the widget receives the keyboard focus.
324
325- QListView
326        Improved handling of hidden rows.
327        Fixed rendering when used in reverse mode.
328
329- QListWidget
330        Fixed the size policy for laying out items in the list.
331        Improved sorting performance.
332        Fixed persistent index handling when sorting.
333
334- QMainWindow
335        Fixed problems with multiple connections from QMainWindow
336        signals to QToolBar slots.
337        Fixed dock widget handling (adding a widget to all dock
338        areas) and incorrect dock area splitting behavior that
339        could lead to crashes in QMainWindow.
340        Made QMainWindow's status bar have an "Ignored" horizontal
341        size policy.
342
343- QMetaObject
344        Fixed meta objects that reported far too many enums.
345        Fixed the behavior of sender() to return the correct value
346        during queued activation.
347
348- QMetaType
349        Fixed whitespace handling in template specialization.
350        Fixed missing qt_metatype_id implementation for <void *>.
351        Added more support for compilation with QT_NO_DATASTREAM.
352
353- QMenu
354        Fixed keyboard navigation when mouse navigation is also
355        being used.
356        Fixed menu bar merging behavior.
357
358- QMenuBar
359        Fixed Alt key navigation.
360
361- QObject
362        Fixed incorrect exception handling.
363
364- QPaintEngine
365        Suppressed warnings when drawing "empty" text.
366        Fixed rendering of Underline, Overline, and StrikeOut for
367        text drawn using outlines.
368
369- QPainter
370        Improved handling of clip regions when restore() is called.
371        Improved text drawing performance.
372
373- QPaintDevice
374        Allowed construction of QImage before QApplication.
375
376- QPainterPath
377        Improved performance and rendering accuracy.
378
379- QPen
380        Fixed missing detach in setWidth().
381
382- QPixmap
383        Improved drawing speed and mask handling.
384
385- QPlastiqueStyle
386        Improved visual feedback for scrollbar page buttons and
387        slider handle.
388        Improved Plastique style on non-XRender-enabled displays.
389
390- QProcess
391        Fixed endless loop of signal being emitted if model dialog
392        is used in slot.
393        Made bytesAvailable() return the unget buffer size as well
394        as the size of any pending data.
395
396- QProxyModel
397        Improved signal handling for propagated signals.
398
399- QResource
400        Fixed Latin-1 string handling.
401        Fixed unloading of resources.
402
403- QScrollArea
404        Fixed widget resizing so that widgets that are smaller than
405        the viewport remain visible.
406
407- QSettings
408        Made it possible to store QImage/QPixmap settings.
409        Fixed race conditions in QSettings with INI files.
410        Improved handling of non-terminated strings in INI files.
411
412- QSizeGrip
413        Made the Qt 3-style constructor public.
414
415- QSpinBox
416        Fixed problems with out-of-range integers and doubles.
417
418- QSqlQueryModel
419        Fixed integration between QSqlTableModel and MS Access.
420        Fixed signal emissions for tables with only one row.
421
422- QSqlTableModel
423        Fixed problems with multiple record insertion.
424
425- QStatusBar
426        Fixed status bar height without size grip.
427
428- QTabBar
429        Fixed handling of the current page index when adding the
430        first page to QTabWidget.
431        Improved tab bar icon handling to enable icons to be updated
432        without redrawing the entire tab bar.
433
434- QTableView
435        Improved text cursor handling and support for keyboard
436        modifiers.
437        Fixed problems with disappearing headers.
438        Disallowed selection of hidden rows and columns.
439        Fixed crashes involving empty models and tables with headers
440        but no rows or columns.
441
442- QTableWidget
443        Improved sorting and signal emission behavior.
444
445- QTabWidget
446        Fixed handling of the current widget to keep the tab bar
447        updated.
448
449- QTextBrowser
450        Removed temporary visible text selection when activating
451        anchors with Shift-click.
452
453- QTextCursor
454        Fixed selection behavior for words at the beginning of lines.
455        Fixed incorrect use of character formats when calling
456        insertFragment().
457        Fixed incorrect text insertion where line feeds and carriage
458        returns would not be transformed into Unicode block
459        separators.
460
461- QTextDocument
462        Added support for page breaking.
463        Added support for relative font sizes.
464        Added support for <hr /> tags.
465        Fixed clipboard handling and drag and drop of text frames.
466        Fixed handling of closing HTML </center> tags.
467        Fixed crash (failing assertion) on import of nested empty
468        HTML tables.
469        Fixed data corruption in fromPlainText().
470        Corrected the handling of image tags inside anchors.
471        Fixed introduction of empty spaces or lines before and after
472        tables.
473        Fixed misrendering of some nested HTML tables with variable
474        sized columns.
475        Fixed crash in table drawing due to out-of-bounds access.
476        Added support for the pageCountChanged() signal.
477        Improved performance and size of PostScript images when
478        printing high resolution or scaled images.
479
480- QTextEdit
481        Improved layout and selection handling.
482        Added configuration support for non-blinking cursors.
483        Improved keyboard handling.
484        Improved text insertion handling.
485
486- QTextFormat
487        Added support for horizontal rules.
488        Improved font handling.
489
490- QTextLayout
491        Allow line breaking at tabs.
492        Improved reporting of line widths for lines ending with a
493        QChar::LineSeparator.
494        Fixed reporting of the minimum width for layouts that have
495        NoWrap/ManualWrap as their wrap policy.
496
497- QTextStream
498        Fixed locking behavior when reading from stdin.
499        Fixed seek() behavior.
500        Improved Latin-1 string handling.
501
502- QTextTable
503        Improved performance and selection handling.
504
505- QToolBar
506        Fixed toolbar resizing behavior to handle icon size changes.
507
508- QTreeView
509        Improved handling of hidden rows, columns, and child items.
510        Fixed repainting issues with newly inserted child items
511        and selections.
512        Improved scrolling behavior.
513        Fixed crashes involving column handling and empty views.
514        Fixed sorting indicator behavior.
515
516- QTreeWidget
517        Improved item insertion performance.
518        Fixed clone() and operator=() for QTreeWidgetItem.
519        Fixed crash when removing or deleting items with children.
520        Improved sorting performance.
521        Fixed sorting indicator behavior.
522        Fixed persistent index handling when sorting.
523
524- QUrl
525        Improved the performance of removeDots().
526
527- QWidget
528        Fixed problems with adding an action multiple times.
529
530- QXmlInputSource
531        Improved heuristics for determining character encodings.
532
533- Q3FileDialog
534        Fixed file selection handling.
535
536
537Platform-Specific Issues
538------------------------
539
540Windows:
541
542- QApplication
543        Fixed Block modeless elements of client when ActiveX opens a
544        modal dialog
545        Enabled tablet support.
546        Improved event handling for popup widgets.
547
548- QAxWidget
549        Support a document site only if the COM object allows proper
550        initialization with a storage.
551
552- QFileDialog
553        Updated to use the latest native Windows dialogs.
554
555- QProcess
556        Fixed behavior of forwarded read channels.
557
558- QSettings
559        Fixed behavior of childKeys() with respect to the default
560        key.
561
562- QWindowsStyle
563        Fixed menu item size.
564        Improved drawing of default push buttons.
565        Fixed rendering of sliders to correctly differentiate
566        between those in enabled and disabled states.
567
568- QWindowsXPStyle
569        Fixed menu frame rendering.
570        Reduced the space allocate to menu items.
571
572
573X11:
574
575- QApplication
576        Fixed incorrect initialization of screen and resolution.
577        Improved mouse button handling.
578        Fixed handling of withdrawn windows.
579
580- QBitmap
581        Fixed bitmap brush textures to ensure that they use the
582        correct color with XRender.
583
584- QFont
585        Fixed handle() to return useful values.
586
587- QFontDatabase
588        Fixed fonts for some writing systems not being loaded on X11
589
590- QPaintEngine
591        Fixed multi-screen support.
592        Improved performance and rendering accuracy.
593        Fixed dot-dash patterns when drawing with large pen widths.
594        Improved text rendering on exported displays.
595
596- QWidget
597        Implemented support for window opacity.
598        Added support for widgets with 32 bit sizes.
599        Improved support for different active and inactive background
600        brushes.
601        Fixed window icons on X servers that have truecolor and
602        pseudocolor visuals with different depths.
603        Fixed text rendering on exported displays.
604
605- QXIMInputContext
606        Fixed crash in XIM code with newer x.org libraries.
607        Fixed support for switching input method styles.
608
609- QX11Embed
610        Exported QX11Embed (see the Important Changes section
611        above).
612        Improved handling of non-XEmbed clients.
613        Improved geometry and focus handling.
614
615
616UNIX:
617
618- QPageSetupDialog
619        Reduced the size of the dialog.
620
621- QPrintDialog
622        Fixed initialization of color and grayscale radio buttons.
623
624- QProcess
625        Fixed incorrect notification of process termination on
626        Linux kernels up to and including the 2.4 series.
627        Made QProcess emit an error() when failing to launch a
628        program.
629
630
631Mac OS X:
632
633- QApplication
634        Fixed widgetAt() to handle transparent widgets.
635        Handle keyboard events in the active window if no focus
636        window is available.
637        Changed wheel mouse scrolling speed to match that of
638        other applications.
639
640- QComboBox
641        Fixed rendering of combobox frames.
642
643- QDnD
644        Fixed URL handling.
645
646- QClipboard
647        Fixed Junk at end of pasted text on Qt/Mac.
648
649- QCursor
650        Fixed incorrect pixmap handling.
651
652- QFileDialog
653        Fixed sheet modality issues to prevent the dialog from being
654        hidden behind other windows.
655
656- QFont
657        Default to using the Geneva font.
658        Enable kerning and fix Arabic text handling.
659
660- QLibraryInfo
661        Fixed location of qt.conf in Mac OS X bundles.
662
663- QMacStyle
664        Improvements to rendering accuracy of comboboxes, tab bars,
665        workspace windows, tool buttons, and push buttons.
666        Fixed incorrect drawing of scrollbars with "inverted
667        appearance".
668        Fixed font-related crash for applications configured to
669        use the standard desktop settings.
670
671- QMenu
672        Improved menu bar handling on navigation dialogs.
673
674- QMenuBar
675        Improved menu bar hiding/wrapping behavior.
676
677- QPaintDevice
678        Removed byte order assumptions.
679
680- QPaintEngine
681        Improved brush handling, clipping, masking, and tiling
682        operations.
683
684- QPixmap
685        Improvements to pixmap copying and conversion, masking, and
686        alpha channel handling.
687        Removed byte order assumptions.
688
689- QPrintEngine
690        Made color printing the default behavior.
691
692- QSettings
693        Sync the application's setting on construction of a
694        QSettings object.
695
696- QSysInfo
697        Included enum values for Mac OS X codenames in the
698        MacVersion version enum.
699
700- QWidget
701        Improved mouse event handling.
702        Improved interoperability between modal widgets.
703
704
705Tools
706-----
707
708- uic3
709        Fixed class name handling when used in "-convert" mode.
710        Fixed vertical space issues with .ui files converted from
711        Qt 3 to Qt 4.
712        Improved support for Qt3Support widgets.
713        Improved support for deprecated enums.
714        Added a generator for dependencies in Qt 3 .ui files.
715
716- rcc
717        Added better error reporting.
718
719- uic
720        Added code generation for tab attributes.
721        Fixed text codec handling.
722        Used UTF-8 as the default enconding in .ui files.
723        Fixed code generation for QWizard.
724
725
726Documentation
727-------------
728
729Porting:
730
731Removed QMovie from the list of implicitly shared classes that were
732previously explicitly shared.
733
734Added .ui porting document to the 4.0.1 documentation.
735
736Added sections about QHBox, QVBox, and QGrid to the porting guide.
737
738Added QImageIO and QMovie to the porting guide.
739
740Added QRegExp and some QDir functions to the porting guide.
741
742Added QObject::objectTrees() to the porting guide.
743
744Added QPopupMenu to the porting guide.
745
746
747General:
748
749Fix documentation of amortized container behavior.
750
751Added information about using specific compilers to build Qt.
752
753Removed QtMotif documentation because it is now part of Qt Solutions.
754
755Clarify parent-child relationship within QThreads.
756
757Documented potential file name clashes when using precompiled headers.
758
759Added a Windows XP gallery.
760
761Added pages to contain lists of classes for each Commercial Edition.
762
763Reintroduced the QAssistantClient documentation as part of the
764QtAssistant module.
765
766Added missing Qt Designer API documentation.
767
768- QApplication
769        Documented correct use of QApplication::setStyle().
770
771- QComboBox
772        Made removeItem() and setRootModelIndex() visible in the
773        documentation.
774
775- QMetaObject
776        Added missing documentation for QGenericArgument and
777        QGenericReturnArgument, making them visible in the
778        documentation, but not recommended for casual use.
779
780- QPainter
781        Make QPainter::setRedirected() visible and fix its
782        description.
783
784- QSqlDatabase
785        Document what happens when passing an existing connection
786        name to addDatabase().
787