Introduce QMetaType::UnknownType.
[profile/ivi/qtbase.git] / dist / changes-5.0.0
index ad085b3..95dbe0b 100644 (file)
@@ -36,6 +36,13 @@ information about a particular change.
 - QCoreApplication::translate() will no longer return the source text when
   the translation is empty. Use lrelease -removeidentical for optimization.
 
+- 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
+  result in empty QString and QByteArray, respectively. The size argument to
+  those constructors now has a default value of -1, thus replacing the separate
+  constructors that did the same.
+
 - Qt::escape() is deprecated (but can be enabled via
   QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead.
 
@@ -45,9 +52,21 @@ 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.
 
-- QMetaType::construct() has been renamed to QMetaType::create().
+- QMetaType:
+  * QMetaType::construct() has been renamed to QMetaType::create().
+  * QMetaType::unregisterType() has been removed.
+
+- QMetaMethod::signature() has been renamed to QMetaMethod::methodSignature(),
+  and the return type has been changed to QByteArray. This was done to be able
+  to generate the signature string on demand, rather than always storing it in
+  the meta-data.
 
 - QTestLib:
+  * The plain-text, xml and lightxml test output formats have been changed to
+    show a test result for every row of test data in data-driven tests.  In
+    Qt4, only fails and skips were shown for individual data rows and passes
+    were not shown for individual data rows, preventing accurate calculation
+    of test run rates and pass rates.
   * The QTRY_VERIFY and QTRY_COMPARE macros have been moved into QTestLib.
     These macros formerly lived in tests/shared/util.h but are now provided
     by including the <QtTest/QtTest> header. In addition,
@@ -86,8 +105,9 @@ information about a particular change.
     text(Text t, int child) -> text(Text t), rect(int child) -> rect()
     setText(Text t, int child, const QString &text) -> setText(Text t, const QString &text)
     role(int child) -> role(), state(int child) -> state()
-    relationTo(int child, const QAccessibleInterface *other, int otherChild) ->
-      relationTo(const QAccessibleInterface *other)
+  * parent() and child() was added in order to do hierarchical navigation.
+  * relations() was added as a replacement to relationTo()
+  * As a consequence of the above two points, navigate() was removed.
   * Accessible-Action related functions have been removed. QAccessibleInterface
     subclasses are expected to implement the QAccessibleActionInterface instead.
     These functions have been removed:
@@ -120,10 +140,16 @@ information about a particular change.
   * QWidget *widget() has been removed and is replaced by QObject
     *target() in order to avoid QWidget dependencies.
 
+  * QEvent::TouchCancel has been introduced. On systems where it makes
+    sense this event type can be used to differentiate between a
+    regular TouchEnd and abrupt touch sequence cancellations caused by
+    the compositor, for example when a system gesture gets recognized.
+
 - QMetaType
 
-  * It is no longer possible to use Q_DECLARE_METATYPE(Foo*) where Foo is only
-    forward declared - it must be fully defined.
+  * 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.
 
 - QItemEditorFactory
 
@@ -181,12 +207,36 @@ information about a particular change.
 - QDir::convertSeparators() (deprecated since Qt 4.2) has been removed. Use
   QDir::toNativeSeparators() instead.
 
+- QIconEngineV2 was merged into QIconEngine
+  You might need to adjust your code if it used a QIconEngine.
+
 - qmake
+  * Projects which explicitly set an empty TARGET are considered broken now.
   * several functions and built-in variables were modified to return normalized paths.
 
 - QTextCodecPlugin has been removed since it is no longer used. All text codecs
   are now built into QtCore.
 
+- QDir::NoDotAndDotDot is QDir::NoDot|QDir::NoDotDot therefore there is no need
+  to use or check both.
+
+- QFSFileEngine, QAbstractFileEngine, QAbstractFileEngineIterator and
+  QAbstractFileEngineHandler were removed from public API and are no longer
+  exported. They may temporarily live as private implementation details, but
+  they may be altogether dropped or otherwise changed at will in the future.
+
+- QLocale
+  * toShort(), toUShort(), toInt(), toUInt(), toLongLong() and toULongLong() no
+    longer take a parameter for base, they will only perform localised base 10
+    conversions. For converting other bases use the QString methods instead.
+
+- QSystemLocale has been removed from the public API.
+
+- QSqlQueryModel::indexInQuery() is now virtual. See note below under QSql.
+
+- qMacVersion() has been removed. Use QSysInfo::macVersion() or
+  QSysInfo::MacintoshVersion instead.
+
 ****************************************************************************
 *                           General                                        *
 ****************************************************************************
@@ -234,9 +284,37 @@ QtCore
   now return an empty QString, QStringRef or QByteArray respectively.
   in Qt 4 they returned a null QString or a null QStringRef.
 
+* QString methods toLongLong(), toULongLong(), toLong(), toULong(), toInt(),
+  toUInt(), toShort(), toUShort(), toDouble(), and toFloat() no longer use the
+  default or system locale, they will always use the C locale. This is to
+  guarantee consistent default conversion of strings. For locale-aware conversions
+  use the equivalent QLocale methods.
+
 * QDate, QTime, and QDateTime have undergone important behavioural changes:
+  * QDate only implements the Gregorian calendar, the switch to the Julian
+    calendar before 1582 has been removed. This means all QDate methods will
+    return different results for dates prior to 15 October 1582, and there is
+    no longer a gap between 4 October 1582 and 15 October 1582.
   * QDate::setYMD() is deprecated, use QDate::setDate() instead
-
+  * Most methods now apply strict validity checks and will return appropriate
+    and consistent values when invalid.  For example, QDate::year() will return
+    0 and QDate::shortMonthName() will return QString().
+  * Adding days to a null QDate or seconds to a null QTime will no longer return
+    a valid QDate/QTime.
+  * QDate stores the Julian Day as a qint64 extending date support across a
+    more interesting range, see the class documentation for details.
+    * Conversion to YMD form dates is only accurate between to 4800 BCE to
+      1.4 million CE
+    * The QDate::addDays() and QDateTime::addDays() methods now take a qint64
+    * The QDate::daysTo() and QDateTime::daysTo() methods now return a qint64
+
+* QTextCodec::codecForCStrings() and QTextCodec::setCodecForCStrings() have both
+  been removed. This was removed due to issues with breaking other code from
+  libraries, creating uncertainty/bugs in using QString easily, and (to a lesser
+  extent) performance issues.
+
+* QIntValidator and QDoubleValidator no longer fall back to using the C locale if
+  the requested locale fails to validate the input.
 
 QtGui
 -----
@@ -250,11 +328,21 @@ QtGui
 
 QtWidgets
 ---------
-* QWidget::setInputContext() and QApplication::setInputContext() are removed.
+* 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, 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}
+  classes have been removed, and their members merged into the respective
+  base classes. Those classes were left as typedefs to keep existing code
+  working. Still, some minor adjustements could be necessary, especially in code
+  that uses QStyleOption directly and does not initialize all the members using
+  the proper Qt API: due to the version bump, QStyle will try to use the additional
+  QStyleOption members, which are left default-initialized.
+
 QtNetwork
 ---------
 * QHostAddress::isLoopback() API added. Returns true if the address is
