Doc: Remove the mention of non-atomic convenience operators in QAtomic
[profile/ivi/qtbase.git] / dist / changes-5.0.0
index f227a12..a969fc8 100644 (file)
@@ -11,6 +11,12 @@ information about a particular change.
 *                       Source incompatible changes                        *
 ****************************************************************************
 
+- QAtomicInt's and QAtomicPointer's non-atomic convenience methods
+  (i.e., operator=, operator int / operator T*, operator!, operator==,
+  operator!= and operator->) have been removed as they did implicit
+  loads and stores of unspecified memory ordering. Code dealing with
+  is expected to use load(), loadAquire(), store() and storeRelease()
+  as necessary instead.
 
 - QObject
   * The signatures of the connectNotify() and disconnectNotify() functions
@@ -41,6 +47,9 @@ information about a particular change.
 - QCoreApplication::translate() will no longer return the source text when
   the translation is empty. Use lrelease -removeidentical for optimization.
 
+- QTranslator subclasses need to adjust the signature of the virtual method
+  translate() in order to add the "int n = -1" argument.
+
 - QString and QByteArray constructors that take a size argument will now treat
   negative sizes to indicate nul-terminated strings (a nul-terminated array of
   QChar, in the case of QString). In Qt 4, negative sizes were ignored and
@@ -57,11 +66,24 @@ information about a particular change.
   in Qt4, so these methods return a bool now. If your code used the undocumented
   QBool, simply replace it with bool.
 
+- The old macros TRUE and FALSE have been removed, use true and false instead.
+
 - qIsDetached<> has been removed without replacement.
 
+- The return type of QFlags<Enum>::operator int() now matches the Enum's underlying
+  type in signedness instead of always being 'int'. This was done in order to allow
+  QFlags over enums whose underlying type is unsigned (Qt::MouseButton is one such
+  enum).
+
 - QMetaType:
   * QMetaType::construct() has been renamed to QMetaType::create().
   * QMetaType::unregisterType() has been removed.
+  * QMetaType now records if the type argument inherits QObject. This
+    can be used in scripting APIs, so that custom QObject subclasses
+    are treated as QObject pointers. In QtScript for example, this can
+    mean that QScriptValue.isQObject can be true where it was false before.
+  * QMetaType::QWidgetStar has been removed. Use qMetaTypeId<QWidget*>()
+    or QVariant::canConvert<QWidget*>() as appropriate.
 
 - QMetaMethod:
   * QMetaMethod::signature() has been renamed to QMetaMethod::methodSignature(),
@@ -78,6 +100,14 @@ information about a particular change.
     instance was removed. Code constructing such variants can be migrated by
     explicitly calling QColor constructor. For example from "QVariant(Qt::red)"
     to "QVariant(QColor(Qt::red))"
+  * Similarly, implicit creation of QVariants from enum values Qt::BrushStyle,
+    Qt::PenStyle, and Qt::CursorShape have been removed. Create objects explicitly
+    or use static_cast<int>(Qt::SolidLine) to create a QVariant of type int with
+    the same value as the enum.
+
+- QLocale:
+  * The historical language and country names were updated to their modern values,
+    some deprecated names were dropped or mapped to their modern alternatives.
 
 - QTestLib:
   * The plain-text, xml and lightxml test output formats have been changed to
@@ -111,6 +141,18 @@ information about a particular change.
     like SkipSingle -- skipping a non-data-driven test function or skipping
     only the current data row of a data-driven test function.  Every skipped
     data row is now reported in the test log.
+  * The qCompare() function template was both overloaded and specialised, which
+    made it almost impossible to specialise the correct primary template and
+    could lead to indecipherable error messages or surprising overload resolution
+    (such as going via qCompare(QFlags<void*>,int) to satisfy a request for
+    qCompare<void*>()). Now, specialisation has been replaced by overloading.
+    As a consquence, code such as qCompare<QString>(l, r) will no longer use the
+    QString-specific implementation and may fail to compile. We recommend you
+    replace specialisations with overloading, too. Also, don't pass explicit
+    template arguments to qCompare (e.g. qCompare<QString>(l, r)), but let
+    overload resolution pick the correct one, and cast arguments in case of
+    ambiguous overloads (e.g. qCompare(QString(l), r)). The resulting code will
+    continue to work against older QtTestlib versions.
 
 - The QSsl::TlsV1 enum value was renamed to QSsl::TlsV1_0 .
 
