summaryrefslogtreecommitdiffstats
path: root/dist/changes-4.6.0
blob: 2ebdc7ccef44a1aa4e47d308c5a22ab1a0ab5851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
Qt 4.6 introduces many new features and improvements as well as bugfixes
over the 4.5.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://qt.nokia.com/doc/4.6

The Qt version 4.6 series is binary compatible with the 4.5.x series.
Applications compiled for 4.5 will continue to run with 4.6.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
Tracker, or the Merge Request queue of the public source repository.

Qt Bug Tracker: http://bugreports.qt.nokia.com
Task Tracker: http://qt.nokia.com/developer/task-tracker
Merge Request: http://qt.gitorious.org

****************************************************************************
*                           General                                        *
****************************************************************************

New features
------------

 - QState, QStateMachine
    * New classes for state machine framework added to QtCore.

 - QAbstractAnimation
    * New animation framework added to QtCore

 - QTouchEvent
    * New class for handling multitouch events added to QtGui

 - QGesture, QGestureRecognizer
    * New gesture framework added to QtGui

 - QMatrix4x4, QGenericMatrix, QVector2D, QVector3D, QVector4D, QQuaternion
    * New classes to support 3D applications.

 - QGLShaderProgram, QGLShader
    * New classes for using shader programs written in the GL Shading Language.

 - QGraphicsEffect
    * New classes for applying graphics effects to graphics items and widgets.

 - QWebElement
    * New class for DOM access added to QtWebKit

 - QAudioInput, QAudioOutput
    * New audio input and output classes.

 - QAbstractVideoSurface, QVideoFrame
    * New abstract video output classes.

 - OpenVG graphics system added.

 - Added 800x480 screen mode to qvfb configuration dialog.

 - Improved support for input methods in graphics view.

 - [MR#1742] Added new multimedia keys to the Qt::Key enum.

 - Boxes demo ported to use new 3D math and shader program classes.

 - QtTest now supports outputting XUnit XML documents, for integrating
   with existing continuous integration systems. This is enabled by
   running the test program with the -xunitxml option.

 - QtDBus
   * The minimum required version of the D-Bus reference library is
     now 0.93.
   * Support for reading and writing of custom property types added.
   * Support for getting return arguments in remote method invocation
     via QMetaMethod::invokeMethod.

 - The QtScript module is now based on the 3rdparty JavaScriptCore library. It
   is only available under the LGPL or a compatible license.

Optimizations
-------------

 - Optimized rendering strategy in QGraphicsView
    * See list of Important Behavior Changes below

 - Improved delivery of posted events on Windows


****************************************************************************
*                          Library                                         *
****************************************************************************

QtCore
------
 - QAbstractItemModel
    * [MR#972] Added API to move items
    * [MR#1072] Added function beginResetModel() / endResetModel()


 - QByteArray
    * New overloads for QByteArray::insert() and QByteArray::prepend().
    * [MR#1286] Added value_type typedef for STL compatibility

 - QEventDispatcherGlib (internal class)
    * Fix a regression introduced in 4.5.3 that would cause timers to not
      be delivered.

 - QEventDispatcherUNIX (internal class)
    * Improve detection of monotonic clock support to include
      non-POSIX.1-2001 compliant systems.
    * [250681] Fix time change detection on UNIX systems without monotonic
      timers.

 - QEventDispatcherWin32 (internal class)
    * Changed the threshold for using multimedia timers to 20ms (was 10ms).
    * Changed the way Qt's posted events are sent by the event
      dispatcher. They are now driven on top of a Windows message
      instead of an explicit call in processEvents(). This means that
      posted events are sent even when a Windows modal message loop is
      running (for example, when the user is moving a window or when a
      native modal dialog is visible).
    * Fixed a bug that would allow the same timer id to be used by multiple
      QTimer instances.

 - QFile
    * Make QFile::resize() more robust when operating on buffered files.

 - QObject
    * [259514] fixed a possible dead-lock in the destructor.
    * Added the possibility to pass the flag Qt::UniqueConnection to
      QObject::connect.
    * Fixed race conditions that occured when moving object to threads
      while connecting.

 - QPluginLoader
    * Improved performance of plugin loading by reusing the plugin cache
      instead of loading it every time.

 - QProcessEnvironment
    * New class; support for easy access to key/value pairs in the process
      environment.

 - QRegExp
    * New pattern syntax "QRegExp::WildcardUnix" with wildcard character
      escaping.

 - QScopedPointer
    * New pointer class for cleaning up objects when leaving the current
      scope.

 - QSharedPointer
    * Added support for creating the object along with the internal private
      data in one single memory allocation. (QSharedPointer::create)
    * Fixed a bug where, in a race condition, QSharedPointer could track a
      pointer that was being deleted.

 - QTextCodec
    * Instantiate the CP949 codec when building with -no-iconv.

 - QTextStream
    * [221316] Fixed crash on large input.
    * Improved reading utf8/utf16/utf32 data by correctly skipping the
      ByteOrderMark when reading data by one character at a time.

 - QThread
    * [249997] Document that QThread priority has no effect on Linux.

 - QUrl
    * Made QUrl hostname parser a lot stricter, requiring compliance
      to STD3 to validate, thus preventing invalid hostnames from
      being accepted. See below in "Important Behavior Changes".

 - QUuid
    * [QTBUG-3543] Fixed a bug in createUuid() which caused multiple
      threads to generate the identical UUID sequences.

 - QVariant
    * Many optimisations.
    * Added QVariant::toFloat() and QVariant::toReal().
    * Added QVariant(float) constructor.
    * qvariant_cast<QVariant> and QVariant::fromValue<QVariant> are now
      identity functions.
    * Added support for math3d types.

 - QWeakPointer
    * Added support for tracking QObject-derived classes that aren't
      attached to a QSharedPointer.
    * Added QWeakPointer::data which allows you to obtain the pointer
      being tracked (without protection).
    * Added operator-> like the above data(), but requires a #define.

 - QXmlStreamWriter
    * [256468] Fixed comment indentation.

QtGui
-----

 - Qt::escape
    * Now escape the double quote (&quot;).

 - QAbstractItemView
    * [256502] Fixes selectionModel::hasSelection return value after
      model::reset.
    * [MR#1426] Fixes some issues with Shift-selection
    * [MR#1668] New QAbstractItemView::setDefaultDropAction

 - QApplication
    * [QTBUG-739] Removed internal widgets from QApplication::topLevelWidgets().

 - QCalendarWidget
    * [252943] QCalendarWidget::setDateTextFormat() reset the format if the
      date is invalid.

 - QColumnView
    * [246999] Fixed view not updating when the model changed dynamically.

 - QComboBox
    * [220195] Fixed keyboard search when current index is -1.

 - QCompleter
    * [246056] Fixed a possible assertion when setting the completer prefix.

 - QEvent
    * Introduced RequestSoftwareInputPanel and CloseSoftwareInputPanel events.

 - QFontDialog
    * [256466] Fixed the dialog not always returning the selected style.

 - QFontEngine
    * [QTBUG-2354] Support certain 'Microsoft' platform symbol fonts which
      also contain a regular unicode table for exactly the symbol range of
      code points.

 - QFontEngineQPF
    * Make alphaMapForGlyph() generate the correct color table for
      Indexed8 and Mono glyph images.  Fixed the "all glyphs are white
      boxes" problem in OpenGL1 paint engine.

 - QFontMetrics
    * [176401] Account for right bearing in bounding rect.

 - QGraphicsAnchorLayout
    * Support for expanding size policy has been removed. (The Qt 4.6 Beta
      had support for it).

 - QGraphicsBlurEffect
    * Since the 4.6 Beta, Qt::RenderHint has been moved to
      QGraphicsBlurEffect::BlurHint.
    * Input contexts are not activated for disabled widgets anymore.
    * [250555] Data copied from Mozilla Firefox can now be pasted correctly to
      a Qt application.

 - QGraphicsItem
    * Many optimizations.
    * Fixed bug and improved accuracy of QGraphicsItem::childrenBoundingRect().
    * Introduced QGraphicsItem::ItemHasNoContents.
    * Introduced QGraphicsItem::ItemSendsGeometryChanges (see Behavioral
      Changes).
    * Introduced QGraphicsItem::focusProxy(), focus proxy support.
    * Introduced QGraphicsItem::ItemNegativeZStacksBehindParent.
    * Introduced QGraphicsItem::ItemIsPanel, light-weight window support.
    * Introduced modality support for QGraphicsItem panels.
    * Introduced activation support.
    * Introduced QGraphicsItem::stackBefore().
    * Cached items are now always invalidated when update() is called.
    * Added input hints.
    * Added a new set of properties to set a transformation on an item.

 - QGraphicsLayout
    * Introduced QGraphicsLayout::addChildLayoutItem().

 - QGraphicsObject
    * New class; inherits QGraphicsItem and adds notification signals and
      property declarations.

 - QGraphicsProxyWidget
    * [251407] Fixed window flag handling. Now QGraphicsProxyWidget's flags
      win.
    * Fix Qt::ClickFocus policy.

 - QGraphicsScene
    * Many optimizations.
    * [245317] Fixes to mouse grabbing behavior.
    * Fixed delivery of double-click events after explicit grab and then ungrab.
    * Rewrote the internal rendering to use a recursive instead of an iterative
      approach.
    * Ensure hover enter events are delivered when an item is pressed.
    * Introduced activation support.
    * Fixed bugs in initial focus support.

 - QGraphicsTextItem
    * Now inherits from QGraphicsObject instead.

 - QGraphicsTransform
    * New class; eases animation of transformations for QGraphicsItem.

 - QGraphicsView
    * Many optimizations.
    * Fix mapToScene(QRect) to avoid extra unnecessary adjustments.
    * Introduced QGraphicsView::isTransformed().
    * [QTBUG-4151] Items with parent that sets ItemClipsChildrenToShape were
      sometimes invisible.

 - QGraphicsWidget
    * Now inherits from QGraphicsObject instead.
    * Interactive resizing of top level windows now respects height-for-width
      constraints.
    * Reduced memory footprint.

 - QHeaderView
    * [208320] Make sure the sort indicator is taken into account for the size
      hint.
    * [255574] Make sure the size hint for the section depends on visible
      sections.

 - QImageReader
    * [255627] Fix floating point exception in
      QImageReader::setScaledSize(QSize(0, 0)).

 - QLineEdit
    * [248948] Clear selection when redoing a delete operation.
    * [QTBUG-5261] Fixed bug where erasing characters from a textedit did not
      update the text.

 - QListView
    * [243335] Fixed the visualRect to return correct values when the widget is
      not yet shown.
    * [MR#666] Fixed selection with Shift-Arrow/Shift-Click in QListView's IconMode

 - QMainWindow
    * [226060] Adding actions to a toolbar would always make the next toolbar
      move.

 - QMenu
    * [252610] Fixed position of the shortcut text while setting a stylesheet
      on menu items

 - QMenuBar
    * [260873] Fix mouse interaction while undocking a widget from the main
      window
    * Dock areas didn't get a splitter if their dock widgets were not
      resizable.

 - QPaintDevice
    * New qt_paint_device_metric() function to replace the friend declarations
      for window surface classes that need to access metric().

 - QPainter
    * [QTBUG-1666] Made QPainter::drawText() respect Qt::TextDontClip flag
      also in vertical direction.
    * [254658] Improved clipping performance in OpenGL paint engine.

 - QPainterPath
    * [QTBUG-1537] Fixed bug where the points of a rounded rectangle were added
      in counter-clockwise order instead of clockwise order like other shapes.

 - QPen
    * [QTBUG-2738] Made QPen::setDashOffset() work with non-custom dashed lines.

 - QPixmap
    * Optimized width(), height(), isNull() and depth().
    * [QTBUG-2832] Fixed bug where calling fill on pixmap with active painter
      could crash.

 - QPlainTextEdit
    * Fixed crash when clicking on a text edit which was smaller than the
      height of the font used.

 - QPlastiqueStyle
    * [QTBUG-3555] Fixed a bug in the Plastique style that would cause an
      ASSERT failure in QFont when the application font has a pixel size set.

 - QPrinter
    * [QTBUG-4497] Removed redundant SetPen command in the postscript code when
      reusing a QPrinter object.

 - QPrintPreviewDialog now uses a QMainWindow with a proper QToolBar, instead
   of a plain layout.

 - QPushButton
    * [255581] Fixed sizeHint recalculation bug.

 - QRasterPaintEngine
    * [QTBUG-4210] Fixed bug where bitmaps were painted black instead of in pen
      colour.

 - QRegion
    * Minor optimizations.

 - QSortFilterProxyModel
    * [251296] Fixed bugs in which filtered items could not be filtered.

 - QSplitter
    * [206494] Added ability to style pressed slider with stylesheet.

 - QSpinBox
    * [259226] Fixed setting a stylesheet on a QSpinBox to change the arrow
      position.
    * [255051] Fixed sizeHint update bug.

 - QStandardItemModel
    * [255652] Fixed crash while using takeRow with a QSortFilterProxyModel.

 - QStroker
    * [QTBUG-5212] Fixed bug where thick strokes around small shapes could
      cause holes in the stroke.

 - QTabBar
    * [196326] Fixed having a stylesheet on a QTabBar resulted in some tab
      names being slightly clipped.
    * [241383] Added ability to style the close tab button with style sheet

 - QTableView
    * [191545] Selections work more similarly to well-known spreadsheets.
    * [234926] Fixed sorting after changing QTableView header.
    * [244651] [245327] [250193] [QTBUG-5062] Spans get plenty of love with
      performance improvements, support for row/column insertioa and removal,
      and better keyboard navigation.

 - QTableWidget
    * [234641] Fixed takeItem to cause the view to be updated.

 - QTextDocument
    * [207189] Support setting font size using short hand syntax in the
      CSS "font" property.
    * [201228] Remove implicit margin on bullet lists when exporting to HTML.
    * [240086] Fixed bug which caused floating objects which span several
      pages to float into the second page of the document even when it's
      the only existing object, causing the document to contain a blank
      first page.
    * [240325] Even with wrap mode set to Qt::TextWordWrap, the layout
      would sometimes break outside word boundaries when floating objects
      affected the width available to the text.
    * [MR#681] Added support for roman numbering for lists
    * [MR#1753] Fixed escaping HTML attributes QTextDocument::toHtml()


 - QTextLayout
    * [QTBUG-4468] Count tabs as multiple characters when applying a fixed
      column width.
    * [176401] Take into account the negative right bearing of the last
      character in an item of text if the glyph extends beyond its ascent.

 - QToolTip
    * Fixed a bug where tooltips were not shown in popups (Windows only).

 - QTreeView
    * [234930] Be able to use :has-children and :has-sibillings in a stylesheet.
    * [252616] Set QStyleOptionViewItemV4::OnlyOne flag when painting spanning
      columns.
    * [245654] Fixed expandAll when deleting and recreating a mode for the tree.
    * [239271] Fixed missing update when adding a row when the first column is
      hidden.
    * [258225] Fixed scrollTo with center and bottom.

 - QTreeWidget
    * [253109] Shows the widget when calling setItemWidget.
    * [MR#1393] Use stable sorting.

 - QWidget
    * Added inputMethodHints property.
    * [201649] Added QWidget::previousInFocusChain.
    * [254563] Fixed a crash when setting focus in a widget tree that
      contains invisible widgets.
    * [QTBUG-5012] Fixed uninitialized background when using QWidget::render
      with Qt::WA_NoSystemBackground and window opacity set.

QtDBus
------

 - QDBusConnection
    * Made sending of invalid/incomplete messages consistently fail with error
      (no more assertions).
    * [249528/QTBUG-3833] Added an overload of connect() that allows one to
      specify strings for matching arguments.

 - QDBusServiceWatcher
    * New class; supports efficiently watching for a service to be created,
      deleted or to change owners.

QtNetwork
---------

 - QAbstractSocket
    * Only disconnect from host when all bytes have been written.
    * New setSocketOption method.

 - QHttp
    * Do not buffer the complete POST data anymore when HTTPS is used.
    * QHttp is now obsolete and replaced by QNetworkAccessManager.

 - QLocalServer
    * Fix timeout when waiting for a connection on Unix.

 - QNativeSocketEngine
    * Do not set the OS socket send and receive buffer size. The OS
      should auto tune these values for us.

 - QNetworkAcessManager
    * [242916] Add possibility to send HTTP DELETE requests.
    * Connection count per HTTP server increased to 6 on Desktop, 3 on Symbian.
    * Optional HTTP pipelining support.
    * General HTTP performance improvements.

 - QNetworkReply
    * [257322] Add possibility to ignore specific SSL errors.
    * New isFinished() method.

 - QSslCertificate
    * [251830] Fix version() and serialNumber() methods.

 - QSslSocket
    * [257322] Add possibility to ignore specific SSL errors.
    * Fix build with openssl 1.0.0 betas.
    * Trigger a SSL transmission when reading from the socket. In certain
      cases the connection stalled when a buffer limit was used.

QtOpenGL
--------

 - QGLColormap
    * setEntry() was inserting entries instead of replacing them.
    * Clarified documentation for isEmpty().

 - QGLContext
    * Fix RGB565 mode in bindTexture().
    * Map mipmaps work on OpenGL/ES 2.0 systems in bindTexture().
    * Improve performance of QGLContext::currentContext().

 - QGLFormat
    * Increase unit test coverage and fix some long-standing issues.
    * Improve performance of code that tests QGLFormat options.
    * operator==() now tests for equality on all fields.

 - QGLFramebufferObject
    * Add support for the ARB_framebuffer_object, OES_framebuffer_object,
      and OES_packed_depth_stencil extensions.
    * Unbind the texture after it is initialized.
    * Don't destroy the texture target on cleanup if one wasn't created.

 - QGLFramebufferObjectFormat
    * New class for controlling fbo options.

 - Improvements to context sharing and object cleanup logic.

 - QGLGradientCache
   * [249919] Clean up the gradient cache in the right context.

 - OpenGL (ES) 2.0 Paint Engine
    * Re-written the OpenGL (ES) 2.0 Paint Engine's shader manager to use new
      shader API and to allow custom code from E.g. Pixmap Filters to be
      instered into the fragment "pipeline".
    * Fixed conical gradients.

 - Added a static function, QGL::setPreferredPaintEngine(), to allow users
   to set the preferred GL paint engine.

 - Cleaned up usage of OpenGL extensions. QtOpenGL now uses the OpenGL 2.0
   names of methods rather than using the EXT postfix. However, when resolving
   extensions, QtOpenGL will also try postfixing EXT if the OpenGL 2.0 name is
   not found.

 - Fix QGLWidget::showFullscreen() on EGL platforms.

 - Added lots of OpenGL autotests.

QtScript
--------

 - Many optimizations.
 - Improved ECMA script compliance.
 - New method, QScriptString::toArrayIndex(), for converting QScriptString
   to a QtScript array index.

QtSql
-----

 - [QTBUG-3162] Views for Sql table models should not reset state on failed
   queries.
 - [QTBUG-5251] Fix retrieval of SQL 'TIME' information for PostgreSQL.
 - Better error checking in case of failed query.
 - [QTBUG-5179] Fixed floating point number truncation in qsqlpsql plugin.
 - [QTBUG-551] Fixed Oracle batchExec using strings as out params.
 - Updated sqlite to 3.6.19 + readded our patches.
 - [QTBUG-3736] ODBC: Retrieved in ascii, should be stored in ascii.
 - Fixed issue with multiple lookups to same table/field in
   QSqlRelationalTableModel.
 - Updated documentation of setForwardOnly.
 - [QT-754] TDS: Fixed improper formatting of date values.
 - TDS: Fixed missing field/table name escaping.
 - ODBC: Fixed setForwardOnly not being reset on when the query is reset.
 - [QTBUG-4510] Add reconnection option to the mysql driver.
 - [222678] Fixed QSqlTableModel: trying to delete the wrong row.
 - Interbase: Fixed crash when calling numRows on unknown query type.
 - DB2: Don't return an error when the table is just empty.
 - [17327] Added OCI support for synonyms to tables created by another user.
 - [176267] Fixed mysql driver not knowing the difference between tables and
   views.
 - Fixed determination of end of ODBC string on deficient drivers.
 - Added ability to open sqlite databases readonly.
 - Fixed race condition on reopening an ODBC connection.
 - Fixed invalid use of statics in the defaultCasing code.
 - Fixed proper quoting under odbc.
 - [252450 & 246125] Fixed failed queries due to MySql driver auto-preparing.
 - QSqlDatabase now has a database level precisionPolicy. Queries now default
   to this.
 - Add proper iODBC linking support.

QtSvg
-----

 - QSvgHandler
   * [245602] [204686] Fixed gradient and solid-color referencing.
   * [202426] Made attribute inheritance work with 'use' tags.
   * [250618] Fixed gradient on strokes.
   * [254040] Added support for 'vector-effect'.

 - QSvgPaintEngine
   * [257052] Changed drawImage() to ignore aspect ratio.

QtWebKit
--------

 - Many bug fixes.

 - QWebElement
   * New class; introduced to implement DOM like operations on a web page.

 - QWebFrame
   * New properties for an URL and a focus management.
   * New signals delivering current loading status.

 - QWebInspector
   * New class for embedding the WebInspector as a QWidget

 - QWebHistory
   * Streaming operators for saving and restoring QWebHistory's state.

 - QWebPage
   * New property; preferredContentsSize for setting layout of the page in the
     viewport.
   * New slot; shouldInterruptJavaScript, called when JavaScript program is
     running too long.

 - QWebSecurityOrigin:
   * New functions for defining local URL schemes.

 - QWebSettings
   * New options for text encoding and off-line web application cache (HTML5).

 - QWebView
   * Support for render hints.

QtXml
-----

 - QDomDocument
    * Set the codec to UTF-8 if codec not present or unknown.

QtXmlPatterns
-------------

 - QXmlQuery
    * [245219] Added QXmlQuery::setFocus(const QString &focus).

Qt Plugins
----------

 - Tiff plugin
    * [258526] Rotate the image if the tiff file contains an orientation tag.
    * [254317] Add support for mono and indexed format

Third party components
----------------------

 - Updated FreeType to version 2.3.9.

 - Updated harfbuzz to the latest version from fd.org.

 - Updated sqlite to version 3.6.19.

 - Updated libpng to version 1.2.40


****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************

 - Added support for the Symbian platform with integration for the S60
   framework.

 - Added community supported Qt ports for QNX and VxWorks. See platform
   notes in the Qt documentation for details.

 - Improved support for AIX using IBM's Visual Age C/C++ compiler
   version 7 (xlC).

 - Improved support for Solaris using Sun Studio 12 (CC 5.9).

Qt for Unix (X11 and Mac OS X)
------------------------------

 - Added support for thread-safe FD_CLOEXEC file-descriptor creation
   where supported by the operating system (currently only Linux).

 - Ensured that system calls where EINTR is a possible result are
   properly restarted.

Qt for Linux/X11
----------------

 - KDE Integration: Improved the integration into KDE desktop (loading of KDE
   palette, usage of KColorDialog and KFileDialog) using the GuiPlatformPlugin

 - Fixed pasting the clipboard content to non-Qt application on X11 when the
   requested format is image/ppm.

 - On X11, Qt now supports the _NET_WM_SYNC protocol.

 - On X11, Qt now supports the SAVE_TARGET protocol that allows to keep
   clipboard contents if the application that owns the clipboards exits

 - [QTBUG-4652] On X11, clipboard content can be properly retrieved even when
   an application asks for the unsupported target. This fixes copying and
   pasting data when using Synergy.

 - [MR#797] Fixed a crash when using QX11EmbedContainer/Widget on x86_64.

 - [MR#1111] Emit workAreaResized when _NET_WORKAREA is changed on X11.

 - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
   it was unreadable when printed or presented in a print preview widget.

 - Improved EGL integration on X11 (including better visual selection).

 - Made Qt::WA_TranslucentBackground work in combination with native
   child widgets.

 - Support Qt::WA_TranslucentBackground on top-level QGLWidgets on X11, both
   (EGL & glX). This allows OpenGL (& ES) rendering to semi-transparent widgets
   if a compositing window manager is running.

 - Support OpenGL texture_from_pixmap extension on X11 (EGL & glX) when
   calling QPainter::drawPixmap() with the OpenGL paint engine, or calling
   QGLContext::bindTexture() on an X11 QPixmap. If the
   GLX_EXT_texture_from_pixmap or EGL_NOKIA_texture_from_pixmap extensions are
   present, Qt will attempt to use glXBindTexImageEXT or eglBindTexImage to
   bind the pixmap to a texture, rather than copying the pixel data.

 - Add new experimental QX11GLPixmapData backend for QPixmap. This pixmap
   backend uses regular X11 pixmaps to store the image data, however it uses
   OpenGL to render into them.

 - Tablet: Disable event compression of events of type QTabletEvent when the
   current event is accepted by the receiver.

 - [QTBUG-4242] Fixed a bug that allowed the user to close a window
   event though the program is using the QEventLoop::ExcludeUserInputEvents
   flag.

 - [255559] Fixed generation of XdndLeave events to include the correct
   source id.

 - [258319] Avoid division by zero on some Xlib/Xserver implementations.

 - Fixed the default QWidget size on X servers with Xinerama to give widgets
   a default size that should fit on a single screen.

 - Support _NET_WORKAREA on X servers with Xinerama (previously this property
   was ignored).

Qt for Windows
--------------

 - Significant external contribution from Milan Burda for planned removal
   of (non-unicode) Windows 9x/ME support.

 - QRegion is no longer a GDI object by default. This means it is no
   longer subject to gui-thread only nor does it potentially impact
   the 10.000 GDI object limit per process. By explicitly calling
   .handle() a GDI object will be created and memory managed by
   QRegion. The native handle is for reading out only. Any GDI calls
   made on the HRGN handle will not affect the QRegion.

 - The reading code of QLocalSocket on Windows has been rewritten to improve
   reading performance.

 - On Windows when a file cannot be accessed (stat()ed), we are now restoring
   the error mode to the original value.

 - [259221] QFileInfo::symLinkTarget() now supports NTFS symbolic links
   thanks to Konstantin Ritt (merge request 1217).
 - [251554] Fixed openUrl("mailto:") with Thunderbird on Windows.
 - [254501] QDestopServices now supports cyrillic file names.
 - Fixed an issue which prevents moving fixed size windows using titlebar.
 - [258087] Fixed an issue on Vista which returns incorrect file paths when
   using QFileDialog::getOpenFileNames()
 - [253763] Fixed a focus issue when using out-of-process ActiveQt controls.
 - [255912] Mouse move events will not be delivered to a blocked widget.
 - [225588] Enabled IME reconversion support.

 - Phonon on Windows
   * Now much more reliable when reading a file through a QIODevice.
   * If Video Mixing Renderer 9 is not available, falls back to software
     rendering.
   * Fixed a flicker issue when switching source with a transition time of 0.

 - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
   text where several characters were represented by a single glyph, e.g.
   a double 't' with the Calibri font.

 - Added QSysInfo::WV_WINDOWS7 and QSysInfo::WV_6_1.

 - Changed QPrintDialog under Windows to use PrintDlgEx, instead of the old
   deprecated PrintDlg call.

Qt for Mac OS X
---------------

 - General changes on Mac OS X:
   * Mac OS X version support: Support for 10.3(Panther) has been dropped and
     support for 10.6(Snow Leopard) has been added.
   * The Cocoa port now supports static linking.
   * The Cocoa port now supports the Qt3Support library (with the exception of
     Q3FileDialog) to ease the transition from Carbon to Cocoa.
   * The Cocoa binary packages are now Intel only (universal i386 and x86_64).
   * Snow Leopard notes:
     - Gcc 4.2 is used by default. Configure with -platform macx-g++40 to
       select 4.0.
     - Using the 10.4u SDK requires gcc 4.0.
     - Configuring for the Cocoa port (-cocoa) produces 64-bit binaries by
       default. Use the -arch flags to override.
     - Building for ppc64 is no longer supported by the gcc tool chain.
     - Building for ppc is still supported.
   * Added support for GetURL events on Mac OS X.

 - General bug fixes:
   * [123740] Fixed an issue with dead keys on Mac (cocoa) on French keyboard
     layout.
   * [258438] Enabled Emacs style keyboard shortcuts.
   * [QTBUG-4418] Fixed maximizing and restoring a window.

 - Cocoa bug fixes:
   * [252088] Drag Leave events will be delivered correctly on Cocoa.
   * [257661] Cocoa now uses the correct line ending for clipboard plain text.
   * [258173] Fixed an issue which caused "whatsthis" pointer to flicker.
   * Fixed some warnings that might get printed when reparenting QGLWidget.
   * Fixed stacking order of modal dialogs so that they never rearrange level,
     or hide in the background.
   * Fixed problem with plugins written with Qt that closes down the native
     application when hiding a modal dialog.
   * Fixed problem that native applications cannot quit when using plugins
     written with Qt from a native application.
   * Fixed problem that the menubar is not restored correctly when using
     plugins written with Qt from a native application.
   * The event dispatcher now integrates better with native applications that
     spin the event loop themselves.
   * Using Qt::AA_MacPluginApplication will now disable the use of native
     menubars on Mac.
   * Sliders and scroll views in Qt now use pixel scrolling for mouse devices
     that support this.
   * Wheel events can now contain a delta with a value as low as 1 for mouse
     devices that use pixel scrolling.

Qt for Embedded Linux
---------------------

 - Added QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL and
   QMAKE_LIBS_OPENGL_ES2 qmake variables for specifying OpenGL ES
   specific libraries.

 - Compilation fixes for OpenGL/ES 1.0 and OpenGL/ES 1.1 Common Lite.

 - Phonon on Windows
   * Now much more reliable when reading a file through a QIODevice.
   * If Video Mixing Renderer 9 is not available, falls back to software
     rendering.
   * Fixed a flicker issue when switching source with a transition time of 0

 - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
   it was unreadable when printed or presented in a print preview widget.

 - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
   text where several characters were represented by a single glyph, e.g.
   a double 't' with the Calibri font.

 - EGL and OpenGL/ES
   * Protect the use of version-specific EGL symbols with #ifdef's.
   * Make sure an EGL context is current when resolving GL extensions.
   * Introduce "lazyDoneCurrent" for optimizing context switching in
     paint engines.
   * Separate EGLSurface from QEglContext so that the same context can
     be used with multiple surfaces.
   * Move common functions from system-specific files to qgl_egl.cpp.
   * Fix a memory leak of EGLSurface's in QGLContext.
   * Fix detection of pbuffers on OpenGL/ES systems.
   * EGL_SAMPLES was being set to the wrong value for multisampled surfaces.

 - PowerVR
   * Make the code better at detecting MBX vs SGX header files.
   * Fix 32-bit screen support - some code was still assuming 16-bit.
   * Stop GL window surfaces double-flushing their contents.
   * Remove surface holder, which never worked all that well.
   * Implement screen rotations.

 - Mouse and keyboard drivers
   * Removed obsolete drivers (vr41xx, yopy, sl5000, bus mouse).
   * Added a new LinuxInput driver for both mouse and keyboard.
   * Added keymap support for QWS via standard Linux .kmap files.
     (complete with dead-keys, compose-key and LED handling).

 - Remove obsolete OpenGL/ES screen drivers: hybrid, ahigl.

 - Send enter/leave events also to child widgets.

 - Fix crash when instantiating multiple QApplications.

 - Optimize software cursor by using native image format instead of 8-bit.

 - [255828] Avoid window decoration flicker on show.

 - [255495] Fix blend function crash on AVR32.

 - Fix qconfig configurations.

 - Add powerpc mkspec and remove "empty" ppc mkspec .

DirectFB
--------

 - When running Qt/DirectFB the DirectFB window id of a top level QWidget can
   be queried using property("_q_DirectFBWindowID")

 - Allow setting the background color of the primary layer in DirectFB with
   connect options. QWS_DISPLAY=directfb:bgcolor=red or
   QWS_DISPLAY=directfb:bgcolor=\#aabbccdd

 - Add support for rendering mouse cursor using a top level window when cursor
   support is not working in IDirectFBDisplayLayer. Define
   QT_DIRECTFB_WINDOW_AS_CURSOR to enable.

 - Add experimental support for optimized locking/unlocking of surfaces. Enable
   by defining QT_DIRECTFB_SUBSURFACE.

 - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a
   proxy screen. Don't make QDirectFBScreen::instance() assume that
   QScreen::instance() is a QDirectFBScreen.

 - Optimize move/resize operations with DirectFB. With a properly configured
   DirectFB these operations are handled for us and we don't need to force a
   repaint of the window.

 - Support top level window opacity in DirectFB

 - Fix a bug when loading RGB32 images that would lead to rendering issues.

 - Fix a bug when painting with invalid pens/brushes.

 - Fix a bug that would show up when QWidget::scroll is called.

 - Implement support for loading pixmaps using IDirectFBImageProvider.

 - Disable color table support by default. This seems to work incorrectly on
   most boards and loading these images will generally require an image
   conversion anyway.

 - Fix a crash when resizing windows.

 - Compile with versions < 1.0. We still recommend using newer versions.

 - Considerable code cleanup

 - Various optimizations regarding painting, loading of images and creation of
   surfaces.

 - Allow forcibly falling back to raster engine for painting operations by
   exporting QT_DIRECTFB_FORCE_RASTER=1

 - Reenable support for RGB32 primary surface.


Qt for Windows CE
-----------------

 - On Windows CE the link time code generation has been disabled by default to
   be consistent with win32-msvc200x.
 - The default button size has been reduced in the Windows mobile style.
 - [QTBUG-3613] QWizard issues have been fixed on Windows mobile.
 - [254673] Restoring minimized widgets fixed for Windows mobile and
   Windows CE.
 - [255242] Seeking within large files (bigger than 0x80000000 bytes) fixed
   on Windows CE.
 - [257352] When configuring Qt for Windows CE, configure points the user to
   setcepaths, when its done.
 - [259850] Added a makespec template for Windows CE 6.
 - Fixed the hardcoded GL library names for Windows CE.

****************************************************************************
*                          Tools                                           *
****************************************************************************

 - Designer
   * [233683] Promoted Widgets are now stored correctly in scratchpad.
   * [249823] Added search functionality to the resource browser.
   * [254282] Enabled the use of promoted widgets in form templates.
   * [254824] Made it possible to override the createAction()/createWidget()
     functions of QUiLoader.
   * [256332] Enabled deleting all pages of a QTabWidget or QStackedWidget.
   * [259238] Fixed menubar/menu editing in right-to-left mode.
   * [259918] Fixed setting of object names for container pages not to use
     localized strings.
   * [260658] Fixed saving of alpha values set in the palette editor.
   * It is now possible to further specify the kind of custom widget string
     properties using XML tags.

 - uic
   * [260784] Generated code for retranslateUi doesn't cause compiler warnings
     anymore.

 - uic3
   * [128859] Fixed code generation of QLabel's wordWrap property.

 - qdoc3
   * Changed qdoc3 binary to be in bin/ instead of a platform specific location.

 - Linguist
   * Linguist GUI: Experimental support for editing multi-length strings.
   * lupdate is now again the only tool which can parse program code.
   * lupdate
     - Actually guess the target language from the file name.
     - Make -{source,target}-language actually override values from files.
     - C++ parser
       * Properly support "using namespace", etc.
       * Remove the obsolete TRANSLATOR hack relating to "using namespace".
       * Support attaching meta data to translatable message.
       * Actually use the argument of Q_DECLARE_TR_FUNCTION.
       * Optimization.
       * Bug fixes and robustness improvements.
   * lrelease
     - Add -markuntranslated <prefix> option.
   * Both lupdate & lrelease
     - Accuracy improvements of the qmake .pro file parser.
     - Support for ID-based translations. Somewhat experimental.
   * lconvert
     - Add --sort-contexts option.
     - Add --locations option (complementing lupdate).
     - Add --no-ui-lines option (complementing lupdate).


****************************************************************************
* Important Behavior Changes *
****************************************************************************

 - The experimental Direct3D paint engine has been removed. The reason for
   this is that Nokia focuses on OpenGL for desktop hardware accelerated
   rendering.

 - The default engine used to draw onto OpenGL buffers has changed in
   Qt 4.6. The QPaintEngine::OpenGL2 engine is now used as the default
   engine. This *may* cause compatibility problems for applications
   that use a mix of QPainter and native OpenGL calls to draw into a GL
   buffer. Use the QGL::setPreferredPaintEngine() function to enforce
   usage of the old GL paint engine.

 - When mixing OpenGL and QPainter calls you need to surround your
   custom OpenGL calls with QPainter::beginNativePainting() and
   QPainter::endNativePainting().
   This is to ensure that the paint engine flushes any pending drawing and sets
   up the GL modelview/projection matrices properly before you can issue custom
   OpenGL calls, and to let the paint engine synchronize to the painter state
   before resuming regular QPainter based drawing.

 - Graphics View has undergone heavy optimization work, and as a result of
   this work, the following behavior changes were introduced.

   a) QStyleOptionGraphicsItem::exposedRect now contains the item's bounding
      rectangle, and QStyleOptionGraphicsItem::matrix is uninitialized by
      default. You can enable an exact exposed rectangle and a correct matrix
      by enabling the flag QGraphicsItem::ItemUsesExtendedStyleOptions.

   b) QStyleOptionGraphicsItem::levelOfDetails is obsoleted and its value is
      always initialized to 1. Instead you can call
      QStyleOptionGraphicsItem::levelOfDetailFromTransform(const QTransform &)
      to determine the level of detail.

   c) QGraphicsView no longer calls QGraphicsView::drawItems(), and in turn
      QGraphicsScene::drawItems(), by default. You can get the old behavior
      back by enabling QGraphicsView::IndirectPainting.

   d) QGraphicsItem no longer calls itemChange() for position and
      transformation changes. If you want to receive notifications for changes
      to the item's position and transformation, you can set the flag
      QGraphicsItem::ItemSendsGeometryChanges (which is enabled by default by
      QGraphicsWidget and QGraphicsProxyWidget).

 - QDesktopWidget on X11 no longer emits the resized(int) signal when screens
   are added or removed. This was not done on other platforms. Use the
   screenCountChanged signal instead.

 - QUrl's parser is more strict when for hostnames in URLs. QUrl now
   enforces STD 3 rules:

    * each individual hostname section (between dots) must be at most
      63 ASCII characters in length;

    * only letters, digits, and the hyphen character are allowed in the
      ASCII range; letters outside the ASCII range follow the normal
      IDN rules

   That means QUrl no longer accepts some URLs that were invalid
   before, but weren't interpreted as such.

 - The Unix configure-time check for STL is stricter now in Qt
   4.6. This means some legacy STL implementations may fail to pass
   the test and, therefore, Qt will automatically disable STL support.

   This is a binary-compatible change: existing code will continue to
   work without being recompiled. However, it affects the source code,
   since some STL-compatibility API will not be enabled.

   Platforms affected by this change:
     * solaris-cc-* with the default (Cstd) C++ STL library
       recommendation: use -library=stlport4
       See Sun Studio's documentation for the effects of this option

 - QVariant has now a new implicit constructor that takes a float. This
   means that code that assigned a float to a variant would create a
   variant with userType QMetaType::Float, instead of QVariant::Double.

 - QDataStream will now read and write all floating point numbers with the
   same precision, regardless of whether it's streamed into or out from a
   float or double. This is to maintain compatibility across platforms with
   a different default precision for qreal. The default is 64-bit precision
   for all floating point numbers, and this can be changed using the new
   function setFloatingPointPrecision(). Set Qt_4_5 as the version of the
   QDataStream to get the behavior of previous versions.

 - On Mac OS X, QDesktopServices::storageLocation(DataLocation) now includes
   QCoreApplication::organizationName() and QCoreApplication::applicationName()
   if those are set. This matches the behavior on the other platforms.

 - The Animation Framework
   * currentTime() now returns the complete current time including previous
     loops.
   * currentLoopTime() returns the time inside the current loop.
   * stateChanged signal sends the new state as first parameter and old state
     as the second.
   * QAnimationGroup::clearAnimations() has been renamed to clear().
   * QAnimationGroup::insertAnimationAt() has been renamed to
     insertAnimation().
   * QAnimationGroup::takeAnimationAt() has been renamed to takeAnimation().
   * QSequentialAnimationGroup::insertPauseAt() has been renamed to
     insertPause().
   * [QT-941] Avoids timer ticks when there are only pause animations running.

- Refactoring in OpenGL examples to improve portability and utilize the
  Animation framework for animation.  The hellogl and overpainting examples
  now compile on OpenGL/ES 1.1.  Also common code is factored.

- Changed QWebFrame::setHtml() and setContent() to not affect the back/forward
  and the session history.

- qmake no longer adds Qt internal dependencies to the linker when Qt
  is built in shared mode (not static). This means that applications
  that made use of platform-specific API may need to adjust the LIBS
  variable in their .pro files to match:

    X11: LIBS += -lX11
    Mac: LIBS += -framework AppKit -framework Carbon

- QtScript: Behavior changes due to using JavaScriptCore in the back-end:
  * QDateTime is no longer used for date parsing and string conversion of
    Date objects; instead the (more compliant) date processing from
    JavaScriptCore is used.
  * RegExp objects are no longer thin wrappers around QRegExp; they are now
    "proper" JavaScript RegExp objects.