@@ -279,6 +367,38 @@ QTestLib
 * [QTBUG-20615] Autotests can now log test output to multiple destinations
   and log formats simultaneously.
 
+QtSql
+-----
+QSqlTableModel/QSqlRelationalTableModel
+
+* The dataChanged() signal is now emitted for changes made to an inserted
+record that has not yet been committed. Previously, dataChanged() was
+suppressed in this case for OnRowChange and OnFieldChange. This was probably
+an attempt to avoid trouble if setData() was called while handling
+primeInsert(). By emitting dataChanged(), we ensure that all views are aware
+of the change.
+
+* While handling primeInsert() signal, the record must be manipulated using
+the provided reference. Do not attempt to manipulate the records using the
+model methods setData() or setRecord().
+
+* removeRows() no longer emits extra beforeDelete signal for out of range row.
+
+* removeRows() now requires the whole range of targetted rows to be valid
+before doing anything. Previously, it would remove what it could and
+ignore the rest of the range.
+
+* setRecord() and insertRecord()
+  -Only use fields where generated flag is set to true. This is
+  is consistent with the meaning of the flag.
+  -Require all fields to map correctly. Previously fields that didn't
+  map were simply ignored.
+  -For OnManualSubmit, insertRecord() no longer leaves behind an empty
+  row if setRecord() fails.
+
+* QSqlQueryModel::indexInQuery() is now virtual. See
+QSqlTableModel::indexInQuery() as example of how to implement in a
+subclass.
 
 ****************************************************************************
 *                          Database Drivers                                *
@@ -390,6 +510,27 @@ Qt for Windows CE
      cause an abort().
 
 
+- QVariant
+
+  * Definition of QVariant::UserType changed. Currently it is the same as
+    QMetaType::User, which means that it points to the first registered custom
+    type, instead of a nonexistent type.
+
+- QMetaType
+
+  * Interpretation of QMetaType::Void was changed. Before, in some cases
+    it was returned as an invalid type id, but sometimes it was used as a valid
+    type (C++ "void"). In Qt5, new QMetaType::UnknownType was introduced to
+    distinguish between these two. QMetaType::UnknownType is an invalid type id
+    signaling that a type is unknown to QMetaType, and QMetaType::Void
+    is a valid type id of C++ void type. The difference will be visible for
+    example in call to QMetaType::typeName(), this function will return null for
+    QMetaType::UnknownType and a pointer to "void" string for
+    QMetaType::Void.
+    Please, notice that QMetaType::UnknownType has value 0, which previously was
+    reserved for QMetaType::Void.
+
+
 - QMessageBox
 
      * The static function QMessageBox::question has changed the default argument