@@ -168,12 +210,24 @@ information about a particular change.
   * Q_DECLARE_METATYPE(Foo*) now requires that Foo is fully defined. In
     cases where a forward declared type should be used as a metatype,
     Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that.
+  * Similarly, Q_DECLARE_METATYPE(QSharedPointer<Foo>), and
+    Q_DECLARE_METATYPE(QWeakPointer<Foo>) require Foo to be fully defined. Again
+    though, Q_DECLARE_OPAQUE_POINTER(Foo*) can be used to allow that.
 
 - QItemEditorFactory
 
   * The signature of the createEditor and valuePropertyName methods
     have been changed to take arguments of type int instead of QVariant::Type.
 
+- QModelIndex/QAbstractItemModel
+
+  * The integer value that can be stored in a QModelIndex is now of type
+    quintptr to match the size of the internal storage location.
+  * The createIndex() method now only provides the void* and quintptr
+    overloads, making calls with a literal 0 (createIndex(row, col, 0))
+    ambiguous. Either cast (quintptr(0)) or omit the third argument
+    (to get the void* overload).
+
 - QWindowSystemInterface:
 
   * The signature of all handleTouchEvent() variants have changed,
@@ -207,8 +261,8 @@ information about a particular change.
 - The QHttp, QHttpHeader, QHttpResponseHeader and QHttpRequestHeader classes have
   been removed, QNetworkAccessManager should be used instead.
 
-- The QFtp class is no longer exported, QNetworkAccessManager should be used
-  instead.
+- The QFtp and QUrlInfo classes are no longer exported, QNetworkAccessManager should be used
+  instead. These classes are available in a separate module, qtftp.
 
 - QProcess
 
@@ -276,6 +330,34 @@ information about a particular change.
   QColorDialog::setCustomColor() and QColorDialog::setStandardColor() now
   take a QColor value for their second parameter instead of QRgb.
 
+- QPageSetupDialog has had the PageSetupDialogOption enum and the api to
+  set and get the enum removed as none of the Options are used any more.
+
+- QAbstractPageSetupDialog has been removed.
+
+- QThread::terminated() has been removed, since its emission cannot be guaranteed.
+
+- QPrintEngine - Removed the PPK_SuppressSystemPrintStatus key as no longer used.
+
+- QCoreApplication::Type and QApplication::type() have been removed. These
+  Qt3 legacy application types did not match the application types
+  available in Qt5. Use for example qobject_cast instead to dynamically
+  find out the exact application type.
+
+- The following QStyle implementations have been made internal:
+  * QFusionStyle
+  * QGtkStyle
+  * QMacStyle
+  * QWindowsCEStyle
+  * QWindowsMobileStyle
+  * QWindowsStyle
+  * QWindowsVistaStyle
+  * QWindowsXPStyle
+  Instead of creating instances or inheriting these classes directly, use:
+  * QStyleFactory for creating instances of specific styles
+  * QProxyStyle for customizing existing style implementations
+  * QCommonStyle as a base for implementing full custom styles.
+
 ****************************************************************************
 *                           General                                        *
 ****************************************************************************
@@ -287,6 +369,18 @@ General Improvements
   more closely match the directory structure of the code under test.
   Integration tests have been moved to tests/auto/integrationtests.
 
+- Qt is compiled with C++11 support enabled by default, provided the compiler
+  supports C++11. Qmake based projects can enable C++11 support explicitly
+  using 'CONFIG+=c++11' in their .pro files. To enable it conditionally, use
+  'contains(QT_CONFIG,c++11):CONFIG+=c++11'. This will enable C++11 support
+  only if Qt was built with C++11 support.
+
+- The Unicode Data and Algorithms has been updated to match the
+  Unicode Standard of version 6.2. For more information see http://www.unicode.org/
+
+- The QLocale data has been updated to CLDR 22.1.
+  For more information see http://cldr.unicode.org/
+
 Third party components
 ----------------------
 
