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.
