| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In practice, deferring the execution of the delegates (until
accessed) means that the default delegate item does not get created
at all, when a custom control replaces it at construction time.
Button {
background: Rectangle { ... }
}
Before, such custom Button would never be faster than the original
one, because the default delegate was first created and then thrown
away at construction time. Originally, this was not considered a huge
problem, because the plan was to keep the default delegates so light-
weight that it wouldn't matter. However, then came the fancy styles
with shadows and effects and thus, heavier default delegates. There's
also a growing demand for more features, and the default delegates
are slowly getting heavier...
Now, after this patch, if you replace a heavy default delegate with
a light and simple custom delegate, the result is a much faster
control. For example, replacing Material style Button's background,
which has a shadow effect, with a plain Rectangle gives a ~10x boost,
because the default background with its heavy shadow effect is not
executed at all.
At the same time, deferring the execution of the default delegates
avoids troubles with asynchronous incubation, because we don't need
to destroy an object in the middle of the incubation process.
Task-number: QTBUG-50992
Change-Id: I2274bff99b9ff126d3748278d58d859222910c98
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-64065
Change-Id: Id77a85ce5b88c20795e9f7fe9d2ece974f46a315
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
|
| |
To make them correctly available in QML so that they also work as
signal arguments.
Task-number: QTBUG-64259
Change-Id: I5fa00871f96357d924661c4b8af323a0f1748c9d
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|
|
|
|
| |
Change-Id: Ic98b332c5e30104c4a3c74a873caafa9065d6b5d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
| |
The resource file gallery.qrc was removed, load from path instead.
Change-Id: I167c3f967f8a73bf0de9ffe1658c00970b3d8075
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickTextField wants to emit pressed(), released(), and pressAndHold()
signals not only on left, but on all mouse button clicks. Therefore it
explicitly sets accepted mouse buttons to all. However, the base class,
QQuickTextInput, has only been prepared to handle left (selection) and
middle (paste) mouse buttons. Don't pass right mouse button -only
events to the base class to avoid it clearing selection on right click.
Task-number: QTBUG-64048
Change-Id: I015820c78995cc8dd7cbeb16fca0f9b991040bad
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: Ibec1396de3e929a229e1550b8045d687aa5a513c
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
test_interactive() was iterating the entire rectangle 2px around each
indicator pixel by pixel and sending mouse clicks and touch presses +
releases at each coordinate. This resulted to a total of 845 mouse
clicks and 845 touch presses and releases. Select a few interesting
coordinates to reduce it down to 40 mouse clicks and touch presses and
releases.
Change-Id: Ie3439aae8481e019956c49d2d82067dac8741b8f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The problem was that QQuickContainer started already moving items while
QQmlObjectModel was creating items and QQuickRepeater was initializing
the order. Don't reorder items during the creation, but only after
component completion.
Task-number: QTBUG-61310
Change-Id: I13380c5ab6b3bddaad3fa03ef6fb028622b4cd11
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Tooltips are special popups that should not block hover, because it
conflicts with the typical condition for showing tooltips on desktop
platforms.
Task-number: QTBUG-63644
Change-Id: Ie974aed23a7df8e4b926bec5fe717cb909d15842
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Ensure that lastSavePath (now lastSaveUrl) is converted
to a URL correctly by constructing it from screenshotsDir
rather than screenshotsDirStr.
It was resolved as a qrc path previously.
Change-Id: I5ccdad6166b3927a149875b6ff89ff53c2440c05
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
| |
Disable hover to avoid unexpected changes.
Task-number: QTBUG-60480
Change-Id: I22fab5c95daa42f3c84437072bce49cac5c705af
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Start keeping track of the content size only after the component is
complete, to avoid creation time ping pong with content size updates
and content item resizing.
Task-number: QTBUG-62325
Change-Id: I4b75dc398d0b746dd7e0b04291270f47f91bb7e6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A destroyed button removes itself from a group, but because of the
workaround added for QTBUG-52358, there's a moment after clear() when
a button is removed from a group and before it is added back to the
group. If the button gets destroyed during that period, the group
ends up with a dangling pointer.
Task-number: QTBUG-62946
Task-number: QTBUG-63470
Change-Id: If994f87b221a7e77f56458866c4d132365c45d6f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I1c7e1a2b337e9d16bc6c9b098db08f29f1b9d1e6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: If9fc2bb41cf251af71479b25656240e0d3c238d8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I98f7081e94672a4454c33841934158ae82e9388f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I186b3ed95eda5178f861bc501be481c971641767
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
In item views, it can happen during incubation that a control doesn't
yet have a window associated when the parent item changes. Therefore we
must make sure to resolve the font when the window changes.
Task-number: QTBUG-63119
Change-Id: I890f70ae6faa232dcc2c094ccec02e76b371d2cb
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Function QQuickPopupPrivate::blockInput() has been overridden in
QQuickDrawerPrivate to accept events that occur while mouse/touch is
grabbed and events within drag area.
Task-number: QTBUG-59652
Change-Id: Icf4129e702a351b266ea9c4544830185c315fc37
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-62508
Change-Id: I8981968c02b65d4b005eb9b54b0228fd51a3abda
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
TextArea was not cleaning up its geometry change listener on the
Flickable it was attached to.
Task-number: QTBUG-62292
Change-Id: I31223d4fcf0b46235b18e8eb05bab686a32f5481
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
| |
Check whether a URL is relative and try to resolve that.
Change-Id: I6b0f7bca2011356aca5071d20dbd270eb5d115bf
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-62158
Change-Id: I0bcf5b02da6a3500e4324462d5f1249a6178c9fd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
~QQuickStackElement() emits QQuickStackViewAttached::removed(), which
may be used to modify the stack. Set the status first and make a copy
of the destroyable stack elements to exclude any modifications that may
happen during the loop.
Task-number: QTBUG-62153
Change-Id: I144acd693519e637b78f9a2d910e83da8f2d779e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The first touch point was blocked as appropriate, but the consequent
touch points were leaking through to other popups below Drawers' modal
overlay.
Task-number: QTBUG-61581
Change-Id: I1c3e28e3d25b7489c4a9b684107fd1b5158e1674
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a popup is closed, if there are multiple popups open, restore
focus to the next popup in chain instead of transferring focus to the
window content. This allows us to cleanup the custom focus handling
for sub-menus in dev. There is no more need to manually transfer focus
to the parent menu or to a sub-menu, but calling open() or close() is
enough and the focus is automatically transferred as expected.
Change-Id: I54406c7c6b8dd25af261e00ebb1ae00ccbea8b9f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
This fixes an issue where an application would crash when opening a
drawer by dragging it after an invalid edge value had been set.
Task-number: QTBUG-61843
Change-Id: Ie9b9ea0276b356b92927b858f2be355bfc042afb
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2c4b2d48 made Tumbler's wrap property follow its count by default,
but did so using updatePolish() to account for the use case where a
items are appended to the model in a for loop, as is done in
TumblerDatePicker.qml in Tumbler's auto tests. This (appending items
one at a time in a for loop) is not a good idea, but it should work.
The problem with the solution is that the delay means that the use
cases mentioned in the referenced bug report were broken.
This patch removes the delay. The recursion guards are necessary due to
the complex nature of TumblerView (and its non-standard use of the Qt
Quick views), as they prevent a memory leak in
QQuickListView::createHighlight() from being introuduced.
We now call deleteLater() to ensure we do not interfere with the views'
internal operations, and hence we also perform a few extra operations
at the same time as insurance (although it appears that simply
unparenting the internal view from QQuickTumblerView is enough to get
the tests to pass).
Task-number: QTBUG-61374
Change-Id: Ifef9e99522ea183b282ac862f346beaed12d0c09
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-61698
Change-Id: I46db5e9816190ac7afd6b671198dff11089bc4f3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Unlike with mouse events there's setAcceptedMouseButtons(), currently
there's no way to control whether a control receives touch events or
not. As a temporary workaround until QQuickItem::setAcceptTouchEvents()
has been added, we'll have to ignore touch events by hand.
Task-number: QTBUG-61785
Change-Id: I9a678570bfdd104ae32b4040ecef7625dcfd1aee
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Unlike with mouse events there's setAcceptedMouseButtons(), currently
there's no way to control whether a control receives touch events or
not. As a temporary workaround until QQuickItem::setAcceptTouchEvents()
has been added, we'll have to ignore touch events by hand.
Task-number: QTBUG-61785
Change-Id: I195d5ec3122ca0c7f2fade700b5b0c221472a243
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Unlike with mouse events there's setAcceptedMouseButtons(), currently
there's no way to control whether a control receives touch events or
not. As a temporary workaround until QQuickItem::setAcceptTouchEvents()
has been added, we'll have to ignore touch events by hand.
Task-number: QTBUG-61785
Change-Id: I8e3bdc3df1c3b28afaf8f80965569135e6a53120
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I00d4f6ed466e33be3f31b2cd0bcbae6707d84cb9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Remove the OnReleaseOutside close policy, just use the defaults from
QQuickPopup. This way menus won't get immediately closed on release,
when opened from an onPressAndHold signal handler.
Task-number: QTBUG-61608
Change-Id: Ifedd596aa0e71ac5f4211fa42e2ae499918df1b2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
It is supposed to test the ApplicationWindow attached properties on
Control, Item, and QtObject, but the Item instances were accidentally
made Control instances.
Change-Id: I6caf24b50fc0ffe97396364cf6b10b0ad653d9ed
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-60492
Change-Id: Ic1f380f44593d4a8681bff874789692d17b9edf7
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the JS Date constructor is passed a string in the ISO 8601 format
(e.g. "1970-01-01"), it is treatead as UTC, not local. Therefore, while
comparing the expected dates from the model, we must base the comparison
on UTC as well. Otherwise, the actual and expected dates may differ due
to the timezone difference. This issue was detected thanks to a new CI
setup that had accidentally UTC+8 timezone set.
Task-number: QTBUG-61535
Change-Id: I93cfce5a81d48dc859f002dcd6b59ddb0701911c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickMonthGrid lost its clicked() signal when multi-touch support was
added to QQuickControl, because QQuickControl now accepts touch events
and therefore QQuickMonthGrid no longer gets synthesized mouse events.
Re-implement QQuickControlPrivate::handlePress/Move/Release/Ungrab()
instead of QQuickControl::mouseXxxEvent() to gain multi-touch support.
Task-number: QTBUG-61585
Change-Id: Ic6fb2ea0b43b2b44beb0d8fdd3335a20f7c028f6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Move the emit inside QQuickSpinBoxPrivate::setValue() to avoid having
to store and compare the old value in so many places where the value
changes are interactive (mouse, keys, wheel).
Task-number: QTBUG-61426
Change-Id: I7f42fc09cafc403eb55a9748e3a93c2e9bf6df62
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ensure a suitable starting opacity for the inactive state transition.
When calling increase() and decrease() from key-handlers, as the docs
suggest, we flash the scrollbar by turning the active state on, and
then back off immediately. If there is an opacity animation when the
scrollbar becomes active (Material & Universal), the opacity animation
is stopped right away, because the state changes back to inactive. This
state changing trick worked only with the Default style, because it
changes the opacity without animating when it becomes active.
Change-Id: I4117de79c7145a710c0b6c43873ca2336b64e21e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When ComboBox::model is bound to a QObjectList property, the effective
type of the model is QVariant(QQmlListReference) and things work as
expected. When a similar QObjectList is constructed by hand in JS, or
returned from an invokable method, the effective type of the model is
QVariantList(QObjectStar) instead. In this scenario, we have to help
QQuickComboBoxDelegateModel::stringValue() to lookup the property that
matches the given textRole.
Change-Id: Ib44c912cf647e1cd98c5608436427d31caf80d97
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Skip non-focusable separators, and use a key focus reason
(Qt::TabFocusReason & Qt::BacktabFocusReason) to give the
items visual focus.
[ChangeLog][Controls][Menu] Fixed key navigation to skip separators.
Change-Id: I99affabc50703c7363ab8146e5ced9b45111de00
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
Repeaters are not part of the content model. Exclude them when
calculating the target index when the order of items changes.
Task-number: QTBUG-61310
Change-Id: Iaedd59288ed38e985a34ed8e1f515fdfb50d74e6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) First of all, Popup's QObject-parent depends on the way the Popup
is declared in QML, or what is passed as a parent to createObject()
when creating dynamic instances. For example:
- Popup becomes a QObject child of of the contentItem:
ApplicationWindow {
Popup { }
}
- Popup becomes a QObject child of the window:
ApplicationWindow {
Item {
Popup { }
}
}
- Popup becomes a QObject child of the specified parent:
ApplicationWindow {
Component {
id: component
Popup { }
}
Component.onComplete: component.createObject(overlay)
}
Since QQuickWindow and QQuickView did not set the QObject-parent
of their contentItem and rootObject, respectively, we had troubles
finding popup instances, because window->findChildren<QQuickPopup>()
and window->contentItem()->findChildren<QQuickPopup>() would produce
inconsistent results. This has been fixed in qtdeclarative commit
af6655885, so now we can use window->findChildren() reliably.
2) Popups inherit font from the associated window, not the parent item.
It was wrong to call resolveFont() in setParentItem(), because the
parent item might not change even though the associated window does.
The piece of code was moved to setWindow() instead.
3) QQuickPopupItemPrivate::resolveFont() did not propagate the
default font at all when the font was resolved before being associated
to a window.
4) After the above fixes had been applied, to ensure that popups always
inherit fonts and propagate them down to children as appropriate, we
got a new test failure in tst_controls::Popup::test_font() indicating
that there were extra font change notifiers triggered at creation time.
This was fixed by associating "top-level" popups with the window as
soon as they are appended to ApplicationWindow's default property,
instead of waiting until the popup is complete and then doing a lookup
in the parent hierarchy.
Task-number: QTBUG-61114
Change-Id: I6185c76d50835cb7a06b03db0a3ac9ddad64bdd3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
| |
Filter out macOS debug symbol (.dSYM) directories from the list
of available styles.
Task-number: QTBUG-60973
Change-Id: I5b9c3f4af946d44b1601f32bf7da699c29a86689
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickWindowPrivate::flushFrameSynchronousEvents() is a real trouble
maker in auto tests, because it keeps delivering spurious hover events
based on the last mouse position from earlier test functions and test
cases.
Task-number: QTBUG-61225
Change-Id: I5a8d40a01e3919033f74b26357505f2b514a3281
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, ComboBox's popup is sized vertically in this way:
implicitHeight: contentItem.implicitHeight
Adding an item to a ComboBox with an empty model and then opening
the popup results in the implicitHeight being used in the line below
(in QQuickPopupPositioner::reposition()):
QRectF rect(p->allowHorizontalMove ? p->x : popupItem->x(),
p->allowVerticalMove ? p->y : popupItem->y(),
!p->hasWidth && iw > 0 ? iw : w,
!p->hasHeight && ih > 0 ? ih : h);
An explicit height was never set on the popup, and ih (the
implicitHeight of the popupItem) is greater than 0. This is fine.
However, when a ComboBox's popup item grows large enough that it has to
be resized to fit within the window, its explicit height is set. The
problem occurs when the model is then cleared, as the implicit height
of the popup item becomes 0. So, while "!p->hasHeight" is still true,
"ih > 0" is not, and the explicit height of the popup item is used,
which is still the previous "let's fill the entire height of the
window" size.
To fix this, we bind the height of the popup to a different expression:
height: Math.min(contentItem.implicitHeight,
control.Window.height - topMargin - bottomMargin)
This ensures that the popup has a zero height when the ListView's
implicitHeight is zero (i.e the model is empty), and a height
that fits within the window in all other cases.
Ideally, we'd have a maximumHeight property that controls this, but
for 5.9, we have to fix it this way.
Task-number: QTBUG-60684
Change-Id: Ied94c79bb7b0e693be34e9c7282d991f6f704770
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-61109
Change-Id: I43d28a80ec1a46e836fa8a0f76ee65b0c1a24228
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\
| |
| |
| | |
Change-Id: Iba044084bf82f6b2b8ceba4aa2a80bdcf8fc38e0
|