@@ -294,6 +388,10 @@ Third party components
 flags are now enabled by default on all platforms, for the sqlite3 copy under
 the 3rdparty directory.
 
+Legal
+-----
+
+ - Copyright of Qt has been transferred to Digia Plc.
 
 ****************************************************************************
 *                          Library                                         *
@@ -301,7 +399,12 @@ the 3rdparty directory.
 
 QtCore
 ------
-* drop a bogus QChar::NoCategory enum value; the proper QChar::Other_NotAssigned
+* [QTBUG-12144], [QTBUG-18360] The QChar methods are now able to handle the full range
+  of Unicode codepoints defined by the Unicode Standard of version 6.2.
+  QChar::isPrint() will no longer return a false positives for
+  the Unicode format characters, surrogates, and private use characters.
+
+* Drop a bogus QChar::NoCategory enum value; the proper QChar::Other_NotAssigned
   value is returned for an unassigned codepoints now.
 
 * layoutAboutToBeChanged is no longer emitted by QAbstractItemModel::beginMoveRows.
@@ -309,6 +412,9 @@ QtCore
   should now also connect to (and disconnect from) the rowsAboutToBeMoved and
   rowsMoved signals.
 
+* The QAbstractItemModel::sibling method was made virtual, allowing implementations
+  to optimize based on internal data.
+
 * The default value of the property QSortFilterProxyModel::dynamicSortFilter was
   changed from false to true.
 
@@ -377,10 +483,61 @@ QtCore
 * QEvent::AccessibilityPrepare, AccessibilityHelp and AccessibilityDescription removed:
   * The enum values simply didn't make sense in the first place and should simply be dropped.
 
+* Filtering of native events (QCoreApplication::setEventFilter, as well as
+  QApplication::x11EventFilter/macEventFilter/qwsEventFilter/winEventFilter) have been replaced
+  with QCoreApplication::installNativeEventFilter and removeNativeEventFilter,
+  for an API much closer to QEvent filtering. Note that the native events that can be
+  filtered this way depend on which QPA backend is chosen, at runtime. On X11, XEvents are
+  not used anymore, and have been replaced with xcb_generic_event_t due to the switch to
+  XCB, which requires porting the application code to XCB as well.
+
 * [QTBUG-23529] QHash is now more resilient to a family of denial of service
   attacks exploiting algorithmic complexity, by supporting two-arguments overloads
   of the qHash() hashing function.
 
+* [QTBUG-4844] QObject::disconnectNotify() is now called when a receiver is destroyed.
+
+* QStateMachine
+  - [QTBUG-15430] Added a QStateMachine constructor that takes a ChildMode parameter.
+  - [QTBUG-17975] Delayed event posting now works from secondary threads.
+  - [QTBUG-19789] Signal transitions now work correctly when the sender is in a different thread.
+  - [QTBUG-20362] Property assignments now work as expected with nested, parallel states.
+  - [QTBUG-22931] The root state can now be a parallel state group.
+  - [QTBUG-24307] The initial state is now entered before the started() signal is emitted.
+  - [QTBUG-25959] State entry and exit order is now SCXML spec-compliant.
+
+* qDebug(), qWarning(), qCritical(), and qFatal() were changed to macros that track the origin
+  of the message in source code. Whether this and other meta-information is printed can be
+  configured  (for the default message handler) by setting the new QT_MESSAGE_PATTERN environment
+  variable. qInstallMsgHandler() has been deprecated, and should be replaced with
+  qInstallMessageHandler().
+
+* QTextBoundaryFinder
+  - [QTBUG-6498] The word start and word end boundaries detection is now
+    unaware of surrounding white space characters.
+  - SoftHyphen enum value has been added to specify a line break opportunity
+    at a soft hyphen (SHY) character.
+  - MandatoryBreak enum value has been added to specify a mandatory (aka "hard") line breaks.
+  - Source-incompatible change: Since the behavior of boundaryReasons() method
+    has been changed a lot, StartWord/EndWord enum values were intentionally replaced
+    with StartOfItem/EndOfItem ones to force the affected code be revised.
+
+* Softkeys API was removed. The following functions and enums were removed:
+  - QAction::setSoftKeyRole()
+  - QAction::softKeyRole()
+  - QAction::SoftKeyRole
+  - Qt::WA_MergeSoftkeys
+  - Qt::WA_MergeSoftkeysRecursively
+  - Qt::WindowSoftkeysVisibleHint
+  - Qt::WindowSoftkeysRespondHint
+
+* QLocale
+  - [QTBUG-27987] Constructing a QLocale object with the short locale id has been improved.
+
+* QObject
+  - Added overloads of connect() to connect using pointers to member function
+  - Added QObject::isSignalConnected()
+
 QtGui
 -----
 * Accessibility has been refactored. The hierachy of accessible objects is implemented via
