Qt 5.13 introduces many new features and improvements as well as bugfixes
over the 5.12.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

https://doc.qt.io/qt-5/index.html

The Qt version 5.13 series is binary compatible with the 5.12.x series.
Applications compiled for 5.12 will continue to run with 5.13.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

https://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                                General                                   *
****************************************************************************

 - libwayland 1.8.0 is now required.
 - Code generated by qtwaylandscanner now includes wayland-client-core.h
   and wayland-server-core.h instead of wayland-client.h and
   wayland-server.h. This might break source compatibility for code using
   custom wayland extensions.

****************************************************************************
*                                Compositor                                *
****************************************************************************

 - [QTBUG-70662] Added QWaylandQuickItem::mapFromSurface which converts
   points in Wayland surface coordinates to points in QQuickItem
   coordinates.
 - Fixed a bug where xdg-shell popups were misplaced when devicePixelRatio
   was not 1.
 - QWaylandSurface::destinationSize has been added which returns the size
   of the surface that will be displayed on the screen in surface
   coordinates.
 - Fixed a bug where QWaylandSurface::inputRegionContains would return true
   for some points outside surfaces with buffer scale > 1.
 - Fixed a bug which caused ShellSurfaceItems for surfaces with buffer
   scale > 1 to move too much when resizing interactively.
 - QWaylandSurface::size has been deprecated. Use bufferSize or
   destinationSize instead.
 - Added support for linux-dmabuf-unstable-v1.
 - Added support for the viewporter Wayland extension.
 - Added a missing change signal for WaylandQuickItem.compositor.
 - Added deprecated support for the deprecated the wl_scaler extension.
 - Fixed a bug where virtual keyboard did not send Enter event to clients.

****************************************************************************
*                                QPA plugin                                *
****************************************************************************

 - The environment variables, QT_WAYLAND_CLIENT_BUFFER_INTEGRATION and
   QT_WAYLAND_SERVER_BUFFER_INTEGRATION, now takes precedence over what is
   communicated through the qt_hardware_integration wayland interface.
 - The private window decoration API method,
   QWaylandAbstractDecoration::startResize, now takes Qt::Edges argument
   instead of a wl_shell_surface_resize enum. This will break window
   decoration plugins written for older versions of Qt Wayland.
 - Shell integrations are now features that can be enabled or disabled at
   build time.
 - Clients now follow the keyboard key repeat delay and interval configured
   by the compositor.
 - Added support for fullscreen-shell unstable v1.
 - A window menu is now shown when the window decorations are right-clicked
   (if supported by the compositor).
 - Minimum and maximum window size is now supported with the xdg-shell and
   xdg-shell-v6 shell integrations.
 - xdg-shell (stable and v6) window geometry is now sent every time the
   window is resized.
 - Fixed a bug where window decorations were to small for for the content
   when QT_SCALE_FACTOR was set.
 - [QTBUG-54786] Fixed a bug where pasting from the clipboard would prefer
   ASCII over UTF-8, causing loss of special characters.
 - [QTBUG-68571] Fixed a bug where the DPI of bitmap cursors were not sent
   to the compositor, leading to the compositor incorrectly scaling the
   cursor up or down.
 - [QTBUG-68571] Fixed a bug where bitmap cursor hotspots were off when the
   screen scale factor was different from the bitmap cursor device pixel
   ratio.
 - Fixed a leak of wl_data_offers.
 - Cursors on high DPI screens are now scaled up if the cursor theme does
   not have an appropriate high resolution version.
 - Fixed a bug where QGuiApplication::screens() and primaryScreen() would
   return initial screens in the reverse order they were added by the
   compositor. QGuiApplication::primaryScreen() will now return the first
   output added by the compositor.
 - Fixed a bug where windows with an OpenGL Core context and window
   decorations didn't work.
 - Fixed a build issue where the platform plugin would not be built if the
   compositor wasn't build.
 - The non-blocking version of eglSwapBuffers is now used, if supported.
   This fixed a bug where minimized windows would block the event loop.
 - Windows that don't get frame callbacks from the compositor within 100 ms
   are now set as not exposed. This should stop most clients from rendering
   unnecessary frames to minimized or hidden windows.
 - Improved startup time by moving key Compose table parsing from startup
   to the first use (a key was pressed).
 - Selecting a module via QT_IM_MODULE now works as documented.
 - Fixed a bug where Ctrl + <some letter> did not work with non-latin
   keyboard layouts. Other shortcut sequences with non-latin keys not
   working also have been fixed now.
 - Fixed a bug where shortcuts with modifiers that change resulting key
   would not work as expected.
 - Added support for xdg-output-unstable-v1 version 2. This means
   QScreen::name(), will now typically return "VGA-1", "WL-1", "DP-2",
   "HDMI-A-1" and similar instead of "Screen25", "Screen26", "Screen27"
   etc. (on supported compositors).
 - Fixed a crash when closing multiple popups at once.
