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 ("). 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