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

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

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

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.

****************************************************************************
*                            Qt Wayland QPA Plugin                         *
****************************************************************************

- Fix show/hide: destroy the Wayland surface instead of attaching a
  null buffer. This fixes an xdg-shell protocol error, close animations,
  and problems with hide on some EGL drivers.

- Fix crash when trying to run on a compositor without outputs

- Fix bug that updated the Wayland cursor on every mouse move

- XDG shell: popup fixes

- Fix geometry when FramelessWindowHint is changed

- Allow running without any shell extension

- Multiple stability improvements


****************************************************************************
*                       Qt Wayland Compositor API                          *
****************************************************************************

QtWaylandCompositor is now officially released. It is not source or binary
compatible with the tech preview released with Qt 5.7. From now on the
normal Qt compatibility guarantees apply, so QtWaylandCompositor 5.8 will
be source and binary compatible with Qt 5.9.

- Add IVI application support for Qt-based compositors

- General API renaming
   * Rename isShm -> isSharedMemory
        and BufferType_Shm -> BufferType_SharedMemory
   * Rename inputDevice -> seat
   * Rename throttlingView -> primaryView
   * Rename isMapped -> hasContent
   * Rename bufferLock -> bufferLocked
   * Rename discardFrontBuffers -> allowDiscardFrontBuffer
   * Rename QWaylandView::attach() -> bufferCommitted()
   * Rename XdgShell -> XdgShellV5
   * Rename enableWSCursor -> windowSystemCursorEnabled
   * Rename signals:
      - createSurface -> surfaceRequested
      - createXdgSurface -> xdgSurfaceRequested
      - createXdgPopup -> xdgPopupRequested
      - createShellSurface -> wlShellSurfaceRequested
      - shellSurfaceCreated -> wlShellSurfaceCreated

- Major QML API Changes
   * View is removed from the Qt Quick API (use WaylandItem instead)
   * Changing keymap from QML is now supported
   * QWaylandDrag is now available to QML as WaylandDrag

- Major C++ API changes
   * New texture/buffer handling: bindToTexture() is replaced by
     toOpenGLTexture() which returns a QOpenGLTexture.
   * New and improved keymap support
   * New and improved mode support (monitor size/refresh rate)
   * Remove touch focus, allowing touch input to multiple clients
     at the same time
   * Add common QWaylandShell base class

- Behavior changes
   * sizeFollowsWindow now defaults to false
   * Touch events are now enabled by default for Qt Quick compositors
