| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In QQuickAbstractButtonPrivate::updateEffectiveIcon we need to
resolve the icon's color so that QQuickIconLabel knows which of
defaultIconColor and icon.color should win.
In both QQuickAbstractButtonPrivate::updateEffectiveIcon and
QQuickAction::setIcon, we need to unconditionally set the icon
and be more strict about when we return early.
This fixes the case where setting "transparent" as the icon color
wouldn't result in the original image's colors being used, but
would instead result in the style's default icon color:
Button {
text: "Original icon color"
icon.source: "heart.svg"
icon.color: "transparent"
}
Button {
text: "Original icon color (action)"
action: Action {
icon.source: "heart.svg"
icon.color: "transparent"
}
}
Task-number: QTBUG-87459
Change-Id: Ic490e3b37a8174b8c034b84a1ad551a78088e44d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Styles need a way to set the default icon color for controls. Until
now, that was done like this:
icon.color: "tomato"
contentItem: IconLabel {
icon: control.icon
}
This breaks the use case of e.g. an Action that sets its own
icon.color, because the icon property of the control always takes
precedence (see 146bc9517c56feda4eba34282d3cc53bd47b6267).
This patch adds a defaultIconColor property to IconLabel, which allows
styles to specify a color without overriding any potential action's
icon:
contentItem: IconLabel {
icon: control.icon
defaultIconColor: "tomato
}
If icon.color was explicitly set, it is used instead.
This does mean that overriding the contentItem will result in the
icon color being lost, but that is already the case for style
customizations in general.
All controls that set icon.color and using IconLabel to display their
icon are affected and are therefore adapted: Button, CheckDelegate,
DelayButton, ItemDelegate, MenuBarItem, MenuItem, RadioDelegate,
RoundButton, SwipeDelegate, SwitchDelegate, TabButton, ToolButton.
Add FlowPane to the shared folder of the baseline test and use it in
the tests that we touch. This fixes two issues:
- Using Pane as the background fixes text being invisible for some
styles.
- Using Flow provides the most space-efficient layouting of items now
that we have more than would fit in the old layout.
Task-number: QTBUG-87459
Change-Id: I455ce7202a46b7cfa7545650574e48ad72796675
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
When running with Liquid Glass, a TextField/NSTextField
have a more rounded appearance. As such, this patch will
tweak the focus frame radius accordingly.
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I7918e4de5ca71aea2b5c080e58341bb4fa53c147
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10 6.8
Change-Id: Idc096a96c3c6895b09a97b6ef2d644d8b0454b60
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a QEventPoint is clearly outside an item _and_ the bounds of all its
children, or is simply outside the bounds of an item that clips its children,
we can stop recursion, for purposes of QPointerEvent delivery, finding which
items/handlers are hovered, or which could control the cursor shape.
effectivelyClipsEventHandlingChildren() is also recursive, but at least
the result gets cached.
Task-number: QTBUG-140340
Task-number: QTBUG-115179
Change-Id: I085e38964de6993fa82ad3bd1256868125fde090
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The message is markdown, so actually use bullet points to show a list of
import paths. Previously, the single newlines got removed by Markdown
renderers (Markdown requires two newlines to render a newline) which
makes the list hard to read because all import paths were on the same
line.
Amends 299c449d4a250790f74942727a2c053989d8fe26.
Task-number: QTBUG-140915
Change-Id: I39fd4ddb653ba93bf92705788f51d378321015e4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
Qt Code should use file based includes.
Change-Id: I19a5b583c0df9c2c418c322ee1221afa1517f77b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It seems that the QML debugger framework cleanup does not happen
correctly when QApplication is leaked. Instead of running into the asserts
of QQmlDebugServerImpl::removeService and ~QObject (during destruction
of QQuickProfilerAdapter), warn the user with qFatal() about the
possible leak of QApplication.
Task-number: QTBUG-139131
Change-Id: If0497b3d4de4a1dec1bf968760d9fa79eb24683e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Iterate over all aliases that directly or indirectly points to the
required property, and check whether it is in the root file scope. If it
is in the root scope, than the required property can be satisfied by
setting the alias, and we shouldn't warn about unsatisfied required
properties int the QML component itself. Instead, we warn at the
place where the QML component is instantiated if the alias is not set.
Pick-to: 6.10
Task-number: QTBUG-141086
Change-Id: I9237d0afd2e427558ebc2b5cbc97beb5248ec6a3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use _qt_internal_collect_qml_import_paths() to collect import paths for
qmlls, qmllint and qmlimportscanner.
_qt_internal_collect_qml_import_paths was previously only used to
collect import paths for qmlimportscanner.
Adapt _qt_internal_collect_qml_import_paths to add the special qmllint
import path, and remove the duplicate code for qmllint and qmlls's
import path.
Fixes QTBUG-141242 where the path of the QML module is not in the import
path of qmlls when the QML module path is a subfolder of the build
folder.
Pick-to: 6.10
Fixes: QTBUG-141242
Fixes: QTBUG-141555
Change-Id: I9fa2cc091ca08be6df9da5d6cf4794c08d3dd0ce
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
| |
|
|
|
|
|
| |
Task-number: QTBUG-141543
Pick-to: 6.10
Change-Id: I72690a203d429a033160cc52c40c815de22356a9
Reviewed-by: Mats Honkamaa <mats.honkamaa@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: Ie2d73970be8ca81c1dc755a8684f8067c83f56bc
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
The usage is incorrect with invalid QML syntax, this patch fixes the
issue.
Fixes: QTBUG-141913
Pick-to: 6.10
Change-Id: I39dd9141a7058a8948e40718d8d75821aea8e0f0
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Qt Quick Controls lacked the ability for setting a default button in a
dialog button box. This is something that we support in QtWidgets, and
it makes sense to allow dialogs with a DialogButtonBox set as the footer
to decide if a particular button should be default, and have focus when
the dialog is opened.
With this patch, we're introducing two different ways for selecting a
default button.
The first is the usage of the DialogButtonBox::defaultButton property,
which works like this:
```
DialogButtonBox {
defaultButton: Button {
text: qsTr("Ok")
}
Button {
text: qsTr("Cancel")
}
}
```
In the snippet above, the Button that is set as default should both be
highlighted, and be the sub focus item of the DialogButtonBox.
However, since the standardButtons property can be used to dynamically
create buttons on the fly, we also needed an alternative way for picking
a default button.
In cases where standardButtons is being used to create buttons in the
DialogButtonBox, the new defaultStandardButton property can be used:
```
DialogButtonBox {
standardButtons: DialogButtonBox.Yes | DialogButtonBox.No
defaultStandardButton: DialogButtonBox.Yes
}
```
Something worth noting, is that the DialogButtonBox's contentItem is
typically a ListView. ListView have the ItemIsFocusScope flag set,
meaning that we need to give focus to both the ListView, and the default
Button.
In addition, the FontDialog and ColorDialog will now make the Ok button
default, and give it focus when the dialogs are opened.
The FileDialog and FolderDialog will continue to give the ListView
focus, since that's IMO more user friendly. The MessageDialog will need
new API to take full advantage of this new feature, which will be
introduced later.
[ChangeLog][DialogButtonBox] The DialogButtonBox now has two new
properties, defaultButton and defaultStandardButton. When one of these
properties are being used, a button set as default will be highlighted
and receive activeFocus whenever the DialogButtonBox gets focus. If
a DialogButtonBox is assigned as a Dialog's footer, it will also get
focus when the Dialog is opened. This means that a Dialog with a
DialogButtonBox as its footer, will give focus to a default button when
opened. If both of these properties are unset, the first button with the
AcceptRole will get focus, but it will not be highlighted.
Fixes: QTBUG-58246
Fixes: QTBUG-139352
Change-Id: Ic083410184dd63e0e790694f782a7a98c1dc8b6e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Move the code out of populateInstance to improve readability. Do not
try to unify the three similarily shaped loops to keep a readable diff,
and to avoid potential mistakes during refactoring.
Change-Id: Ia85652c14f794ec04764904fe6f04bf662ac08c4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
Pick-to: 6.10
Change-Id: I2667210311de7ee41db1d90fff71d4d4bb388ee2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickView::showView() return true if the platform is Wayland, this is
done before the position check. setPos and setFramePosition do not
work properly on Wayland causing all tests that are calling showView
to consistently fail due to this.
If the platform used is Wayland, showView return true before the
position check has been performed.
Fix the following failing tests: tst_HoverHandler::changeCursor,
tst_HoverHandler::deviceCursor,tst_HoverHandler::touchDrag
tst_HoverHandler::window
Change-Id: I18a4145643eb9cc76ce7fe55dd964904dcffa95e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Avoid crash when unloading invalid or partially loaded plugins
Amends 97fe92bd8ee55f4b6a44a052925b643366734f1d
Fixes: QTBUG-141911
Pick-to: 6.10 6.8
Change-Id: I3423c4c161cf499f84bbc0fa3bcdf4727a158562
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The change in a7349e6433d092398d76cafa5408753f06892cd7 reduced the
number of readbacks of reference objects by using connections to set
the dirty state only when necessary.
Establishing connections, however, comes at a cost and this introduced a
regression in the delegates_item_childrenRect QmlBench benchmark.
The mitigation introduced in this patch is to delay creating the
connection. When a reference object is created, it does not read or
create a connection but is simply marked as dirty. Only on a subsequent
read from within a different statement than the reference object's
creation's statement, does a connection get created.
This keeps the benefit of reducing unnecessary reads on objects that are
used multiple times while not spending too much on creating connections.
This brings back the benchmark to its original level of performance.
The referenceObjectChainReadsBackAsRequiredBasedOnParentSignals test
was changed to expect 8 reads instead of 4. Since all the accesses are
part of the same statement, no connection is ever created and more
reads are required than before.
The referenceObjectDoesNotFetchWithoutNotifyEventDateObject test is
reformatted to separate the assignment from the reads. Otherwise no
connection is ever created.
The referenceObjectDoesNotLeakAConnectionToTheDestroyedSignalOnANotifyBindable
test can be updated to expect 0 connections. With this change, we only
connect if the reference object is read again from a different
statement.
Amends a7349e6433d092398d76cafa5408753f06892cd7
Fixes: QTBUG-140757
Pick-to: 6.10
Change-Id: I5d02ec6266c51fbbe5f2e01405081dd5a167a833
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: I489b515388f9aba9250bfb05687331c92578ca57
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
| |
Change-Id: I71ba63cdde7c8f3e18b89a1a4e35da30202fd8e4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Laying out text is somewhat expensive, which is why the geometryChange
function tries to determine whether or not it's necessary.
However, when growing the width of multi-line eliding text, we would
over-optimize, and stop relayouting, when there would have been more
space for text.
This worked for single line text, since then the widthExceeded flag
would always be set to true, when the natural text width exceeds the
layouts width. However, we don't always set that flag for multi-line
text, thus it's possible that we skip the relayout step every time we
increase the width of the Item.
Fixes: QTBUG-140875
Pick-to: 6.10 6.8
Change-Id: I1f7758bed2c52044d0179a83d4bf4a774f22e4e3
Reviewed-by: Bror Wetlesen Vedeld <bror.vedeld@qt.io>
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Amends ddcafa0a51c65d86f6b5481f06fce5faeb75920d
Pick-to: 6.10
Fixes: QTBUG-141893
Change-Id: I509a58c14a7081d90917058b3952ef03bc855085
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This better reflects what it is and avoids naming conflicts with the
controls themselves.
Pick down to 6.9 (where QQuickContextMenu was introduced) to avoid
future cherry-pick conflicts.
Task-number: QTBUG-133556
Task-number: QTBUG-134903
Pick-to: 6.9 6.10
Change-Id: If0af26c5f16ee56cc909fcc66d1421109786343e
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
|
| |
syncResultedInChanges is not used since 27d674e9ec2 (v6.0.0-alpha1).
Change-Id: I13e413dd47b391c279d6fc8a15d23d728fef1e58
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass localPos to deliverHoverEventRecursive, deliverHoverEventToItem and
sendHoverEvent, so that deliverHoverEventRecursive() can merely
transform from its own coordinate space to each child's space by calling
itemToParentTransform(). That doesn't require up-the-tree recursion like
mapFromScene() does.
Apply the same trick to QQuickWindowPrivate::findCursorItemAndHandler().
Apply the same trick to QQuickPointerHandler::parentContains(local, scene):
now QQuickPointerHandler::parentContains(QEventPoint) also calls that
with both local and scene positions, which it already has, so this
likely optimizes some use cases outside of the hover and cursor cases.
But to make that work, we need to apply the same trick to
QQuickDeliveryAgentPrivate::eventTargets() as well, and now it needs to
localize the QEventPoint before calling the predicate.
Usually, global position is QGuiApplicationPrivate::lastCursorPosition;
but when no mouse events occur, only touch events, lastCursorPosition
may remain offscreen. So we use the QEventPoint::globalPosition when
possible; so it's useful to pass globalPos along to each of these
hover functions, so that deliverHoverEventToItem() can construct the
QMouseEvent with it, and sendHoverEvent() can construct the QHoverEvent
with it.
Also amends f5140d62082e9b06e0ca6c8e2175b5836286f52e: that looked rather
CPU-intensive to call several mapping functions. The test is retained.
Task-number: QTBUG-134099
Task-number: QTBUG-140340
Change-Id: I2c520d430e58ec7c00ada2207541b2936c7ae596
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since we early-return in a number of places, the condition needs to be
checked first. Also, remove the dead code that tries to implement
dynamic properties in object literals.
Amends commits f839171eefbba670536262fa3b847d24bfdc627b and
f47df45b4981d2d3eedfdbcf7574a7d2e2625627 which were mistaken in trying
to support this case.
Pick-to: 6.10 6.8
Fixes: QTBUG-141849
Change-Id: I34a6c47375b9e8fa1320259e3f335d304ce8e589
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Holding them in a local pointer makes it look like they leak. In actual
fact they are "owned" by the QVariant and assigned to a property later.
Also, check for model earlier. Apparently it can be nullptr if we're
dealing with a translation binding. In that case we don't hit the code
path that evaluates script bindings and therefore won't crash or leak.
However, the return statement after creating the QVariant is confusing
when trying to understand the ownership structure.
Coverity-Id: 897095
Coverity-Id: 897097
Change-Id: I770632d7e8aba7803ffe36363a6f9665873e3e61
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
| |
Change-Id: I7f236b614b3f84b37a9954389cd39ee2c5f621aa
Reviewed-by: Jerome Pasion <jerome.pasion@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Qt 5.15 for VxWorks had JIT and this change brings back this feature.
Task-number: QTBUG-133449
Pick-to: 6.8 6.10
Change-Id: I0ce487ca01e5578f47fdb5cddac9ea4e5804b857
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The client definitions should provide the same event types as the
service definitions.
Adapt the code for reading and writing the events from Qt Creator.
Change-Id: Ib714304a5b56f7d1bd9c1f53656554b9705f630b
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Give most things default significance, except for qjsnumbercoercion.cpp
which only contains documentation and qv4compileddata.cpp which gets
flagged as critical for being a data-parser. That's somewhat debatable,
given that we also excepect qmlc files to be as trustworthy as qml
files, but while that is not explicitly stated anywhere we might want to
err on the side of caution.
Pick-to: 6.10 6.8
Task-number: QTBUG-136194
QUIP: 23
Change-Id: I2987cea2453dcc3b828dc4ecf0ad22fdfd0d1000
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Pick-to: 6.10
Task-number: QTBUG-116296
Change-Id: Ic408673f79e12708c1594577cdeb37898caf2cb6
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
childContexts() returns the immediate child contexts.
findObjectRecursively() does the equivalent of objectForName() on all
child contexts recursively, returning the first non-null one.
findObjectsRecursively() does the same but returns the first non-null
result. We use BFS since that should return "closer" results when
iterating many contexts.
Fixes: QTBUG-140389
Change-Id: Ic34b5f4916768c0a0b8ed0e615d6f73c0aa5d06b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
These internal APIs have function documentation but are missing
class documentation. Adding an internal class documentation fixes
QDoc warnings.
Task-number: QTBUG-141697
Change-Id: Iecb289d39e34ddaa964fbe0a1404830cd2269caa
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
The event replay service can funnel input events recorded by the QML
profiler service back into the program. This way we can re-create the
exact behavior of a previous execution, including user input.
Task-number: QTBUG-141569
Change-Id: I069cf546f6c62b3abb7637fb064ebb1b3158129f
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Those are conceptually part of the QObject property cache, even though
they have no property data. So, if the object at hand does not have a
property cache of itself (e.g. because its fully dynamic), look up the
QObject one and use that.
Fixes: QTBUG-141704
Pick-to: 6.10 6.8 6.5
Change-Id: Ia333ac8c29f3797fb4b3ff37863b7c01fae8b076
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Joshua GPBeta <studiocghibli@gmail.com>
|
| |
|
|
|
|
|
|
|
| |
This ensures that QDoc will always link to the QML types page and not
to the corresponding C++ classes overview.
Change-Id: I60cd6475ecf87190101507e8508e5c9403a2ed90
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
To be able to list all QML types that inherit from Item, the Qt Quick
documentation needs to depend on the modules that rely on Item and other
QML types.
Task-number: QTBUG-130152
Change-Id: I15bd63a4cffa1f1852b78bdd23b1f06c66ef468b
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
-Mark internal functions with \internal
-Sometimes the solution is to have a \class command and marked internal
-Fixed whitespace issues when the new marking introduced them
Task-number: QTBUG-141665
Change-Id: I4f744aa94ca679da74b6c5e846e49a73346e2625
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Otherwise the old scroll bar can be visible in certain situations.
Extends 908aa77d16e00f2bccc0ddae0f8b61955c56a6a1.
Amends bb2a6c61777e2500fa00710c8bb752fa7b99f079.
Fixes: QTBUG-141229
Pick-to: 6.8 6.10
Change-Id: I5c8a02f90e68c42d21078b945cc1ea0c84066635
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: I795c2a35e2fec71d8dbe481ff334b9bcfdf6692a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Task-number: QTBUG-134798
Task-number: QTBUG-141556
Pick-to: 6.9 6.10
Change-Id: Ib2c674c96b21b7e93c0c9498df722cce5100d1ee
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Based on 42687caf7bc7496b838995f3fa68194ca8323da3.
If a user uses integer values for stepSize, from and to, they
most likely want the actual values of the handles to be integers, too.
Detect this condition, and store it in a new boolean member. If the
condition is met, we round the value in valueAt() (which, due to
floating point math, might not be an exact integer).
Fixes: QTBUG-141090
Pick-to: 6.8 6.10
Change-Id: If9507534db8fceb113e7426b5d46c6a023919d66
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Statistics are useful for profiling.
- count of total items ever created, obviously has many uses
- how many of those also have ItemExtra?
- how many times did we call the QTransform-construction functions
during the course of event delivery and for other reasons?
(This is one of the most expensive runtime costs at present.)
Task-number: QTBUG-140340
Change-Id: Id7443f0dcf9e038f446304f371e29bfa612fcad2
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to keep in mind that the value might have changed compared to
what we initially had when writing to a property.
In a future dev only change, we might rather make Binding a
(conditional) interceptor. That would avoid the read and comparison, as
we could track invalidations more directly. However, for picking back to
stable branches, we want a more minimal change in any case.
This requires us to do a similar conversion as QQmlProperty::write does.
Moreover, we need to take additional care for QQmlListProperty: There,
we would so far store a QQmlListReference, referencing whatever the
Binding wrote to the property. Instead, we need to create a snapshot of
the list. Moreover, we can't just store a QList of QObjects, as the
objects might get garbage collected. Instead, put them into a
QQmlListWrapper (in "owning" mode).
Amends 6a8478829747289cdcce2a6e9628b31cfd865f15
Pick-to: 6.10 6.8
Fixes: QTBUG-140858
Change-Id: I5d0ec4ee5f1a20a6ee4b5f1696f561b2638bd07e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We are going to need a way to store a copy of a QQmlList in Binding,
which doesn't reflect changes to the list. For that, we'll use
QQmlListWrapper in its "owning" mode. Add a helper function to make its
construction easier.
Pick-to: 6.10 6.8
Task-number: QTBUG-140858
Change-Id: Iee8af6d5d8f9772366f44f2a29cf90dbeada8823
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code working with lists backed by QQmlListProperty is quite
different than the one used to handle other types of lists. Separate the
two methods, which makes the function smaller, and which will allow more
focused unit testing later on.
Moreover, separate the code dealing with list properties in a part
dealing with the conversion logic, and a part which takes care of the
signal handling.
Task-number: QTBUG-140858
Pick-to: 6.10 6.8
Change-Id: Ie05cfca99fd0bdc668d320e1587abb68784ee1c2
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The callback can do pretty much anything, including another recursive
call to drain(). We need to make sure we're done with the container and
its iterators before we let that happen.
In the common case of maxPoolTime == 0, this is really easy. Simply swap
the container into a temporary and drain that. The case of maxPoolTime
!= 0 is a bit more complicated, but the algorithms library gives us a
way to do it with std::stable_partition and std::move that should be
good enough.
Fixes: QTBUG-102811
Pick-to: 6.10 6.8 6.5
Change-Id: Id67a9b9c2a7279536e5c2a315b139fcd8024e243
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need the object not only as singleton but also as member of the
global object. If there is a QJSEngine, parent it to the engine and make
it explicitly C++-owned. This way clearSingletons() won't delete it. If
there is no QJSEngine, there can't be any clearSingletons(). Therefore
we're safe in that case. The only known example for an ExecutionEngine
without a QJSEngine is the WorkerScript case, but since ExecutionEngine
is exported, it could be instantiated on its own in other Qt modules.
Amends commit 9dc7a22b212c18215942b9a4bfa17bd16dd5151b.
Pick-to: 6.10 6.8
Task-number: QTBUG-95788
Change-Id: I5a0aa35fadd552af208538ab2715efaff77f8f4e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|