summaryrefslogtreecommitdiffstats
path: root/dist/changes-4.6.0
blob: be2c89c842ef3850d4dfba381386d991d400067d (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
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 Task Tracker:

  http://qt.nokia.com/developer/task-tracker

Each of these identifiers can be entered in the task tracker to obtain more
information about a particular change.

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

 - QtDBus
   * The minimum required version of the D-Bus reference library is
     now 0.93.

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


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

 - Updated FreeType to version 2.3.9

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

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

 - 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.

QtCore

 - QObject
    * [259514] fixed a possible dead-lock in the destructor
	
 - QVariant
    * Many optimisations
    * Added QVariant::toFloat() and QVariant::toReal()
    * Added QVariant(float) constructor
    * qvariant_cast<QVariant> and qVariantFromValue<QVariant> are now
      identify functions

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

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

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

 - QObject
    * Added the possibility to pass the flag Qt::UniqueConnection to QObject::connect
    * Fixed race conditions that occured when moving object to threads while connecting

- 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.

QtGui

 - QCompleter
    * [246056] Fixed a possible assertion when setting the completer prefix
	
 - QFontDialog
    * [256466] fixed the dialog not always returning the selected style.
	
 - QGraphicsItem
    * Fixed bug and improved accuracy of QGraphicsItem::childrenBoundingRect().
    * Many optimizations.
    * 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 activation support.
    * Introduced QGraphicsItem::stackBefore()
    * Cached items are now always invalidated when update() is called.

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

 - QGraphicsWidget
    * Now inherits from QGraphicsObject instead

 - QHeaderView
    * [208320] Make sure the sort indicator s taken into account for the size hint
    * [255574] Make sure the sizehint for the section depend on visible sections

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

 - QMenuBar
    * [260873] Fix mouse interaction while undocking a widget from the main window
	* dock areas don't get a splitter if their dock widgets are not resizable
	
 - QColumnView
    * [246999] Fixed view not updating when the model is changed dynamically
	
 - QListView
    * [243335] Fixed the visualRect to return correct values when the widget is not yet show
	
 - 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

 - 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
      speed-up, support for rows/columns insertion/removal, and better keyboard
      navigation

 - QTableWidget
    * [234641] Fixed takeItem to cause the view to be updated.
	
 - QTabBar
    * [196326] Fixed having a stylesheet on a QTabBar resulted in some tab names
      to be slightly clipped.
    * [241383] Added ability to style the close tab button with style sheet

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

 - QPixmap
    * Optimized width(), height(), isNull() and depth().

 - QRegion
    * Minor optimizations.

 - QSpinBox
    * [259226] Fixed setting a stylesheet on a QSpinBox to change the arrow possition

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

 - QGraphicsItem
    * Added a new set of properties to set a transformation on a item

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

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

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

 - QWidget
    * [201649] Added QWidget::previousInFocusChain
    * [254563] Fixed a crash when setting a focus in a widget tree that
      contains invisible widgets

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

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

 - 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.

 - [259221] QFileInfo::symLinkTarget() now supports NTFS symbolic links
   thanks to Konstantin Ritt (merge request 1217).

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

 - On Windows CE the link time code geration has been disabled by default to
   be consistent with win32-msvc200x.
   
 - Added QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL and
   QMAKE_LIBS_OPENGL_ES2 qmake variables for specifying OpenGL ES
   specific libraries.

 - 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. Patch by Ritt.K

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

 - 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 the unsupported target. This fixes copying and pasting data
   when using Synergy.

 - [QTBUG-4418] Fixed maximizing and restoring a window on Mac.

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

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

 - Add support for GetURL events on Mac OS X
 
General changes on Mac OS X:
 - Mac OS X version support: Support for 10.3(Panther) has been dropped, 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.
   
 - 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

****************************************************************************
*                          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.

- uic3

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

****************************************************************************
*                               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 bug regarding QGraphicsProxyWidgets

 - 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.


****************************************************************************
* 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.0. 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 renames to clear()
   * QAnimationGroup::insertAnimationAt() has been renames to insertAnimation()
   * QAnimationGroup::takeAnimationAt() has been renames to takeAnimation()
   * QSequentialAnimationGroup::insertPauseAt() has been renames to insertPause()