aboutsummaryrefslogtreecommitdiffstats
path: root/dist/changes-5.11.0
blob: f7afe87eb7549368fb553f9000e12de19288760b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
Qt 5.11 introduces many new features and improvements as well as bugfixes
over the 5.10.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.11 series is binary compatible with the 5.10.x series.
Applications compiled for 5.10 will continue to run with 5.11.

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                             *
****************************************************************************

* QML module plugins used to be limited to type registrations in the
  primary module namespace in the virtual registerTypes() function.
  Module authors worked around this limitation by placing necessary
  internal type registrations into initializeEngine() that may cause
  memory leaks. Therefore this restriction has been moved and types in
  any (non-protected) namespaces can be registered in the
  registerTypes() function.

* In Qt 5.11 and newer versions, QML plugin modules are available with
  the same minor version as the Qt release minor version number. For
  example it's possible to import QtQuick.Window 2.11 or import
  QtQuick.Layouts 1.11 even though there haven't been any API changes in
  these modules for Qt 5.11, and the maximum possible import version
  will automatically increment in future Qt versions. This is intended
  to reduce confusion.

****************************************************************************
*                          Library                                         *
****************************************************************************

QtQml
-----

 - Qt Qml uses a completely new compiler pipeline to compile Javascript (and QML) first
   into bytecode and then JIT heavily used functions into assembly.
  * Lots of cleanups and performance improvement to the way function calls and Javascript
    scopes are being handled.
  * Improved performance of JS property lookups.
  * A new bytecode format that is very compact, saving memory in many cases.
  * significantly faster bytecode interpreter than in earlier versions of Qt, in many cases
    reaching almost the performance of the old JIT.
  * A new JIT that works on top of the bytecode interpreter and only compiles hot functions
    into assembly.
  * Overall test results show almost a doubling of the JS performance on platforms where we
    can't use a JIT (iOS and WinRT) compared to 5.10.
  * With the new JIT, JS performance is usually around 10-40% faster than in older Qt versions
    (depending on the use case).

 - The commercial only Qt Quick Compiler has been removed and replaced with a common solution
   that works in both the open source and commercial version of Qt. No code changes are needed
   for users of the old compiler.

 - Fix qmlplugindump to work correctly with shadow builds.

 - Fixed creation of QWidgets in QML.

 - Various fixes to the debugging bridge.

 - ListModel
   * Support assignment of function declarations in ListElement, to allow for
     models with actions.

QtQuick
-------

 - QQuickWindow:
   * [QTBUG-66329] We no longer synthesize redundant mouse events based on
     touch events that come from a trackpad which can generate mouse events.

 - Item:
   * [QTBUG-20524] Added a containmentMask property.  This allows any
     QObject which defines Q_INVOKABLE bool contains(const QPointF &point)
     (including a Shape) to mask the area of an Item that will be
     sensitive to mouse and touch events.

 - AnimatedSprite:
   * [QTBUG-36341] AnimatedSprite's implicitWidth and implicitHeight are
     now based on frameWidth and frameHeight, respectively. This means it
     is no longer necessary to explicitly size AnimatedSprite.

 - Image:
   * [QTBUG-66127] Support detection of suitable file extension.
   * Add support for ktx files containing compressed textures.
   * Add experimental automatic atlasing of ETC-compressed
     textures (can be enabled with QSG_ENABLE_COMPRESSED_ATLAS=1).
   * [QTBUG-67019] SVG images are now scaled up if the source size is larger
     than the original size.
   * [QTBUG-65789] SVG images are rendered with the correct aspect ratio
     when width or height is set to zero.

 - AnimatedImage:
   * Added a speed property.  It's also OK to set it to 0 to pause
     the animation.
   * There is now an example to demonstrate usage of AnimatedImage.
   * [QTBUG-62913] frameCount now has a NOTIFY signal to avoid binding warnings.

 - Path:
   * [QTBUG-62684] Add new PathAngleArc type.

 - Shape:
   * A containsMode property is added. If it is set to FillContains, then
     Shape.contains() returns true only within the visible bounds, so its
     Pointer Handlers also respond only within those bounds.

 - ShapePath:
   * Improved performance for complex paths.

 - Text:
   * [QTBUG-60328][QTBUG-67145] Fixed Text with ElideRight not being rendered
     when reparented.
   * [QTBUG-67007] Fixed non-integer scale factors with Text native rendering.

 - Pointer Handlers:
   * Added singleTapped and doubleTapped convenience signals to TapHandler.
   * PointerHandlers implement QQmlParserStatus, so that subclasses can
     have custom initialization in componentComplete() (just as Items can).
   * [QTBUG-65651] Restore 5.9 behavior: if an Item has no PointerHandlers,
     childMouseEventFilter() will not be called during post-delivery of
     an unhandled event.
   * TapHandler.gesturePolicy is now DragThreshold by default.
   * DragHandler with target: null no longer crashes.
   * [QTBUG-64852] DragHandler enforces its axis constraints even when
     the parent coordinate system changes during the drag.  For example
     the knob of a DragHandler-based slider inside a Flickable doesn't
     come out of its "groove" if you manage to drag the slider and the
     Flickable at the same time.

  - Loader:
    * [QTBUG-63729] Avoid evaluating bindings during destruction, to
      avoid some spurious errors.
    * [QTBUG-66822] When deactivating a loader, do not immediately clear
      its context.

 - Software renderer
    * [QTBUG-63185][QTBUG-65975] QSGLayer::grab now works correctly.
    * [QTBUG-66381] Fixed a crash when a Window has a QObject parent
      (such as Loader).
    * [QTBUG-65934] Fixed renering of rounded rectangles with floating point
      pixel device ratios.

  - Platform Specific Changes:
    * [QTBUG-67460] Fixed a problem with jumping back to the highlight
      while slowly scrolling a ListView on macOS.

QtQuickTest
-----------

 - [QTBUG-50064] Added QUICK_TEST_MAIN_WITH_SETUP macro to allow executing
   C++ before a QML test (such as registering context properties).

QQuickWidget
------------

 - [QTBUG-45641] Tab presses are now passed on to the root item to be
   handled first. When not handled by the root item, it will be handled
   like a standard QWidget.