Qt 5.9 introduces many new features and improvements as well as bugfixes
over the 5.8.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.9 series is binary compatible with the 5.8.x series.
Applications compiled for 5.8 will continue to run with 5.9.

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.

****************************************************************************
*                   Important Behavior Changes                             *
****************************************************************************

 - Added multi-touch support for buttons and sliders. It is now possible to
   touch-interact with multiple sliders and buttons at the same time.
 - By popular demand, Slider, RangeSlider, and Dial have been changed to
   report live value updates by default. This can be disabled by setting the
   "live" property to false.
 - [QTBUG-59920] Sliders and Dials now react immediately when using a
   mouse. Now the initial drag threshold applies only on touch, to avoid
   conflicting with flickables.
 - [QTBUG-58667] ScrollBar now reacts immediately when using a mouse.
 - [QTBUG-59629] Set explicit cursors on all interactive controls.

****************************************************************************
*                          Controls                                        *
****************************************************************************

 - AbstractButton:
   * Added support for multi-touch.
   * [QTBUG-57203] Added a toggled() signal that is emitted whenever a
     checkable button is interactively toggled by the user by using either
     touch, mouse, or keys.

 - ApplicationWindow:
   * [QTBUG-58932] The "data" property has been renamed to contentData, as it
     was documented. Notice that a "data" property still exists in QML
     Window, but is no longer overshadowed in ApplicationWindow.

 - Control:
   * [QTBUG-50992] Resolved the "Object destroyed during incubation" issue
     that occurred randomly when customizing built-in delegates.

 - ComboBox:
   * [QTBUG-53876] Added "editable" property.
   * Added "down" property.

 - DelayButton:
   * Added DelayButton that incorporates a delay before the button becomes
     activated, to prevent accidental triggers.

 - Dial:
   * Added a "live" property that determines whether the dial provides live
     updates for the "value" property while the handle is dragged.
   * Added support for wheel handling when wheelEnabled is set to true.
   * [QTBUG-57203] Added a moved() signal that is emitted whenever the dial
     is interactively moved by the user by using either touch, mouse, or
     keys.
   * Fixed handling of inverted wheel events (natural touchpad scrolling
     direction on macOS).

 - Drawer:
   * [QTBUG-53169] Added "interactive" property that specifies whether the
     drawer reacts to swipes. This can be used to make drawer a
     non-closable persistent side-bar.

 - Menu:
   * Fixed populating Menus with a Repeater.

 - Popup:
   * Allowed passing a Window as a parent when creating dynamic Popup
     instances using eg. Component.createObject(). Previously, Popup
     assumed the parent to be an Item, and would complain "cannot find
     any window to open popup in" if a Window was passed.
   * [QTBUG-58196] Allowed dynamic window changes after construction.
   * Fixed the CloseOnRelease close policy for non-modal popups.

 - RangeSlider:
   * Added a "live" property that determines whether the range slider
     provides live updates for the first.value and second.value properties
     while the respective handle is dragged.

 - ScrollBar:
   * [QTBUG-56569] Added snapMode property for incremental or discrete
     scrolling.
   * Added an "interactive "property. A non-interactive ScrollBar is visually
     and behaviorally similar to ScrollIndicator. This property is useful
     for switching between typical mouse- and touch-orientated UIs with
     interactive and non- interactive scroll bars, respectively.
   * Added a "policy" property, which holds whether the scroll bar is shown
     always/never/as needed (default).

 - ScrollView:
   * Added ScrollView. On touch, ScrollView enables flicking and makes
     the scroll bars non-interactive. When interacted with a mouse device,
     flicking is disabled and the scroll bars are interactive.

 - Slider:
   * Added support for multi-touch.
   * Added a "live" property that determines whether the slider provides live
     updates for the "value" property while the handle is dragged.
   * [QTBUG-57203] Added a moved() signal that is emitted whenever the
     slider is interactively moved by the user by using either touch,
     mouse, wheel, or keys.
   * Fixed handling of inverted wheel events (natural touchpad scrolling
     direction on macOS).

 - SpinBox:
   * [QTBUG-56837] Added inputMethodHints and inputMethodComposing
     properties for controlling the input method when using editable spin
     boxes.
   * [QTBUG-57203] Added a valueModified() signal that is emitted whenever
     the value of a spin box has been interactively modified by the user by
     using either touch, mouse, wheel, or keys.
   * [QTBUG-60356] Forwarded focus to the internal editor of an editable
     spin box.

 - StackView:
   * [QTBUG-56801] Added attached "StackView.visible" property that can be
     used to control whether items below the top- most item are kept
     visible.
   * [QTBUG-57266] Prevented pushing duplicate items.
   * [QTBUG-59034] Fixed pop/replace exit transition leak, sometimes leading
     to random crashes since a transition could have been left running in the
     background at destruction time.
   * [QTBUG-59098] Prevented StackView filtering mouse ungrab events to avoid
     MouseAreas being stuck in the pressed state.
   * [QTBUG-59634] Improved component creation errors by using the standard
     QML warning system that gives a context/location for the error.

 - SwipeDelegate:
   * [QTBUG-57192] Added "swipe.enabled" property to allow disabling of
     swiping.
   * Added swipe.open(side) method that can be used to programmatically
     open the side item on the specified side, which can be either
     SwipeDelegate.Left or SwipeDelegate.Right.
   * Added swipe.opened() and swipe.closed() signals, which are emitted
     when the delegate has been opened or closed by swipe, and the
     respective transition has finished.
   * Added a swipe.transition property that holds the transition that is
     applied when a swipe is released, or swipe.open() or swipe.close() is
     called.

 - SwipeView:
   * [QTBUG-56031] Added "orientation" property.

 - TabBar:
   * [QTBUG-57858] Added contentWidth and contentHeight properties that are
     automatically calculated based on the total size of the tab items, but
     can be manually overridden if desired. This fixes an issue that TabBar
     was not able to reliably calculate an implicit size, and could in
     certain scenarios enter an infinite loop due to a circular dependency
     between the items' sizes and the tabbar's size.

 - TextArea:
   * [QTBUG-55999] Fixed the horizontal alignment of the placeholder text
     in right-to-left UIs.
   * TextArea has been made to work inside ScrollView, providing necessary
     scroll bars out of the box.

 - TextField:
   * [QTBUG-55999] Fixed the horizontal alignment of the placeholder text
     in right-to-left UIs.

 - Tumbler:
   * Added a "moving" property that describes whether the tumbler is
     currently moving, due to the user either dragging or flicking the
     tumbler.

****************************************************************************
*                          Styles                                          *
****************************************************************************

 - Added support for a QT_QUICK_CONTROLS_STYLE_PATH environment variable,
   which can be used to specify lookup paths for Qt Quick Controls 2
   styles. This allows device manufacturers and Linux distributions to
   specify a system-wide style installation folder that may be located
   outside the Qt installation tree.
 - Added support for a QT_QUICK_CONTROLS_STYLE_CONF environment variable,
   which can be used to override the default location of the Qt Quick
   2 Controls configuration file (:/qtquickcontrols2.conf).
 - QQuickStyle:
   * Added availableStyles() method that returns the list of available
     built-in styles.

Default
--------
 - Visualized RangeSliders's range.

Material
--------
 - [QTBUG-58797] Fixed cursor visibility for read-only editors.

****************************************************************************
*                          Platform                                        *
****************************************************************************

 - Menu:
   * Fixed sub-menu handling when using the Qt Widgets fallbacks on
     platforms that do not support native menus (Windows, for example).