@@ -401,13 +558,45 @@ QtGui
 * QOpenGLPaintDevice has been added to be able to use QPainter to render into
   the currently bound context.
 
+* Behavioral change in QImage::fill() on an image with format Format_RGB888:
+  For consistency with RGB32 and other 32-bit formats, function now expects
+  image data in RGB layout as opposed to BGR layout.
+
+* Behavioral change in QImage and QPixmap load()/loadFromData() on a non-null image:
+  If load() or loadFromData() fails to load the image (returns false) then
+  the existent image data will be invalidated, so that isNull() is guaranteed
+  to return true in this case.
+
+* Behavioral change regarding QPainter fill rules when not using antialiased
+  painting: The fill rules have changed so that the aliased and antialiased
+  coordinate systems match. Earlier there used to be an offset of slightly less
+  than half a pixel when doing sub-pixel rendering, in order to be consistent
+  with the old X11 paint engine. The new behavior should be more predictable and
+  gives the same consistent rounding for images / pixmaps as for paths and
+  rectangle filling. It's possible to still get the old behavior by setting the
+  QPainter::Qt4CompatiblePainting render hint.
+
+* Behavioral change regarding QPen: The default QPen constructors now create a
+  1-width non-cosmetic pen as opposed to a 0-width cosmetic pen. The old
+  behavior can be emulated by setting the QPainter::Qt4CompatiblePainting
+  render hint when painting.
+
 QtWidgets
 ---------
+* A new style QFusionStyle has been introduced, while QPlastiqueStyle, QCleanlooksStyle,
+  QCDEStyle and QMotifStyle have been removed. The older styles will be
+  made available to applications as a standalone source package.
+
 * QInputContext removed as well as related getters and setters on QWidget and QApplication.
   Input contexts are now platform specific.
 
 * QInputDialog::getInteger() has been obsoleted. Use QInputDialog::getInt() instead.
 
+* In Qt 4, QStyle::standardIconImplementation() and layoutSpacingImplementation()
+  were introduced instead of making the corresponding methods virtual due to binary
+  compatibility reasons. QStyle::standardIcon() and layoutSpacing() have been made
+  (pure) virtual in Qt 5.
+
 * In Qt 4, many QStyleOption subclasses were introduced in order to keep
   binary compatibility -- QStyleOption was designed to be extended this way,
   in fact it embeds a version number. In Qt 5 the various QStyleOption*V{2,3,4}
@@ -418,7 +607,7 @@ QtWidgets
   the proper Qt API: due to the version bump, QStyle will try to use the additional
   QStyleOption members, which are left default-initialized.
 
-* QHeaderView - The following functions have been obsoleted.
+* QHeaderView has been refactored and the following functions have been obsoleted:
 
   * void setMovable(bool movable) - use void setSectionsMovable(bool movable) instead.
 
@@ -434,11 +623,39 @@ QtWidgets
   * ResizeMode resizeMode(int logicalindex) const -
     use sectionResizeMode(int logicalindex) instead.
 
+  * setSortIndicator will no longer emit sortIndicatorChanged when the sort indicator is unchanged.
+
 * QDateEdit and QTimeEdit have re-gained a USER property. These were originally removed
     before Qt 4.7.0, and are re-added for 5.0. This means that the userProperty for
     those classes are now QDate and QTime respectively, not QDateTime as they have been
     for the 4.7 and 4.8 releases.
 
