qtbase-opensource-src/dist/changes-5.3.0

562 lines
21 KiB
Plaintext
Raw Normal View History

2022-05-14 17:39:13 +08:00
Qt 5.3 introduces many new features and improvements as well as bugfixes
over the 5.2.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:
http://qt-project.org/doc/qt-5.3
The Qt version 5.3 series is binary compatible with the 5.2.x series.
Applications compiled for 5.2 will continue to run with 5.3.
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
http://bugreports.qt-project.org/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
****************************************************************************
* Important Behavior Changes *
****************************************************************************
- SIMD support in CPUs:
* [QTBUG-30440] Qt no longer checks for support for the Neon FPU on
ARM platforms at runtime. Code optimized for Neon must be enabled
unconditionally at compile time by ensuring the compiler supports
Neon. You may need to edit your mkspec for that.
* Qt now automatically generates code for processors supporting SSE2
on i386 platforms. To disable this, pass the -no-sse2 option during
Qt configuration. Since this feature has been present on CPUs for
10 years and since Qt no longer checks for runtime support for
SSE2, we strongly encourage users to leave the default setting on
for best performance.
- For Linux distributions that must retain support for CPUs without
SSE2, we recommend doing two builds of Qt and installing the
SSE2-enabled libraries in the LIBDIR/sse2 directory (specially
QtGui, QtQml and QtQuick libraries). Tools, plugins, and examples
are not affected.
- See discussion on the Qt development mailing list:
http://lists.qt-project.org/pipermail/development/2013-November/014085.html
- SSL and security:
* The default set of ciphers used by QSslSocket has been changed to
exclude ciphers that are using key lengths smaller than 128
bits. These ciphers are still available and can be enabled by
applications if required.
* [QTBUG-20666] Support for DH and ECDH key exchange cipher suites
when acting as an SSL server has been made possible. This change
means the you can now implement servers that offer forward-secrecy
using Qt.
* Running Qt applications that are setuid is no longer allowed by
default. If you really need to do this then you can call
QCoreApplication::setSetuidAllowed(true) before creating the
QCoreApplication instance.
- UTF-8 decoding:
* The QString and QTextCodec UTF-8 decoder changed behavior slightly:
when it encounters invalid sequences, it will insert one
replacement character per byte that is invalid, instead of one
replacement character for the whole invalid length.
****************************************************************************
* Platform deprecation notice *
****************************************************************************
- The support for deployment on OS X 10.6 (Snow Leopard) is deprecated
in Qt 5.3, and will be removed in Qt 5.4. The platform is currently
not tested, and most likely has issues that are not fully documented.
****************************************************************************
* General *
****************************************************************************
- Support for the following platforms has been removed, due to lack of
interest in updating support: INTEGRITY, VxWorks, Solaris on UltraSPARC
(with the Sun Studio compiler suite), AIX on POWER processors (with IBM
Visual Age compiler suite).
- Builtin command-line options such as -reverse, -session, -style
-etc. now all support double dash, e.g. --reverse, --session,
--style...
****************************************************************************
* Library *
****************************************************************************
QtCore
------
- Added QSignalBlocker, a RAII-style wrapper around
QObject::blockSignals().
- QLibraryInfo provides information on how Qt was built.
- Added class QMarginsF to support handling margins with floating-point
values.
- The setSharable() and isSharable() functions in Qt containers has
been deprecated and will be removed in Qt 6. New applications should
not use this feature, while old applications that may be using this
(undocumented) feature should port away from it.
- Atomic support:
* Added more operations to the atomic classes, including operator T(),
operator=(T), operator++, operator--. For the QAtomicInteger,
bit-manipulation operations are also provided, both in operator and in
fetchAndXxxYyyyyy modes.
- Event loop:
* [QTBUG-36611] QCoreApplication::hasPendingEvents and
QAbstractEventDispatcher::hasPendingEvents are now deprecated. Please
refer to the documentation for more information.
- Logging:
* It is now possible for the qCDebug macros to be used in a printf
style.
* All qCDebug categories are enabled by default, except for Qt's own
categories.
* The logging framework can now be configured with an .ini file.
* Q_LOGGING_CATEGORY and Q_DECLARE_LOGGING_CATEGORY now return a const
object.
- QByteArray:
* Added NSData/CDataRef converters for QByteArray.
- QChar:
* Added JoiningType enum and joiningType() method that deprecates the
old QChar::Joining enum and joining() method.
- QFileSelector:
* [QTBUG-35073] The identifier for OS X has been changed back to
'osx' from 'mac', and 'mac' and 'darwin' have now been added as
selectors for Darwin OS (which is the base of both OS X and iOS).
- QHash/QSet:
* Added qHash overloads for float, double and long double.
- QJsonArray:
* Added convenience methods to QJsonArray for appending QJsonValues
- QJsonValue:
* Added constructor to QJsonValue for const char *
* QJsonValue::fromVariant() will now convert single-precision Floats
into Doubles instead of Strings
- QMargins:
* Added missing addition and subtraction operators.
- QProcess:
* [QTBUG-26136] Added processId() to QProcess. This function will,
unlike pid(), return the actual process identifier on both Windows
and Unix.
- QRect:
* Added QMargins subtraction operator.
- QSettings:
* [QTBUG-9824][QTBUG-21062][QTBUG-22745] QSettings now returns the
correct value for isWritable() when using SystemScope settings.
- QSortFilterProxyModel:
* [QTBUG-30662] Fixed sorting when a previously empty proxy model
becomes populated because of a change in the filter.
- QStandardPaths:
* [QTBUG-34631] Added QStandardPaths implementation for Android.
- QString:
* Added QLatin1String overload of contains()
* QString::toUcs4 now does not return invalid UCS-4 code units belonging
to the surrogate range (U+D800 to U+DFFF) when the QString contains
malformed UTF-16 data. Instead, U+FFFD is returned in place of the
malformed subsequence.
- QTextCodec:
* Encoding a QString in UTF-32 will now replace malformed UTF-16
subsequences in the string with the Unicode replacement character
(U+FFFD).
- QVarLengthArray:
* Added the indexOf, lastIndexOf and contains functions to
QVarLengthArray. These functions make the class more similar to
QVector.
- Windows:
* [QTBUG-35194] Now QStandardPaths::DownloadLocation returns the proper
path for Windows Vista and up
QtDBus
------
- QtDBus adaptors now include the PropertiesChanged signal in
introspection data
- QDBusServer:
* Added method to QDBusServer to allow anonymous client connections,
even if the connecting client is not authenticated as a user.
QtGui
-----
- Added setSwapInterval() to QSurfaceFormat. Platforms that support
setting the swap interval are now defaulting to the value of 1,
meaning vsync is enabled.
- [QTBUG-35220] Reading bmp images with alpha channel is now supported
- [QTBUG-36394] The main Embedded Linux platform plugins (eglfs, linuxfb,
kms) are changed to behave identically with regards to terminal keyboard
input: it is turned off by default on all of these platforms. If this
feature is not desired, it can be disabled by setting the environment
variable QT_QPA_ENABLE_TERMINAL_KEYBOARD.
- [QTBUG-36374] Mouse hotplugging is now fully supported in eglfs when
running on Embedded Linux systems with libudev support enabled.
- [QTBUG-36603] Windows Accessibility now handles the disabled state of
widgets correctly.
- Accessibility on Linux now reports the active state correctly.
- [QTBUG-36483] Qt builds on Windows can now be configured for dynamic
loading of the OpenGL implementation. This can be requested by passing
-opengl dynamic to configure. In this mode no modules will link to
opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will
dynamically choose between desktop and Angle during the first GL/EGL/WGL
call. This allows deploying applications with a single set of Qt
libraries with the ability of transparently falling back to Angle in
case the opengl32.dll is not suitable, due to missing graphics drivers
for example.
- Added class QPageLayout to support handling page layouts including the
page size, orientation and margins.
- [QTBUG-28813][QTBUG-29930][QTBUG-35836] Fixed regression in
arabic text rendering.
- [QTBUG-37332] GLES3 and desktop OpenGL are now fully supported with
EGL
- [QTBUG-36993] Native (that is, not distance field based) text
rendering is now functional on OpenGL 3.2+ core profiles too.
- The function QOpenGLShaderProgram::create() has been added. It is can
be used to force immediate allocation of the program's id.
- QFont::setRawName() and QFont::rawName() were deprecated.
- Accessibility:
* [QTBUG-37204] Implemented text attributes to enable VoiceOver to read
QTextEdit and QPlainTextEdit.
* Assistive apps such as VoiceOver can now set the focus on widgets
and controls.
- QColor:
* Exported highly optimized methods for premultiply and unpremultiply of
QRgb values.
- QFont:
* Added qHash overload for this class.
- QGuiApplication:
* Restored support for -title command line argument on X11 and added
-qwindowtitle on all platforms.
- QImage:
* Added rvalue-qualified overloads for mirrored(), rgbSwapped() and
convertToFormat(), allowing in-place conversion in some cases
- QOpenGLFramebufferObject:
* [QTBUG-35881] Added takeTexture() for retrieving and detaching the
texture from the framebuffer object.
- QPageSize:
* Added new QPageSize class to implement Adobe Postscript PPD standard
page sizes. This class supports the standard page sizes, names and
keys from the PPD standard, and provides convenient size and rect
conversion methods.
- QPagedPaintDevice:
* [QTBUG-27685][QTBUG-25744] Paged paint devices such as QPrinter and
QPdfWriter now support all Postscript standard page sizes.
- QPdfWriter:
* The QPdfWriter now supports setting the PDF orientation, layout and
resolution by using QPageSize and QPageLayout.
- QTextLayout:
* [QTBUG-18060] Fixed visual cursor movement in bidirectional text.
- QWindow:
* QWindow::icon() now defaults to the application icon, which can be set
with QGuiApplication::setWindowIcon().
QtNetwork
---------
- [QTBUG-18714] Added support for the SPDY protocol (version 3.0).
- QNetworkReply:
* [QTBUG-30880] Added more (specific) HTTP status codes to NetworkError
enum.
- QSslConfiguration:
* [QTBUG-33208] Added support for the Next Protocol Negotiation (NPN)
TLS extension.
QtPrintSupport
--------------
- CUPS 1.4 is now required for print support on Linux and other *nix
platforms.
- QPrintPreviewDialog:
* [QTBUG-36561] Fixed initialization of QPrintPreviewDialog's image
resources for static builds.
- QPrinter:
* QPrinter can now use QPageSize and QPageLayout in the public api to
control the page layout for a print job.
- QPrinterInfo:
* [QTBUG-35248] Added new public api for isRemote(), state(),
defaultPageSize(), supportedPageSizes(), supportsCustomPageSizes(),
minimumPhysicalPageSize(), maximumPhysicalPageSize(),
supportedResolutions(), availablePrinterNames(), and
defaultPrinterName(). The use of availablePrinters() is discouraged
due to performance concerns.
QtSql
-----
- QSqlError:
* Now handles alphanumeric error codes. Used by QPSQL. Old numeric
code is deprecated.
- QSqlQuery:
* isNull(field) now correctly returns true for "no such field".
* isNull(fieldname) is a new overload.
* [QTBUG-12186] Fixed order of values with positional binding.
- QSqlTableModel:
* [QTBUG-38509] Fix failure to refresh in selectRow()
- QIBASE:
* [QTBUG-37508] Fix QByteArray memory corruption in QIBaseDriver::open().
* Support for prepared queries in numRowsAffected().
- QODBC:
* [QTBUG-37831] Fix access of tmpStorage in QODBCResult::exec().
- QSQLITE:
* Creating temporary databases is now possible
* Empty database name now opens in-memory database.
QtTest
------
- Added test duration to xml output. When running tests with xml output a
new tag of the form
<duration msecs="123"/> is added to each test function and the test as a
whole.
- Added a CSV logging mode that is suitable for importing benchmark
results into spreadsheets. This can be enabled by the -csv option on the
command-line. The CSV logging mode will not print test failures, debug
messages, warnings, etc.
- QtTest now prints an escaped version of QStrings that failed to compare
with QCOMPARE. That is, instead of converting non-printable characters
to question marks, QtTest will print the Unicode representation of the
character in question.
- Windows:
* [QTBUG-35743] Use correct UTF-8 encoding for XML test results on
platforms with different console encoding.
QtWidgets
---------
- Accessibility:
* Fixed QTextEdit not reporting newlines to accessibility frameworks and
add editable text interface.
- QAbstractSpinBox:
* [QTBUG-5142] QSpinBox and QDoubleSpinBox widgets can now show the
group (thousands) separators.
- QColorDialog:
* Ensured QColorDialog::DontUseNativeDialog is respected when showing
the dialog.
- QDateEdit:
* [QTBUG-36692] Fixed incorrect appearance on OS X of QDateEdit with
calendarPopup enabled.
- QDrag
* Fixed Drag and Drop driven by touch-synthesized mouse events on
Windows.
- QListView:
* [QTBUG-4714] Fixed QListView ignoring the grid size for word
wrapping in icon mode
- QMdiSubWindow:
* [QTBUG-9933][QTBUG-27274] Fixed setWindowFlags() for QMdiSubWindow.
- QMenu:
* [QTBUG-20094] Enabled sloppy submenu mouse navigation.
* [QTBUG-36142] QMenu now correctly uses text color set by style
sheet for menu items on Windows.
* [QTBUG-36218] Fixed position of menu gutter on Windows when using a
custom widget action.
- QPlainTextEdit:
* Added find method overload using QRegExp
- QSpinBox:
* [QTBUG-3032] Fixed keyboard selection with multiple-character strings.
- QScrollArea:
* [QTBUG-36314] The setting for click position is now respected on OS X.
- QTextDocument:
* [QTBUG-33336] Added support for empty inline elements in block tags.
- QTextEdit:
* Added find method overload using QRegExp
- QWidget:
* [QTBUG-25831] Restored the Qt 4 behavior in the sequence of events
that are delivered to widget windows and their children when a
mouse double click happens: the second MouseButtonPress event from
Qt 5.0-5.2 is no longer sent.
* [QTBUG-33716] QWidgets embedded in QGraphicsProxyWidget are no longer
sent close events when the app is closed on OS X.
* [QTBUG-36178] Fixed an issue where stay-on-top widgets would cover
their own children on OS X.
- QWizard:
* [QTBUG-7484] Added NoCancelButtonOnLastPage option.
* [QTBUG-36192] Fixed frame when using Vista style/MSVC2012.
- Text support:
* [QTBUG-36444] Fixed off-by-one in the height of text background.
- Windows:
* [QTBUG-21371][QTBUG-4397] QWidget::restoreGeometry() now restores
maximized/full screen widgets to the correct screen.
****************************************************************************
* Compiler Specific Changes *
****************************************************************************
- Variadic macros are now enabled more liberally for gcc, clang, icc. If
you have warnings (because you e.g. compile with -pedantic), disable
them by -Wno-variadic-macros.
****************************************************************************
* Platform Specific Changes *
****************************************************************************
Android
-------
- [QTBUG-36074] Fixed crash on populating large combo boxes or menus.
- [QTBUG-36528] Fixed QDir::entryList() for assets scheme to no longer
skip the first file in the directory.
- [QTBUG-30652] It is now possible to define a splash screen which will be
visible until the first window is created.
- [QTBUG-33704] Sped up first time directory listing in assets by using
pregenerated entry list.
- [QTBUG-37738] Fixed font merging problem which caused e.g. missing
glyphs for Arabic numerals.
- [QTBUG-36025] Fixed a memory leak in the clipboard
- Fonts:
* [QTBUG-36789] Fixed support for Arabic text.
iOS
---
- Support for input methods added.
- Support for word completion and spell checking added.
- Support for QClipboard added.
- "Hide keyboard" gesture added.
- Keyboard input is now sendt as input method events instead of key events.
Linux
-----
- Systems with systemd may now pass -journald to configure to send
logging output to journald. Logging will still be sent to stderr for
interactive applications (run from a tty) or with QT_NO_JOURNALD_LOG
set to a non-empty value.
OS X
----
- [QTBUG-18980][QTBUG-38246] Use CoreText text shaping engine for
support of complex scripts. If required, the shaping engine used in
previous versions can be preferred by configuring Qt with
-no-harfbuzz. Alternatively, the QT_HARFBUZZ environment variable
could be set to "old".
Windows
-------
- Introduced experimental direct2d platform plugin for Windows. This
plugin shares most code with the current windows plugin, but
substitutes a direct2d-based paint engine for window backing stores
and pixmaps.
- QtWidgets / QFileDialog:
* Handled the case of having trailing spaces in a filename correctly so
if the filename ends up being empty that the parent path is used
instead.
- Windows Embedded:
* Fixed building issue when configuring Qt with -qtlibinfix
X11 / XCB
---------
- Qt now supports XInput2 smooth scrolling events
****************************************************************************
* Tools *
****************************************************************************
moc
---
- [QTBUG-33668] Fixed passing -D of a macro defined to something more
complex than a single identifier.
- QTBUG-36128:
* [QTBUG-36128] Fixed sign conversion warning in generated file.
qdbus
-----
- [QTBUG-36524] Fixed a bug that caused the qdbus tool to crash when
trying to display remote interfaces that had complex types without a
matching base Qt type.
configure & build system
------------------------
- Configure's -separate-debug-info option is now checked more strictly.
- Added configure [-no]-imf options for QNX.
- Added unsupported linux-libc++-clang and freebsd-clang mkspecs.
- Numerous configuration-specific build fixes.
qmake
-----
- QTPLUGIN will now be automatically populated with the plugins that are
typically needed by the used Qt modules.
- qmake will not create dependencies on system headers any more, provided it
detects the system include paths.
- Added DISTCLEAN_DEPS variable analogous to CLEAN_DEPS.
- Added function $$getenv() which is equivalent to using the $$() expansion,
but permits various qmake meta characters in the name.
- [MacOS] QMAKE_BUNDLEID_PREFIX is now recognized by the Makefile generator.
- [QTBUG-29939][MSVC2012+] Added Windows XP target support.
- [QTBUG-35570][VS2012+] Fixed bad ProgramDataBaseFileName.
- [QTBUG-38066][VS2010+] Fixed version suffix being appended to applications.
- [QTBUG-31185][VS] The PlatformToolset environment variable is now honored.
- [QTBUG-34781][Android] Fixed regression in "make install" on library projects
so they can be used inside subdirs projects again.
- [QTBUG-37113] Fixed creation of excessively long relative paths, which
would lead to errors with MSVC. Note that this does not fix all such cases.
qlalr
-----
- (Re-)added to Qt base. Added corresponding qmake feature file.
Caveat: the generated files are not scanned for dependencies.