Doc: Remove the mention of non-atomic convenience operators in QAtomic
[profile/ivi/qtbase.git] / dist / changes-5.0.0
index df110ee..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 .
 
@@ -177,6 +219,15 @@ information about a particular change.
   * 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,
@@ -282,6 +333,31 @@ information about a particular change.
 - 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                                        *
 ****************************************************************************
@@ -299,6 +375,12 @@ General Improvements
   '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
 ----------------------
 
@@ -306,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                                         *
@@ -313,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.
@@ -321,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.
 
@@ -390,7 +484,7 @@ QtCore
   * 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) have been replaced
+  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
@@ -401,6 +495,49 @@ QtCore
   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
@@ -421,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}
@@ -438,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.
 
@@ -454,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
@@ -479,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
 --------
 
@@ -486,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
 -----
@@ -538,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
@@ -637,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