1Qt 4.6 introduces many new features and improvements as well as bugfixes
2over the 4.5.x series. For more details, refer to the online documentation
3included in this distribution. The documentation is also available online:
4
5  http://qt.nokia.com/doc/4.6
6
7The Qt version 4.6 series is binary compatible with the 4.5.x series.
8Applications compiled for 4.5 will continue to run with 4.6.
9
10Some of the changes listed in this file include issue tracking numbers
11corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
12Tracker, or the Merge Request queue of the public source repository.
13
14Qt Bug Tracker: http://bugreports.qt.nokia.com
15Task Tracker: http://qt.nokia.com/developer/task-tracker
16Merge Request: http://qt.gitorious.org
17
18****************************************************************************
19*                           General                                        *
20****************************************************************************
21
22New features
23------------
24
25 - QState, QStateMachine
26    * New classes for state machine framework added to QtCore.
27
28 - QAbstractAnimation
29    * New animation framework added to QtCore
30
31 - QTouchEvent
32    * New class for handling multitouch events added to QtGui
33
34 - QGesture, QGestureRecognizer
35    * New gesture framework added to QtGui
36
37 - QMatrix4x4, QGenericMatrix, QVector2D, QVector3D, QVector4D, QQuaternion
38    * New classes to support 3D applications.
39
40 - QGLShaderProgram, QGLShader
41    * New classes for using shader programs written in the GL Shading Language.
42
43 - QGraphicsEffect
44    * New classes for applying graphics effects to graphics items and widgets.
45
46 - QWebElement
47    * New class for DOM access added to QtWebKit
48
49 - QAudioInput, QAudioOutput
50    * New audio input and output classes.
51
52 - QAbstractVideoSurface, QVideoFrame
53    * New abstract video output classes.
54
55 - OpenVG graphics system added.
56
57 - Added 800x480 screen mode to qvfb configuration dialog.
58
59 - Improved support for input methods in graphics view.
60
61 - [MR#1742] Added new multimedia keys to the Qt::Key enum.
62
63 - Boxes demo ported to use new 3D math and shader program classes.
64
65 - QtTest now supports outputting XUnit XML documents, for integrating
66   with existing continuous integration systems. This is enabled by
67   running the test program with the -xunitxml option.
68
69 - QtDBus
70   * The minimum required version of the D-Bus reference library is
71     now 0.93.
72   * Support for reading and writing of custom property types added.
73   * Support for getting return arguments in remote method invocation
74     via QMetaMethod::invokeMethod.
75
76 - The QtScript module is now based on the 3rdparty JavaScriptCore library. It
77   is only available under the LGPL or a compatible license.
78
79Optimizations
80-------------
81
82 - Optimized rendering strategy in QGraphicsView
83    * See list of Important Behavior Changes below
84
85 - Improved delivery of posted events on Windows
86
87
88****************************************************************************
89*                          Library                                         *
90****************************************************************************
91
92QtCore
93------
94 - QAbstractItemModel
95    * [MR#972] Added API to move items
96    * [MR#1072] Added function beginResetModel() / endResetModel()
97
98
99 - QByteArray
100    * New overloads for QByteArray::insert() and QByteArray::prepend().
101    * [MR#1286] Added value_type typedef for STL compatibility
102
103 - QEventDispatcherGlib (internal class)
104    * Fix a regression introduced in 4.5.3 that would cause timers to not
105      be delivered.
106
107 - QEventDispatcherUNIX (internal class)
108    * Improve detection of monotonic clock support to include
109      non-POSIX.1-2001 compliant systems.
110    * [250681] Fix time change detection on UNIX systems without monotonic
111      timers.
112
113 - QEventDispatcherWin32 (internal class)
114    * Changed the threshold for using multimedia timers to 20ms (was 10ms).
115    * Changed the way Qt's posted events are sent by the event
116      dispatcher. They are now driven on top of a Windows message
117      instead of an explicit call in processEvents(). This means that
118      posted events are sent even when a Windows modal message loop is
119      running (for example, when the user is moving a window or when a
120      native modal dialog is visible).
121    * Fixed a bug that would allow the same timer id to be used by multiple
122      QTimer instances.
123
124 - QFile
125    * Make QFile::resize() more robust when operating on buffered files.
126
127 - QObject
128    * [259514] fixed a possible dead-lock in the destructor.
129    * Added the possibility to pass the flag Qt::UniqueConnection to
130      QObject::connect.
131    * Fixed race conditions that occured when moving object to threads
132      while connecting.
133
134 - QPluginLoader
135    * Improved performance of plugin loading by reusing the plugin cache
136      instead of loading it every time.
137
138 - QProcessEnvironment
139    * New class; support for easy access to key/value pairs in the process
140      environment.
141
142 - QRegExp
143    * New pattern syntax "QRegExp::WildcardUnix" with wildcard character
144      escaping.
145
146 - QScopedPointer
147    * New pointer class for cleaning up objects when leaving the current
148      scope.
149
150 - QSharedPointer
151    * Added support for creating the object along with the internal private
152      data in one single memory allocation. (QSharedPointer::create)
153    * Fixed a bug where, in a race condition, QSharedPointer could track a
154      pointer that was being deleted.
155
156 - QTextCodec
157    * Instantiate the CP949 codec when building with -no-iconv.
158
159 - QTextStream
160    * [221316] Fixed crash on large input.
161    * Improved reading utf8/utf16/utf32 data by correctly skipping the
162      ByteOrderMark when reading data by one character at a time.
163
164 - QThread
165    * [249997] Document that QThread priority has no effect on Linux.
166
167 - QUrl
168    * Made QUrl hostname parser a lot stricter, requiring compliance
169      to STD3 to validate, thus preventing invalid hostnames from
170      being accepted. See below in "Important Behavior Changes".
171
172 - QUuid
173    * [QTBUG-3543] Fixed a bug in createUuid() which caused multiple
174      threads to generate the identical UUID sequences.
175
176 - QVariant
177    * Many optimisations.
178    * Added QVariant::toFloat() and QVariant::toReal().
179    * Added QVariant(float) constructor.
180    * qvariant_cast<QVariant> and QVariant::fromValue<QVariant> are now
181      identity functions.
182    * Added support for math3d types.
183
184 - QWeakPointer
185    * Added support for tracking QObject-derived classes that aren't
186      attached to a QSharedPointer.
187    * Added QWeakPointer::data which allows you to obtain the pointer
188      being tracked (without protection).
189    * Added operator-> like the above data(), but requires a #define.
190
191 - QXmlStreamWriter
192    * [256468] Fixed comment indentation.
193
194QtGui
195-----
196
197 - Qt::escape
198    * Now escape the double quote (&quot;).
199
200 - QAbstractItemView
201    * [256502] Fixes selectionModel::hasSelection return value after
202      model::reset.
203    * [MR#1426] Fixes some issues with Shift-selection
204    * [MR#1668] New QAbstractItemView::setDefaultDropAction
205
206 - QApplication
207    * [QTBUG-739] Removed internal widgets from QApplication::topLevelWidgets().
208
209 - QCalendarWidget
210    * [252943] QCalendarWidget::setDateTextFormat() reset the format if the
211      date is invalid.
212
213 - QColumnView
214    * [246999] Fixed view not updating when the model changed dynamically.
215
216 - QComboBox
217    * [220195] Fixed keyboard search when current index is -1.
218
219 - QCompleter
220    * [246056] Fixed a possible assertion when setting the completer prefix.
221
222 - QEvent
223    * Introduced RequestSoftwareInputPanel and CloseSoftwareInputPanel events.
224
225 - QFontDialog
226    * [256466] Fixed the dialog not always returning the selected style.
227
228 - QFontEngine
229    * [QTBUG-2354] Support certain 'Microsoft' platform symbol fonts which
230      also contain a regular unicode table for exactly the symbol range of
231      code points.
232
233 - QFontEngineQPF
234    * Make alphaMapForGlyph() generate the correct color table for
235      Indexed8 and Mono glyph images.  Fixed the "all glyphs are white
236      boxes" problem in OpenGL1 paint engine.
237
238 - QFontMetrics
239    * [176401] Account for right bearing in bounding rect.
240
241 - QGraphicsAnchorLayout
242    * Support for expanding size policy has been removed. (The Qt 4.6 Beta
243      had support for it).
244
245 - QGraphicsBlurEffect
246    * Since the 4.6 Beta, Qt::RenderHint has been moved to
247      QGraphicsBlurEffect::BlurHint.
248    * Input contexts are not activated for disabled widgets anymore.
249    * [250555] Data copied from Mozilla Firefox can now be pasted correctly to
250      a Qt application.
251
252 - QGraphicsItem
253    * Many optimizations.
254    * Fixed bug and improved accuracy of QGraphicsItem::childrenBoundingRect().
255    * Introduced QGraphicsItem::ItemHasNoContents.
256    * Introduced QGraphicsItem::ItemSendsGeometryChanges (see Behavioral
257      Changes).
258    * Introduced QGraphicsItem::focusProxy(), focus proxy support.
259    * Introduced QGraphicsItem::ItemNegativeZStacksBehindParent.
260    * Introduced QGraphicsItem::ItemIsPanel, light-weight window support.
261    * Introduced modality support for QGraphicsItem panels.
262    * Introduced activation support.
263    * Introduced QGraphicsItem::stackBefore().
264    * Cached items are now always invalidated when update() is called.
265    * Added input hints.
266    * Added a new set of properties to set a transformation on an item.
267
268 - QGraphicsLayout
269    * Introduced QGraphicsLayout::addChildLayoutItem().
270
271 - QGraphicsObject
272    * New class; inherits QGraphicsItem and adds notification signals and
273      property declarations.
274
275 - QGraphicsProxyWidget
276    * [251407] Fixed window flag handling. Now QGraphicsProxyWidget's flags
277      win.
278    * Fix Qt::ClickFocus policy.
279
280 - QGraphicsScene
281    * Many optimizations.
282    * [245317] Fixes to mouse grabbing behavior.
283    * Fixed delivery of double-click events after explicit grab and then ungrab.
284    * Rewrote the internal rendering to use a recursive instead of an iterative
285      approach.
286    * Ensure hover enter events are delivered when an item is pressed.
287    * Introduced activation support.
288    * Fixed bugs in initial focus support.
289
290 - QGraphicsTextItem
291    * Now inherits from QGraphicsObject instead.
292
293 - QGraphicsTransform
294    * New class; eases animation of transformations for QGraphicsItem.
295
296 - QGraphicsView
297    * Many optimizations.
298    * Fix mapToScene(QRect) to avoid extra unnecessary adjustments.
299    * Introduced QGraphicsView::isTransformed().
300    * [QTBUG-4151] Items with parent that sets ItemClipsChildrenToShape were
301      sometimes invisible.
302
303 - QGraphicsWidget
304    * Now inherits from QGraphicsObject instead.
305    * Interactive resizing of top level windows now respects height-for-width
306      constraints.
307    * Reduced memory footprint.
308
309 - QHeaderView
310    * [208320] Make sure the sort indicator is taken into account for the size
311      hint.
312    * [255574] Make sure the size hint for the section depends on visible
313      sections.
314
315 - QImageReader
316    * [255627] Fix floating point exception in
317      QImageReader::setScaledSize(QSize(0, 0)).
318
319 - QLineEdit
320    * [248948] Clear selection when redoing a delete operation.
321    * [QTBUG-5261] Fixed bug where erasing characters from a textedit did not
322      update the text.
323
324 - QListView
325    * [243335] Fixed the visualRect to return correct values when the widget is
326      not yet shown.
327    * [MR#666] Fixed selection with Shift-Arrow/Shift-Click in QListView's IconMode
328
329 - QMainWindow
330    * [226060] Adding actions to a toolbar would always make the next toolbar
331      move.
332
333 - QMenu
334    * [252610] Fixed position of the shortcut text while setting a stylesheet
335      on menu items
336
337 - QMenuBar
338    * [260873] Fix mouse interaction while undocking a widget from the main
339      window
340    * Dock areas didn't get a splitter if their dock widgets were not
341      resizable.
342
343 - QPaintDevice
344    * New qt_paint_device_metric() function to replace the friend declarations
345      for window surface classes that need to access metric().
346
347 - QPainter
348    * [QTBUG-1666] Made QPainter::drawText() respect Qt::TextDontClip flag
349      also in vertical direction.
350    * [254658] Improved clipping performance in OpenGL paint engine.
351
352 - QPainterPath
353    * [QTBUG-1537] Fixed bug where the points of a rounded rectangle were added
354      in counter-clockwise order instead of clockwise order like other shapes.
355
356 - QPen
357    * [QTBUG-2738] Made QPen::setDashOffset() work with non-custom dashed lines.
358
359 - QPixmap
360    * Optimized width(), height(), isNull() and depth().
361    * [QTBUG-2832] Fixed bug where calling fill on pixmap with active painter
362      could crash.
363
364 - QPlainTextEdit
365    * Fixed crash when clicking on a text edit which was smaller than the
366      height of the font used.
367
368 - QPlastiqueStyle
369    * [QTBUG-3555] Fixed a bug in the Plastique style that would cause an
370      ASSERT failure in QFont when the application font has a pixel size set.
371
372 - QPrinter
373    * [QTBUG-4497] Removed redundant SetPen command in the postscript code when
374      reusing a QPrinter object.
375
376 - QPrintPreviewDialog now uses a QMainWindow with a proper QToolBar, instead
377   of a plain layout.
378
379 - QPushButton
380    * [255581] Fixed sizeHint recalculation bug.
381
382 - QRasterPaintEngine
383    * [QTBUG-4210] Fixed bug where bitmaps were painted black instead of in pen
384      colour.
385
386 - QRegion
387    * Minor optimizations.
388
389 - QSortFilterProxyModel
390    * [251296] Fixed bugs in which filtered items could not be filtered.
391
392 - QSplitter
393    * [206494] Added ability to style pressed slider with stylesheet.
394
395 - QSpinBox
396    * [259226] Fixed setting a stylesheet on a QSpinBox to change the arrow
397      position.
398    * [255051] Fixed sizeHint update bug.
399
400 - QStandardItemModel
401    * [255652] Fixed crash while using takeRow with a QSortFilterProxyModel.
402
403 - QStroker
404    * [QTBUG-5212] Fixed bug where thick strokes around small shapes could
405      cause holes in the stroke.
406
407 - QTabBar
408    * [196326] Fixed having a stylesheet on a QTabBar resulted in some tab
409      names being slightly clipped.
410    * [241383] Added ability to style the close tab button with style sheet
411
412 - QTableView
413    * [191545] Selections work more similarly to well-known spreadsheets.
414    * [234926] Fixed sorting after changing QTableView header.
415    * [244651] [245327] [250193] [QTBUG-5062] Spans get plenty of love with
416      performance improvements, support for row/column insertioa and removal,
417      and better keyboard navigation.
418
419 - QTableWidget
420    * [234641] Fixed takeItem to cause the view to be updated.
421
422 - QTextDocument
423    * [207189] Support setting font size using short hand syntax in the
424      CSS "font" property.
425    * [201228] Remove implicit margin on bullet lists when exporting to HTML.
426    * [240086] Fixed bug which caused floating objects which span several
427      pages to float into the second page of the document even when it's
428      the only existing object, causing the document to contain a blank
429      first page.
430    * [240325] Even with wrap mode set to Qt::TextWordWrap, the layout
431      would sometimes break outside word boundaries when floating objects
432      affected the width available to the text.
433    * [MR#681] Added support for roman numbering for lists
434    * [MR#1753] Fixed escaping HTML attributes QTextDocument::toHtml()
435
436
437 - QTextLayout
438    * [QTBUG-4468] Count tabs as multiple characters when applying a fixed
439      column width.
440    * [176401] Take into account the negative right bearing of the last
441      character in an item of text if the glyph extends beyond its ascent.
442
443 - QToolTip
444    * Fixed a bug where tooltips were not shown in popups (Windows only).
445
446 - QTreeView
447    * [234930] Be able to use :has-children and :has-sibillings in a stylesheet.
448    * [252616] Set QStyleOptionViewItemV4::OnlyOne flag when painting spanning
449      columns.
450    * [245654] Fixed expandAll when deleting and recreating a mode for the tree.
451    * [239271] Fixed missing update when adding a row when the first column is
452      hidden.
453    * [258225] Fixed scrollTo with center and bottom.
454
455 - QTreeWidget
456    * [253109] Shows the widget when calling setItemWidget.
457    * [MR#1393] Use stable sorting.
458
459 - QWidget
460    * Added inputMethodHints property.
461    * [201649] Added QWidget::previousInFocusChain.
462    * [254563] Fixed a crash when setting focus in a widget tree that
463      contains invisible widgets.
464    * [QTBUG-5012] Fixed uninitialized background when using QWidget::render
465      with Qt::WA_NoSystemBackground and window opacity set.
466
467QtDBus
468------
469
470 - QDBusConnection
471    * Made sending of invalid/incomplete messages consistently fail with error
472      (no more assertions).
473    * [249528/QTBUG-3833] Added an overload of connect() that allows one to
474      specify strings for matching arguments.
475
476 - QDBusServiceWatcher
477    * New class; supports efficiently watching for a service to be created,
478      deleted or to change owners.
479
480QtNetwork
481---------
482
483 - QAbstractSocket
484    * Only disconnect from host when all bytes have been written.
485    * New setSocketOption method.
486
487 - QHttp
488    * Do not buffer the complete POST data anymore when HTTPS is used.
489    * QHttp is now obsolete and replaced by QNetworkAccessManager.
490
491 - QLocalServer
492    * Fix timeout when waiting for a connection on Unix.
493
494 - QNativeSocketEngine
495    * Do not set the OS socket send and receive buffer size. The OS
496      should auto tune these values for us.
497
498 - QNetworkAcessManager
499    * [242916] Add possibility to send HTTP DELETE requests.
500    * Connection count per HTTP server increased to 6 on Desktop, 3 on Symbian.
501    * Optional HTTP pipelining support.
502    * General HTTP performance improvements.
503
504 - QNetworkReply
505    * [257322] Add possibility to ignore specific SSL errors.
506    * New isFinished() method.
507
508 - QSslCertificate
509    * [251830] Fix version() and serialNumber() methods.
510
511 - QSslSocket
512    * [257322] Add possibility to ignore specific SSL errors.
513    * Fix build with openssl 1.0.0 betas.
514    * Trigger a SSL transmission when reading from the socket. In certain
515      cases the connection stalled when a buffer limit was used.
516
517QtOpenGL
518--------
519
520 - QGLColormap
521    * setEntry() was inserting entries instead of replacing them.
522    * Clarified documentation for isEmpty().
523
524 - QGLContext
525    * Fix RGB565 mode in bindTexture().
526    * Map mipmaps work on OpenGL/ES 2.0 systems in bindTexture().
527    * Improve performance of QGLContext::currentContext().
528
529 - QGLFormat
530    * Increase unit test coverage and fix some long-standing issues.
531    * Improve performance of code that tests QGLFormat options.
532    * operator==() now tests for equality on all fields.
533
534 - QGLFramebufferObject
535    * Add support for the ARB_framebuffer_object, OES_framebuffer_object,
536      and OES_packed_depth_stencil extensions.
537    * Unbind the texture after it is initialized.
538    * Don't destroy the texture target on cleanup if one wasn't created.
539
540 - QGLFramebufferObjectFormat
541    * New class for controlling fbo options.
542
543 - Improvements to context sharing and object cleanup logic.
544
545 - QGLGradientCache
546   * [249919] Clean up the gradient cache in the right context.
547
548 - OpenGL (ES) 2.0 Paint Engine
549    * Re-written the OpenGL (ES) 2.0 Paint Engine's shader manager to use new
550      shader API and to allow custom code from E.g. Pixmap Filters to be
551      instered into the fragment "pipeline".
552    * Fixed conical gradients.
553
554 - Added a static function, QGL::setPreferredPaintEngine(), to allow users
555   to set the preferred GL paint engine.
556
557 - Cleaned up usage of OpenGL extensions. QtOpenGL now uses the OpenGL 2.0
558   names of methods rather than using the EXT postfix. However, when resolving
559   extensions, QtOpenGL will also try postfixing EXT if the OpenGL 2.0 name is
560   not found.
561
562 - Fix QGLWidget::showFullscreen() on EGL platforms.
563
564 - Added lots of OpenGL autotests.
565
566QtScript
567--------
568
569 - Many optimizations.
570 - Improved ECMA script compliance.
571 - New method, QScriptString::toArrayIndex(), for converting QScriptString
572   to a QtScript array index.
573
574QtSql
575-----
576
577 - [QTBUG-3162] Views for Sql table models should not reset state on failed
578   queries.
579 - [QTBUG-5251] Fix retrieval of SQL 'TIME' information for PostgreSQL.
580 - Better error checking in case of failed query.
581 - [QTBUG-5179] Fixed floating point number truncation in qsqlpsql plugin.
582 - [QTBUG-551] Fixed Oracle batchExec using strings as out params.
583 - Updated sqlite to 3.6.19 + readded our patches.
584 - [QTBUG-3736] ODBC: Retrieved in ascii, should be stored in ascii.
585 - Fixed issue with multiple lookups to same table/field in
586   QSqlRelationalTableModel.
587 - Updated documentation of setForwardOnly.
588 - [QT-754] TDS: Fixed improper formatting of date values.
589 - TDS: Fixed missing field/table name escaping.
590 - ODBC: Fixed setForwardOnly not being reset on when the query is reset.
591 - [QTBUG-4510] Add reconnection option to the mysql driver.
592 - [222678] Fixed QSqlTableModel: trying to delete the wrong row.
593 - Interbase: Fixed crash when calling numRows on unknown query type.
594 - DB2: Don't return an error when the table is just empty.
595 - [17327] Added OCI support for synonyms to tables created by another user.
596 - [176267] Fixed mysql driver not knowing the difference between tables and
597   views.
598 - Fixed determination of end of ODBC string on deficient drivers.
599 - Added ability to open sqlite databases readonly.
600 - Fixed race condition on reopening an ODBC connection.
601 - Fixed invalid use of statics in the defaultCasing code.
602 - Fixed proper quoting under odbc.
603 - [252450 & 246125] Fixed failed queries due to MySql driver auto-preparing.
604 - QSqlDatabase now has a database level precisionPolicy. Queries now default
605   to this.
606 - Add proper iODBC linking support.
607
608QtSvg
609-----
610
611 - QSvgHandler
612   * [245602] [204686] Fixed gradient and solid-color referencing.
613   * [202426] Made attribute inheritance work with 'use' tags.
614   * [250618] Fixed gradient on strokes.
615   * [254040] Added support for 'vector-effect'.
616
617 - QSvgPaintEngine
618   * [257052] Changed drawImage() to ignore aspect ratio.
619
620QtWebKit
621--------
622
623 - Many bug fixes.
624
625 - QWebElement
626   * New class; introduced to implement DOM like operations on a web page.
627
628 - QWebFrame
629   * New properties for an URL and a focus management.
630   * New signals delivering current loading status.
631
632 - QWebInspector
633   * New class for embedding the WebInspector as a QWidget
634
635 - QWebHistory
636   * Streaming operators for saving and restoring QWebHistory's state.
637
638 - QWebPage
639   * New property; preferredContentsSize for setting layout of the page in the
640     viewport.
641   * New slot; shouldInterruptJavaScript, called when JavaScript program is
642     running too long.
643
644 - QWebSecurityOrigin:
645   * New functions for defining local URL schemes.
646
647 - QWebSettings
648   * New options for text encoding and off-line web application cache (HTML5).
649
650 - QWebView
651   * Support for render hints.
652
653QtXml
654-----
655
656 - QDomDocument
657    * Set the codec to UTF-8 if codec not present or unknown.
658
659QtXmlPatterns
660-------------
661
662 - QXmlQuery
663    * [245219] Added QXmlQuery::setFocus(const QString &focus).
664
665Qt Plugins
666----------
667
668 - Tiff plugin
669    * [258526] Rotate the image if the tiff file contains an orientation tag.
670    * [254317] Add support for mono and indexed format
671
672Third party components
673----------------------
674
675 - Updated FreeType to version 2.3.9.
676
677 - Updated harfbuzz to the latest version from fd.org.
678
679 - Updated sqlite to version 3.6.19.
680
681 - Updated libpng to version 1.2.40
682
683
684****************************************************************************
685*                      Platform Specific Changes                           *
686****************************************************************************
687
688 - Added support for the Symbian platform with integration for the S60
689   framework.
690
691 - Added community supported Qt ports for QNX and VxWorks. See platform
692   notes in the Qt documentation for details.
693
694 - Improved support for AIX using IBM's Visual Age C/C++ compiler
695   version 7 (xlC).
696
697 - Improved support for Solaris using Sun Studio 12 (CC 5.9).
698
699Qt for Unix (X11 and Mac OS X)
700------------------------------
701
702 - Added support for thread-safe FD_CLOEXEC file-descriptor creation
703   where supported by the operating system (currently only Linux).
704
705 - Ensured that system calls where EINTR is a possible result are
706   properly restarted.
707
708Qt for Linux/X11
709----------------
710
711 - KDE Integration: Improved the integration into KDE desktop (loading of KDE
712   palette, usage of KColorDialog and KFileDialog) using the GuiPlatformPlugin
713
714 - Fixed pasting the clipboard content to non-Qt application on X11 when the
715   requested format is image/ppm.
716
717 - On X11, Qt now supports the _NET_WM_SYNC protocol.
718
719 - On X11, Qt now supports the SAVE_TARGET protocol that allows to keep
720   clipboard contents if the application that owns the clipboards exits
721
722 - [QTBUG-4652] On X11, clipboard content can be properly retrieved even when
723   an application asks for the unsupported target. This fixes copying and
724   pasting data when using Synergy.
725
726 - [MR#797] Fixed a crash when using QX11EmbedContainer/Widget on x86_64.
727
728 - [MR#1111] Emit workAreaResized when _NET_WORKAREA is changed on X11.
729
730 - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
731   it was unreadable when printed or presented in a print preview widget.
732
733 - Improved EGL integration on X11 (including better visual selection).
734
735 - Made Qt::WA_TranslucentBackground work in combination with native
736   child widgets.
737
738 - Support Qt::WA_TranslucentBackground on top-level QGLWidgets on X11, both
739   (EGL & glX). This allows OpenGL (& ES) rendering to semi-transparent widgets
740   if a compositing window manager is running.
741
742 - Support OpenGL texture_from_pixmap extension on X11 (EGL & glX) when
743   calling QPainter::drawPixmap() with the OpenGL paint engine, or calling
744   QGLContext::bindTexture() on an X11 QPixmap. If the
745   GLX_EXT_texture_from_pixmap or EGL_NOKIA_texture_from_pixmap extensions are
746   present, Qt will attempt to use glXBindTexImageEXT or eglBindTexImage to
747   bind the pixmap to a texture, rather than copying the pixel data.
748
749 - Add new experimental QX11GLPixmapData backend for QPixmap. This pixmap
750   backend uses regular X11 pixmaps to store the image data, however it uses
751   OpenGL to render into them.
752
753 - Tablet: Disable event compression of events of type QTabletEvent when the
754   current event is accepted by the receiver.
755
756 - [QTBUG-4242] Fixed a bug that allowed the user to close a window
757   event though the program is using the QEventLoop::ExcludeUserInputEvents
758   flag.
759
760 - [255559] Fixed generation of XdndLeave events to include the correct
761   source id.
762
763 - [258319] Avoid division by zero on some Xlib/Xserver implementations.
764
765 - Fixed the default QWidget size on X servers with Xinerama to give widgets
766   a default size that should fit on a single screen.
767
768 - Support _NET_WORKAREA on X servers with Xinerama (previously this property
769   was ignored).
770
771Qt for Windows
772--------------
773
774 - Significant external contribution from Milan Burda for planned removal
775   of (non-unicode) Windows 9x/ME support.
776
777 - QRegion is no longer a GDI object by default. This means it is no
778   longer subject to gui-thread only nor does it potentially impact
779   the 10.000 GDI object limit per process. By explicitly calling
780   .handle() a GDI object will be created and memory managed by
781   QRegion. The native handle is for reading out only. Any GDI calls
782   made on the HRGN handle will not affect the QRegion.
783
784 - The reading code of QLocalSocket on Windows has been rewritten to improve
785   reading performance.
786
787 - On Windows when a file cannot be accessed (stat()ed), we are now restoring
788   the error mode to the original value.
789
790 - [259221] QFileInfo::symLinkTarget() now supports NTFS symbolic links
791   thanks to Konstantin Ritt (merge request 1217).
792 - [251554] Fixed openUrl("mailto:") with Thunderbird on Windows.
793 - [254501] QDestopServices now supports cyrillic file names.
794 - Fixed an issue which prevents moving fixed size windows using titlebar.
795 - [258087] Fixed an issue on Vista which returns incorrect file paths when
796   using QFileDialog::getOpenFileNames()
797 - [253763] Fixed a focus issue when using out-of-process ActiveQt controls.
798 - [255912] Mouse move events will not be delivered to a blocked widget.
799 - [225588] Enabled IME reconversion support.
800
801 - Phonon on Windows
802   * Now much more reliable when reading a file through a QIODevice.
803   * If Video Mixing Renderer 9 is not available, falls back to software
804     rendering.
805   * Fixed a flicker issue when switching source with a transition time of 0.
806
807 - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
808   text where several characters were represented by a single glyph, e.g.
809   a double 't' with the Calibri font.
810
811 - Added QSysInfo::WV_WINDOWS7 and QSysInfo::WV_6_1.
812
813 - Changed QPrintDialog under Windows to use PrintDlgEx, instead of the old
814   deprecated PrintDlg call.
815
816Qt for Mac OS X
817---------------
818
819 - General changes on Mac OS X:
820   * Mac OS X version support: Support for 10.3(Panther) has been dropped and
821     support for 10.6(Snow Leopard) has been added.
822   * The Cocoa port now supports static linking.
823   * The Cocoa port now supports the Qt3Support library (with the exception of
824     Q3FileDialog) to ease the transition from Carbon to Cocoa.
825   * The Cocoa binary packages are now Intel only (universal i386 and x86_64).
826   * Snow Leopard notes:
827     - Gcc 4.2 is used by default. Configure with -platform macx-g++40 to
828       select 4.0.
829     - Using the 10.4u SDK requires gcc 4.0.
830     - Configuring for the Cocoa port (-cocoa) produces 64-bit binaries by
831       default. Use the -arch flags to override.
832     - Building for ppc64 is no longer supported by the gcc tool chain.
833     - Building for ppc is still supported.
834   * Added support for GetURL events on Mac OS X.
835
836 - General bug fixes:
837   * [123740] Fixed an issue with dead keys on Mac (cocoa) on French keyboard
838     layout.
839   * [258438] Enabled Emacs style keyboard shortcuts.
840   * [QTBUG-4418] Fixed maximizing and restoring a window.
841
842 - Cocoa bug fixes:
843   * [252088] Drag Leave events will be delivered correctly on Cocoa.
844   * [257661] Cocoa now uses the correct line ending for clipboard plain text.
845   * [258173] Fixed an issue which caused "whatsthis" pointer to flicker.
846   * Fixed some warnings that might get printed when reparenting QGLWidget.
847   * Fixed stacking order of modal dialogs so that they never rearrange level,
848     or hide in the background.
849   * Fixed problem with plugins written with Qt that closes down the native
850     application when hiding a modal dialog.
851   * Fixed problem that native applications cannot quit when using plugins
852     written with Qt from a native application.
853   * Fixed problem that the menubar is not restored correctly when using
854     plugins written with Qt from a native application.
855   * The event dispatcher now integrates better with native applications that
856     spin the event loop themselves.
857   * Using Qt::AA_MacPluginApplication will now disable the use of native
858     menubars on Mac.
859   * Sliders and scroll views in Qt now use pixel scrolling for mouse devices
860     that support this.
861   * Wheel events can now contain a delta with a value as low as 1 for mouse
862     devices that use pixel scrolling.
863
864Qt for Embedded Linux
865---------------------
866
867 - Added QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL and
868   QMAKE_LIBS_OPENGL_ES2 qmake variables for specifying OpenGL ES
869   specific libraries.
870
871 - Compilation fixes for OpenGL/ES 1.0 and OpenGL/ES 1.1 Common Lite.
872
873 - Phonon on Windows
874   * Now much more reliable when reading a file through a QIODevice.
875   * If Video Mixing Renderer 9 is not available, falls back to software
876     rendering.
877   * Fixed a flicker issue when switching source with a transition time of 0
878
879 - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
880   it was unreadable when printed or presented in a print preview widget.
881
882 - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
883   text where several characters were represented by a single glyph, e.g.
884   a double 't' with the Calibri font.
885
886 - EGL and OpenGL/ES
887   * Protect the use of version-specific EGL symbols with #ifdef's.
888   * Make sure an EGL context is current when resolving GL extensions.
889   * Introduce "lazyDoneCurrent" for optimizing context switching in
890     paint engines.
891   * Separate EGLSurface from QEglContext so that the same context can
892     be used with multiple surfaces.
893   * Move common functions from system-specific files to qgl_egl.cpp.
894   * Fix a memory leak of EGLSurface's in QGLContext.
895   * Fix detection of pbuffers on OpenGL/ES systems.
896   * EGL_SAMPLES was being set to the wrong value for multisampled surfaces.
897
898 - PowerVR
899   * Make the code better at detecting MBX vs SGX header files.
900   * Fix 32-bit screen support - some code was still assuming 16-bit.
901   * Stop GL window surfaces double-flushing their contents.
902   * Remove surface holder, which never worked all that well.
903   * Implement screen rotations.
904
905 - Mouse and keyboard drivers
906   * Removed obsolete drivers (vr41xx, yopy, sl5000, bus mouse).
907   * Added a new LinuxInput driver for both mouse and keyboard.
908   * Added keymap support for QWS via standard Linux .kmap files.
909     (complete with dead-keys, compose-key and LED handling).
910
911 - Remove obsolete OpenGL/ES screen drivers: hybrid, ahigl.
912
913 - Send enter/leave events also to child widgets.
914
915 - Fix crash when instantiating multiple QApplications.
916
917 - Optimize software cursor by using native image format instead of 8-bit.
918
919 - [255828] Avoid window decoration flicker on show.
920
921 - [255495] Fix blend function crash on AVR32.
922
923 - Fix qconfig configurations.
924
925 - Add powerpc mkspec and remove "empty" ppc mkspec .
926
927DirectFB
928--------
929
930 - When running Qt/DirectFB the DirectFB window id of a top level QWidget can
931   be queried using property("_q_DirectFBWindowID")
932
933 - Allow setting the background color of the primary layer in DirectFB with
934   connect options. QWS_DISPLAY=directfb:bgcolor=red or
935   QWS_DISPLAY=directfb:bgcolor=\#aabbccdd
936
937 - Add support for rendering mouse cursor using a top level window when cursor
938   support is not working in IDirectFBDisplayLayer. Define
939   QT_DIRECTFB_WINDOW_AS_CURSOR to enable.
940
941 - Add experimental support for optimized locking/unlocking of surfaces. Enable
942   by defining QT_DIRECTFB_SUBSURFACE.
943
944 - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a
945   proxy screen. Don't make QDirectFBScreen::instance() assume that
946   QScreen::instance() is a QDirectFBScreen.
947
948 - Optimize move/resize operations with DirectFB. With a properly configured
949   DirectFB these operations are handled for us and we don't need to force a
950   repaint of the window.
951
952 - Support top level window opacity in DirectFB
953
954 - Fix a bug when loading RGB32 images that would lead to rendering issues.
955
956 - Fix a bug when painting with invalid pens/brushes.
957
958 - Fix a bug that would show up when QWidget::scroll is called.
959
960 - Implement support for loading pixmaps using IDirectFBImageProvider.
961
962 - Disable color table support by default. This seems to work incorrectly on
963   most boards and loading these images will generally require an image
964   conversion anyway.
965
966 - Fix a crash when resizing windows.
967
968 - Compile with versions < 1.0. We still recommend using newer versions.
969
970 - Considerable code cleanup
971
972 - Various optimizations regarding painting, loading of images and creation of
973   surfaces.
974
975 - Allow forcibly falling back to raster engine for painting operations by
976   exporting QT_DIRECTFB_FORCE_RASTER=1
977
978 - Reenable support for RGB32 primary surface.
979
980
981Qt for Windows CE
982-----------------
983
984 - On Windows CE the link time code generation has been disabled by default to
985   be consistent with win32-msvc200x.
986 - The default button size has been reduced in the Windows mobile style.
987 - [QTBUG-3613] QWizard issues have been fixed on Windows mobile.
988 - [254673] Restoring minimized widgets fixed for Windows mobile and
989   Windows CE.
990 - [255242] Seeking within large files (bigger than 0x80000000 bytes) fixed
991   on Windows CE.
992 - [257352] When configuring Qt for Windows CE, configure points the user to
993   setcepaths, when its done.
994 - [259850] Added a makespec template for Windows CE 6.
995 - Fixed the hardcoded GL library names for Windows CE.
996
997****************************************************************************
998*                          Tools                                           *
999****************************************************************************
1000
1001 - Designer
1002   * [233683] Promoted Widgets are now stored correctly in scratchpad.
1003   * [249823] Added search functionality to the resource browser.
1004   * [254282] Enabled the use of promoted widgets in form templates.
1005   * [254824] Made it possible to override the createAction()/createWidget()
1006     functions of QUiLoader.
1007   * [256332] Enabled deleting all pages of a QTabWidget or QStackedWidget.
1008   * [259238] Fixed menubar/menu editing in right-to-left mode.
1009   * [259918] Fixed setting of object names for container pages not to use
1010     localized strings.
1011   * [260658] Fixed saving of alpha values set in the palette editor.
1012   * It is now possible to further specify the kind of custom widget string
1013     properties using XML tags.
1014
1015 - uic
1016   * [260784] Generated code for retranslateUi doesn't cause compiler warnings
1017     anymore.
1018
1019 - uic3
1020   * [128859] Fixed code generation of QLabel's wordWrap property.
1021
1022 - qdoc3
1023   * Changed qdoc3 binary to be in bin/ instead of a platform specific location.
1024
1025 - Linguist
1026   * Linguist GUI: Experimental support for editing multi-length strings.
1027   * lupdate is now again the only tool which can parse program code.
1028   * lupdate
1029     - Actually guess the target language from the file name.
1030     - Make -{source,target}-language actually override values from files.
1031     - C++ parser
1032       * Properly support "using namespace", etc.
1033       * Remove the obsolete TRANSLATOR hack relating to "using namespace".
1034       * Support attaching meta data to translatable message.
1035       * Actually use the argument of Q_DECLARE_TR_FUNCTION.
1036       * Optimization.
1037       * Bug fixes and robustness improvements.
1038   * lrelease
1039     - Add -markuntranslated <prefix> option.
1040   * Both lupdate & lrelease
1041     - Accuracy improvements of the qmake .pro file parser.
1042     - Support for ID-based translations. Somewhat experimental.
1043   * lconvert
1044     - Add --sort-contexts option.
1045     - Add --locations option (complementing lupdate).
1046     - Add --no-ui-lines option (complementing lupdate).
1047
1048
1049****************************************************************************
1050* Important Behavior Changes *
1051****************************************************************************
1052
1053 - The experimental Direct3D paint engine has been removed. The reason for
1054   this is that Nokia focuses on OpenGL for desktop hardware accelerated
1055   rendering.
1056
1057 - The default engine used to draw onto OpenGL buffers has changed in
1058   Qt 4.6. The QPaintEngine::OpenGL2 engine is now used as the default
1059   engine. This *may* cause compatibility problems for applications
1060   that use a mix of QPainter and native OpenGL calls to draw into a GL
1061   buffer. Use the QGL::setPreferredPaintEngine() function to enforce
1062   usage of the old GL paint engine.
1063
1064 - When mixing OpenGL and QPainter calls you need to surround your
1065   custom OpenGL calls with QPainter::beginNativePainting() and
1066   QPainter::endNativePainting().
1067   This is to ensure that the paint engine flushes any pending drawing and sets
1068   up the GL modelview/projection matrices properly before you can issue custom
1069   OpenGL calls, and to let the paint engine synchronize to the painter state
1070   before resuming regular QPainter based drawing.
1071
1072 - Graphics View has undergone heavy optimization work, and as a result of
1073   this work, the following behavior changes were introduced.
1074
1075   a) QStyleOptionGraphicsItem::exposedRect now contains the item's bounding
1076      rectangle, and QStyleOptionGraphicsItem::matrix is uninitialized by
1077      default. You can enable an exact exposed rectangle and a correct matrix
1078      by enabling the flag QGraphicsItem::ItemUsesExtendedStyleOptions.
1079
1080   b) QStyleOptionGraphicsItem::levelOfDetails is obsoleted and its value is
1081      always initialized to 1. Instead you can call
1082      QStyleOptionGraphicsItem::levelOfDetailFromTransform(const QTransform &)
1083      to determine the level of detail.
1084
1085   c) QGraphicsView no longer calls QGraphicsView::drawItems(), and in turn
1086      QGraphicsScene::drawItems(), by default. You can get the old behavior
1087      back by enabling QGraphicsView::IndirectPainting.
1088
1089   d) QGraphicsItem no longer calls itemChange() for position and
1090      transformation changes. If you want to receive notifications for changes
1091      to the item's position and transformation, you can set the flag
1092      QGraphicsItem::ItemSendsGeometryChanges (which is enabled by default by
1093      QGraphicsWidget and QGraphicsProxyWidget).
1094
1095 - QDesktopWidget on X11 no longer emits the resized(int) signal when screens
1096   are added or removed. This was not done on other platforms. Use the
1097   screenCountChanged signal instead.
1098
1099 - QUrl's parser is more strict when for hostnames in URLs. QUrl now
1100   enforces STD 3 rules:
1101
1102    * each individual hostname section (between dots) must be at most
1103      63 ASCII characters in length;
1104
1105    * only letters, digits, and the hyphen character are allowed in the
1106      ASCII range; letters outside the ASCII range follow the normal
1107      IDN rules
1108
1109   That means QUrl no longer accepts some URLs that were invalid
1110   before, but weren't interpreted as such.
1111
1112 - The Unix configure-time check for STL is stricter now in Qt
1113   4.6. This means some legacy STL implementations may fail to pass
1114   the test and, therefore, Qt will automatically disable STL support.
1115
1116   This is a binary-compatible change: existing code will continue to
1117   work without being recompiled. However, it affects the source code,
1118   since some STL-compatibility API will not be enabled.
1119
1120   Platforms affected by this change:
1121     * solaris-cc-* with the default (Cstd) C++ STL library
1122       recommendation: use -library=stlport4
1123       See Sun Studio's documentation for the effects of this option
1124
1125 - QVariant has now a new implicit constructor that takes a float. This
1126   means that code that assigned a float to a variant would create a
1127   variant with userType QMetaType::Float, instead of QVariant::Double.
1128
1129 - QDataStream will now read and write all floating point numbers with the
1130   same precision, regardless of whether it's streamed into or out from a
1131   float or double. This is to maintain compatibility across platforms with
1132   a different default precision for qreal. The default is 64-bit precision
1133   for all floating point numbers, and this can be changed using the new
1134   function setFloatingPointPrecision(). Set Qt_4_5 as the version of the
1135   QDataStream to get the behavior of previous versions.
1136
1137 - On Mac OS X, QDesktopServices::storageLocation(DataLocation) now includes
1138   QCoreApplication::organizationName() and QCoreApplication::applicationName()
1139   if those are set. This matches the behavior on the other platforms.
1140
1141 - The Animation Framework
1142   * currentTime() now returns the complete current time including previous
1143     loops.
1144   * currentLoopTime() returns the time inside the current loop.
1145   * stateChanged signal sends the new state as first parameter and old state
1146     as the second.
1147   * QAnimationGroup::clearAnimations() has been renamed to clear().
1148   * QAnimationGroup::insertAnimationAt() has been renamed to
1149     insertAnimation().
1150   * QAnimationGroup::takeAnimationAt() has been renamed to takeAnimation().
1151   * QSequentialAnimationGroup::insertPauseAt() has been renamed to
1152     insertPause().
1153   * [QT-941] Avoids timer ticks when there are only pause animations running.
1154
1155- Refactoring in OpenGL examples to improve portability and utilize the
1156  Animation framework for animation.  The hellogl and overpainting examples
1157  now compile on OpenGL/ES 1.1.  Also common code is factored.
1158
1159- Changed QWebFrame::setHtml() and setContent() to not affect the back/forward
1160  and the session history.
1161
1162- qmake no longer adds Qt internal dependencies to the linker when Qt
1163  is built in shared mode (not static). This means that applications
1164  that made use of platform-specific API may need to adjust the LIBS
1165  variable in their .pro files to match:
1166
1167    X11: LIBS += -lX11
1168    Mac: LIBS += -framework AppKit -framework Carbon
1169
1170- QtScript: Behavior changes due to using JavaScriptCore in the back-end:
1171  * QDateTime is no longer used for date parsing and string conversion of
1172    Date objects; instead the (more compliant) date processing from
1173    JavaScriptCore is used.
1174  * RegExp objects are no longer thin wrappers around QRegExp; they are now
1175    "proper" JavaScript RegExp objects.
1176
1177