601d685849
If we request a substring starting at the very end of the string, QString::mid should return an empty string, not a null string. For instance, QString("abc").mid(3, 0) used to return a null one, while this patch makes it return an empty one. The same thing applies to QString::midRef() and QByteArray::mid(). Change-Id: Ie9efd7a0622d429efd0fb682c19856c19e9469af Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
386 lines
15 KiB
Plaintext
386 lines
15 KiB
Plaintext
Some of the changes listed in this file include issue tracking numbers
|
|
corresponding to tasks in the Qt Bug Tracker:
|
|
|
|
http://bugreports.qt.nokia.com/
|
|
|
|
Each of these identifiers can be entered in the bug tracker to obtain more
|
|
information about a particular change.
|
|
|
|
|
|
****************************************************************************
|
|
* Source incompatible changes *
|
|
****************************************************************************
|
|
|
|
|
|
- QSslCertificate::subjectInfo() and QSslCertificate::issuerInfo() now
|
|
return a QStringList instead of a QString
|
|
|
|
- QSslCertificate::isValid() has been deprecated. Originally it only checked
|
|
the certificate dates, but later checking for blacklisting was added. Now
|
|
there's a more specific QSslCertificate::isBlacklisted() method.
|
|
|
|
- Unite clipping support has been removed from QPainter. The alternative is
|
|
to unite QRegion's and using the result on QPainter.
|
|
|
|
- QLibrary::resolve() now returns a function pointer instead of a void
|
|
pointer.
|
|
|
|
- QSslCertificate::alternateSubjectNames() is deprecated (but can be enabled
|
|
via QT_DISABLE_DEPRECATED_BEFORE), use
|
|
QSslCertificate::subjectAlternativeNames() instead.
|
|
|
|
- QLibraryInfo::buildKey() has been removed. Likewise, the QT_BUILD_KEY
|
|
preprocessor #define has also been removed. The build-key is obsolete
|
|
and is no longer necessary.
|
|
|
|
- QCoreApplication::translate() will no longer return the source text when
|
|
the translation is empty. Use lrelease -removeidentical for optimization.
|
|
|
|
- Qt::escape() is deprecated (but can be enabled via
|
|
QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead.
|
|
|
|
- QBool is gone. QString::contains, QByteArray::contains, and QList::contains
|
|
used to return an internal QBool class so that the Qt3 code
|
|
"if (a.contains() == 2)" wouldn't compile anymore. Such code cannot exist
|
|
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().
|
|
|
|
- QTestLib:
|
|
* 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,
|
|
QTRY_VERIFY_WITH_TIMEOUT and QTRY_COMPARE_WITH_TIMEOUT are provided,
|
|
allowing for specifying custom timeout values.
|
|
* The QTEST_NOOP_MAIN macro has been removed from the API. If a test is
|
|
known at compile-time to be inapplicable for a particular build it should
|
|
be omitted via .pro file logic, or the test should call QSKIP in the
|
|
initTestCase() method to skip the entire test and report a meaningful
|
|
explanation in the test log.
|
|
* The DEPENDS_ON macro has been removed from the API. This macro did nothing
|
|
and misled some users to believe that they could make test functions depend
|
|
on each other or impose an execution order on test functions.
|
|
* The QTest::qt_snprintf function has been removed from the API. This was an
|
|
internal testlib function that was exposed in the public API due to its use
|
|
in a public macro. Any calls to this function should be replaced by a call
|
|
to qsnprintf(), which comes from the <QtCore/QByteArray> header.
|
|
* The QTest::pixmapsAreEqual() function has been removed from the API.
|
|
Comparison of QPixmap objects should be done using QCOMPARE, which provides
|
|
more informative output in the event of a failure.
|
|
* The QSKIP macro no longer has the "mode" parameter, which caused problems
|
|
for calculating test metrics, as the SkipAll mode hid information about
|
|
what test data was skipped. Calling QSKIP in a test function now behaves
|
|
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 QSsl::TlsV1 enum value was renamed to QSsl::TlsV1_0 .
|
|
|
|
- QAccessible:
|
|
* Internal QAccessible::State enum value HasInvokeExtension removed
|
|
- QAccessibleInterface:
|
|
* The "child" integer parameters have been removed. This moves the api
|
|
to be closer to IAccessible2.
|
|
This means several functions lose their integer parameter:
|
|
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)
|
|
* Accessible-Action related functions have been removed. QAccessibleInterface
|
|
subclasses are expected to implement the QAccessibleActionInterface instead.
|
|
These functions have been removed:
|
|
QAccessibleInterface::userActionCount, QAccessibleInterface::actionText,
|
|
QAccessibleInterface::doAction
|
|
- QAccessibleEvent also loses the child parameter.
|
|
QAccessibleEvent(Type type, int child) -> QAccessibleEvent(Type type)
|
|
QAccessibleEvent::child() removed.
|
|
- QAccessibleActionInterface:
|
|
* Refactored to be based on action names. All functions have been changed from using
|
|
int parameters to strings.
|
|
|
|
- QSound has been moved from QtGui to QtMultimedia
|
|
|
|
- QTouchEvent:
|
|
|
|
* The DeviceType enum and deviceType() have been deprecated due to
|
|
the introduction of QTouchDevice.
|
|
|
|
* The signature of the constructor has changed. It now takes a
|
|
QTouchDevice pointer instead of just a DeviceType value.
|
|
|
|
* TouchPointState no longer includes TouchPointStateMask and
|
|
TouchPointPrimary. QTouchEvent::TouchPoint::isPrimary() has
|
|
been removed.
|
|
|
|
* QWidget *widget() has been removed and is replaced by QObject
|
|
*target() in order to avoid QWidget dependencies.
|
|
|
|
- QMetaType
|
|
|
|
* It is no longer possible to use Q_DECLARE_METATYPE(Foo*) where Foo is only
|
|
forward declared - it must be fully defined.
|
|
|
|
- QWindowSystemInterface:
|
|
|
|
* The signature of all handleTouchEvent() variants have changed,
|
|
taking a QTouchDevice* instead of just a DeviceType value.
|
|
Platform or generic plug-ins have to create and register at least
|
|
one QTouchDevice before sending the first touch event.
|
|
|
|
* The event type parameter is removed from handleTouchEvent().
|
|
|
|
- The previously exported function qt_translateRawTouchEvent() has been removed.
|
|
Use QWindowSystemInterface::handleTouchEvent() instead.
|
|
|
|
- QAbstractEventDispatcher
|
|
|
|
* The signature for the pure-virtual registerTimer() has changed. Subclasses
|
|
of QAbstractEventDispatcher will need to be updated to reimplement the new
|
|
pure-virtual 'virtual void registerTimer(int timerId, int interval,
|
|
Qt::TimerType timerType, QObject *object) = 0;'
|
|
|
|
* QAbstractEventDispatcher::TimerInfo is no longer a QPair<int, int>. It is
|
|
now a struct with 3 members: struct TimerInfo { int timerId; int interval;
|
|
Qt::TimerType timerType; }; Reimplementations of
|
|
QAbstractEventDispatcher::registeredTimers() will need to be updated to pass
|
|
3 arguments to the TimerInfo constructor (instead of 2).
|
|
|
|
- QUuid
|
|
|
|
* Removed implicit conversion operator QUuid::operator QString(), instead
|
|
QUuid::toString() function should be used.
|
|
|
|
- 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.
|
|
|
|
- QProcess
|
|
|
|
* On Windows, QProcess::ForwardedChannels will not forward the output of GUI
|
|
applications anymore, if they do not create a console.
|
|
|
|
- QAbstractSocket's connectToHost() and disconnectFromHost() are now virtual and
|
|
connectToHostImplementation() and disconnectFromHostImplementation() don't exist.
|
|
|
|
- QTcpServer::incomingConnection() now takes a qintptr instead of an int.
|
|
|
|
- QNetworkConfiguration::bearerName() removed, and bearerTypeName() should be used.
|
|
|
|
- QDir::convertSeparators() (deprecated since Qt 4.2) has been removed. Use
|
|
QDir::toNativeSeparators() instead.
|
|
|
|
- qmake
|
|
* 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.
|
|
|
|
****************************************************************************
|
|
* General *
|
|
****************************************************************************
|
|
|
|
General Improvements
|
|
--------------------
|
|
|
|
- The directory structure of the qtbase unit-tests has been reworked to
|
|
more closely match the directory structure of the code under test.
|
|
Integration tests have been moved to tests/auto/integrationtests.
|
|
|
|
Third party components
|
|
----------------------
|
|
|
|
-
|
|
|
|
|
|
****************************************************************************
|
|
* Library *
|
|
****************************************************************************
|
|
|
|
QtCore
|
|
------
|
|
* 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.
|
|
layoutChanged is no longer emitted by QAbstractItemModel::endMoveRows. Proxy models
|
|
should now also connect to (and disconnect from) the rowsAboutToBeMoved and
|
|
rowsMoved signals.
|
|
|
|
* The default value of the property QSortFilterProxyModel::dynamicSortFilter was
|
|
changed from false to true.
|
|
|
|
* The signature of the virtual QAbstractItemView::dataChanged method has changed to
|
|
include the roles which have changed. The signature is consistent with the dataChanged
|
|
signal in the model.
|
|
|
|
* QFileSystemWatcher is now able to return failure in case of errors whilst
|
|
altering the watchlist in both the singular and QStringList overloads of
|
|
addPath and removePath.
|
|
|
|
* QString::mid, QString::midRef and QByteArray::mid, if the position passed
|
|
is equal to the length (that is, right after the last character/byte),
|
|
now return an empty QString, QStringRef or QByteArray respectively.
|
|
in Qt 4 they returned a null QString or a null QStringRef.
|
|
|
|
QtGui
|
|
-----
|
|
* Accessibility has been refactored. The hierachy of accessible objects is implemented via
|
|
proper parent/child functions instead of using navigate which has been deprecated for this purpose.
|
|
Table and cell interfaces have been added to qaccessible2.h
|
|
|
|
* Touch events and points have been extended to hold additional
|
|
information like capability flags, point-specific flags, velocity,
|
|
and raw positions.
|
|
|
|
QtWidgets
|
|
---------
|
|
* QWidget::setInputContext() and QApplication::setInputContext() are removed.
|
|
Input contexts are now platform specific.
|
|
|
|
* QInputDialog::getInteger() has been obsoleted. Use QInputDialog::getInt() instead.
|
|
|
|
QtNetwork
|
|
---------
|
|
* QHostAddress::isLoopback() API added. Returns true if the address is
|
|
one of the IP loopback addresses.
|
|
|
|
* QSslCertificate::serialNumber() now always returns the serial number in
|
|
hexadecimal format.
|
|
|
|
* The openssl network backend now reads the ssl configuration file allowing
|
|
the use of openssl engines.
|
|
|
|
|
|
QtOpenGL
|
|
--------
|
|
|
|
QtScript
|
|
--------
|
|
|
|
|
|
QTestLib
|
|
--------
|
|
* [QTBUG-20615] Autotests can now log test output to multiple destinations
|
|
and log formats simultaneously.
|
|
|
|
|
|
****************************************************************************
|
|
* Database Drivers *
|
|
****************************************************************************
|
|
|
|
|
|
****************************************************************************
|
|
* Platform Specific Changes *
|
|
****************************************************************************
|
|
|
|
Qt for Linux/X11
|
|
----------------
|
|
|
|
|
|
Qt for Windows
|
|
--------------
|
|
* Accessibility framework uses IAccessible2
|
|
|
|
|
|
Qt for Mac OS X
|
|
---------------
|
|
|
|
|
|
Qt for Embedded Linux
|
|
---------------------
|
|
|
|
|
|
Qt for Windows CE
|
|
-----------------
|
|
|
|
|
|
****************************************************************************
|
|
* Compiler Specific Changes *
|
|
****************************************************************************
|
|
|
|
|
|
****************************************************************************
|
|
* Tools *
|
|
****************************************************************************
|
|
|
|
- Build System
|
|
|
|
* Remove qttest_p4.prf file. From now on we should explicitly enable the
|
|
things from it which we want. Autotest .pro files should stop using
|
|
'load(qttest_p4)' and start using 'CONFIG+=testcase' instead.
|
|
|
|
- Assistant
|
|
|
|
- Designer
|
|
* [QTBUG-8926] [QTBUG-20440] Properties of type QStringList now have
|
|
translation attributes which apply to all items.
|
|
They are by default translatable.
|
|
|
|
- Linguist
|
|
|
|
- rcc
|
|
|
|
|
|
- moc
|
|
|
|
* [QTBUG-20785] The moc now has a -b<file> option to #include an additional
|
|
file at the beginning of the generated file.
|
|
|
|
|
|
- uic
|
|
|
|
|
|
- uic3
|
|
|
|
|
|
- qmake
|
|
|
|
* QMAKE_MOC_OPTIONS variable is now available for passing additional parameters
|
|
to the moc.
|
|
|
|
|
|
- configure
|
|
|
|
|
|
- qtconfig
|
|
|
|
|
|
****************************************************************************
|
|
* Plugins *
|
|
****************************************************************************
|
|
- The text codecs that were previously plugins are now built into QtCore.
|
|
|
|
****************************************************************************
|
|
* Important Behavior Changes *
|
|
****************************************************************************
|
|
|
|
- QPointer
|
|
|
|
* QPointer itself is now deprecated, and the implementation of QPointer
|
|
has been changed to use QWeakPointer. The old guard mechanism has been
|
|
removed. This causes two slight changes in behavior when using
|
|
QPointer:
|
|
|
|
* When using QPointer on a QWidget (or a subclass of QWidget), previously
|
|
the QPointer would be cleared by the QWidget destructor. Now, the QPointer
|
|
is cleared by the QObject destructor (since this is when QWeakPointers are
|
|
cleared). Any QPointers tracking a widget will NOT be cleared before the
|
|
QWidget destructor destroys the children for the widget being tracked.
|
|
|
|
* When constructing a QSharedPointer to take ownership of an object after a
|
|
QPointer is already tracking the object. Previously, the shared pointer
|
|
construction would not be affected by the QPointer, but now that QPointer
|
|
is implemented using QWeakPoiner, constructing the QSharedPointer will
|
|
cause an abort().
|
|
|
|
|
|
- QMessageBox
|
|
|
|
* The static function QMessageBox::question has changed the default argument
|
|
for buttons. Before the default was to have an Ok button. That is changed
|
|
to having a yes and a no button.
|