+* QGraphicsItem and derived classes - Passing a QGraphicsScene in the items constructor
+  is no longer supported. Construct the item without a scene and then call
+  QGraphicsScene::addItem() to add the item to the scene.
+
+* QAbstractItemView and derived classes only emit the clicked() signal on left click now,
+  instead of on all mouse clicks.
+
+* QProxyModel has been removed. It is deprecated since early Qt 4 versions and replaced
+  by QAbstractProxyModel and related classes. A copy of QProxyModel is available
+  in the UiHelpers library.
+
+* The virtual methods QApplication::commitData and QApplication::saveState, used for session
+  management, no longer exist.
+  Connect to the commitDataRequest and saveStateRequest signals instead.
+  The new isSessionSaving() method can be used in the cases where the closeEvent of your
+  window needs to know whether it is being called during shutdown.
+
+* [QTBUG-20503] QFileSystemModel no longer masks out write permissions from the permissions
+  returned from permissions() or data(FilePermissions), even if in read-only mode
+  (QFileSystemModel::isReadOnly()).
+
+* [QTBUG-158 QTBUG-428 QTBUG-26501] QComboBox::currentText improvements
+  Restored currentText as USER property.
+  New setter setCurrentText(), marked as WRITE method, usable by QItemDelegate and QDataWidgetMapper.
+  New signal currentTextChanged() marked as NOTIFY method.
+
 QtNetwork
 ---------
 * QHostAddress::isLoopback() API added. Returns true if the address is
@@ -459,6 +676,17 @@ QtDBus
 * QtDBus error codes have been updated to be on the org.qtproject.QtDBus.Error
   namespace.
 
+QtConcurrent
+------------
+
+* QtConcurrent is no longer in QtCore, but forms its own library now.
+  QMake-based projects can use
+    QT += concurrent
+  to include the new library.
+
+* QtConcurrent::Exception has been renamed to QException, and is still in QtCore.
+  Ditto QtConcurrent::UnhandledException.
+
 QtOpenGL
 --------
 
@@ -466,15 +694,66 @@ QtOpenGL
   now have equivalents in QtGui, along with the naming change QGL -> QOpenGL.
   The classes in QtOpenGL that have equivalents in QtGui can now be considered
   deprecated.
+* QGLPixelBuffer is now deprecated and implemented in terms of a hidden
+  QGLWidget and a QOpenGLFramebufferObject. It is recommended that applications
+  using QGLPixelBuffer for offscreen rendering to a texture switch to using
+  QOpenGLFramebufferObject directly instead, for improved performance.
+* The default major version of QGLFormat has been changed to 2 to be aligned
+  with QSurfaceFormat. Applications that want to use a different version should
+  explicitly request it using QGLFormat::setVersion().
+* void QGLContext::generateFontDisplayLists(const QFont& font, int listBase)
+  and int QGLWidget::fontDisplayListBase(const QFont & fnt, int listBase)
+  which were deprecated in Qt 4 have been removed.
+* Previously deprecated default value listBase parameter has been removed from
+  both QGLWidget::renderText() functions.
+* In order to ensure support on more platforms, stricter requirements have been
+  introduced for doing threaded OpenGL. First, you must call makeCurrent() at
+  least once per swapBuffers() call, so that the platform has a chance to
+  synchronize resizes to the OpenGL surface. Second, before doing makeCurrent()
+  or swapBuffers() in a separate thread, you must call
+  QGLContext::moveToThread(QThread *) to explicitly let Qt know in which thread
+  a QGLContext is currently being used. You also need to make sure that the
+  context is not current in the current thread before moving it to a different
+  thread.
 
 QtScript
 --------
-
+* [QTBUG-2124]  Added default conversion for long and unsigned long.
+* [QTBUG-6133]  Fixed QScriptContextInfo::functionMetaIndex() for overloaded
+  slots.
+* [QTBUG-15213] Doc: Added missing properties to the ECMAScript reference.
+* [QTBUG-15956] Doc: Removed wrong information about Error .stack properties.
+* [QTBUG-17915] Fixed a crash when a JS property descriptor was only partially
+  defined.
+* [QTBUG-18188] Fixed a regression that caused contexts created by
+  QScriptEngine::pushContext() to inherit the parent context's scope.
+* [QTBUG-18201] Suppressed 'LEAK' messages on stderr at application exit.
+* [QTBUG-20378] Fixed QtScriptTools compilation when some features are disabled.
+* [QTBUG-20845] Fixed a precision bug in the calculator example.
+* [QTBUG-21548] Fixed a crash in QScriptEngineDebugger when the QScriptEngine
+  being debugged was deleted.
+* [QTBUG-21760] Fixed a crash when accessing QObject properties through an
+  activation object.
+* [QTBUG-21896] Fixed a crash when converting an invalid JS value to a string.
+* [QTBUG-21993] Fixed a bug that caused QObject wrapper objects created with
+  the PreferExistingWrapperObject option to not be garbage collected, even if
+  the object was not referenced anywhere in the scripting environment.
+* [QTBUG-22152] Fixed build issue on Solaris.
+* [QTBUG-23871] Fixed a JIT crash on x86-64 caused by out-of-range branch
+  instructions.
+* [QTBUG-26261] Fixed a crash when a queued signal handler no longer existed.
+* [QTBUG-26590] Fixed a bug that caused QObjects with script connections to
+  not be garbage collected as expected.
 
 QTestLib
 --------
 * [QTBUG-20615] Autotests can now log test output to multiple destinations
   and log formats simultaneously.
+* [QTBUG-21645] QSignalSpy now handles QVariant signal parameters more
+  intuitively; the QVariant value is copied directly, instead of being
+  wrapped inside a new QVariant. This means that calling
+  qvariant_cast<QVariant>() on the QSignalSpy item (to "unwrap" the value)
+  is no longer required (but still works).
 
 QtSql
 -----
@@ -501,8 +780,9 @@ ignore the rest of the range.
 removed and only if there are no other changed rows.
 
 * setRecord() and insertRecord()
-  -Only use fields where generated flag is set to true. This is
-  is consistent with the meaning of the flag.
+  -The generated flags from the source record are preserved in the model
+  and determine which fields are included when changes are applied to
+  the database.
   -Require all fields to map correctly. Previously fields that didn't
   map were simply ignored.
   -For OnManualSubmit, insertRecord() no longer leaves behind an empty
@@ -517,7 +797,9 @@ subclass.
 and modelReset() signals suffice to inform views that they must reinterrogate
 the model.
 
-* QSqlTableModel::selectRow(): This is a new method that refreshes a single
+* QSqlTableModel::select() is now a slot.
+
+* QSqlTableModel::selectRow(): This is a new slot that refreshes a single
 row in the model from the database.
 
 * QSqlTableModel edit strategies OnFieldChange/OnRowChange QTBUG-2875
@@ -555,6 +837,11 @@ sqlite
 'true' and 'false'. Sqlite does not have a boolean column type and it is
 customary to use integer. QTBUG-23895
 
+postgres
+--------
+* the error message returned in QSqlError::text() has the SQLSTATE error code
+appended in parantheses.
+
 ****************************************************************************
 *                      Platform Specific Changes                           *
 ****************************************************************************
@@ -566,7 +853,7 @@ Qt for Linux/X11
 Qt for Windows
 --------------
 * Accessibility framework uses IAccessible2
-
+* ANGLE can be used to provide Open GL ES 2.0 (see http://code.google.com/p/angleproject/)
 
 Qt for Mac OS X
 ---------------
@@ -611,7 +898,7 @@ Qt for Windows CE
 
 * [QTBUG-20785] The moc now has a -b<file> option to #include an additional
   file at the beginning of the generated file.
-
+* moc is now able to fully understand and expands preprocessor macros.
 
 - uic
 
@@ -637,6 +924,9 @@ Qt for Windows CE
 *                          Plugins                                         *
 ****************************************************************************
 - The text codecs that were previously plugins are now built into QtCore.
+- Code using Q_EXPORT_PLUGIN macros will no longer compile. Use
+  Q_PLUGIN_METADATA instead. Note that this requires that the class
+  be default-constructible.
 
 ****************************************************************************
 *                   Important Behavior Changes                             *