| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
The example snippet only shows how to lay things out; since
TableModel doesn't support declaring header data from QML yet,
we also can't show it.
Change-Id: Iaf1c4fd39a23be7271d382d743dc30ac459e37cb
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
[ChangeLog][Controls] Add HorizontalHeaderView and VerticalHeaderView.
They are controls associated with TableView. Support flicking synchronization
Support default, fusion, imagine, material and universal delegate styles.
Fixes: QTPM-1300
Change-Id: Ie3f913dd616cda0d4e5a22a3d95baf71692370fe
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
tests/auto/controls/data/tst_combobox.qml
Change-Id: I8471cdac4397f77a8e58140d58c6b50d3c437928
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a StackView has an item A as the current item, calling
replace(B) and then replace(A) would result in A being hidden
when all transitions were finished.
When an item is finishing its transition, we can check to see
if that item exists in the stack (i.e. was pushed while it was
transitioning), and if so, don't hide it.
The patch is based on the one from Anthony Groyer.
Fixes: QTBUG-57267
Change-Id: I441559c54a35c577261074bc7f0c923aeb3ca330
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the user enters text into an editable ComboBox that matches
the text of an entry in the model, and then tabs out to another
item, the currentIndex should be changed to that entry.
This brings the behavior of ComboBox in line with QComboBox.
Change-Id: Ibb1e201a503704681ebcbc7135d1964cc1f6bbca
Fixes: QTBUG-78885
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This can happen when e.g. calling clear() in Component.onDestruction
in response to a pop() call.
The patch fixes the crash by warning and returning early.
If users really need to do this, the clear() call can be delayed:
Component.onDestruction: {
Qt.callLater(function() { stackView.clear(StackView.Immediate) })
}
Change-Id: If3cf07495bb34b96089522f44c36976bd6c62492
Fixes: QTBUG-80353
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Detect HoverEnter events by filtering the mouse events of child items,
and respond by clearing any hovered handle.
Change-Id: Ice7e7fe3cc4c9224064c2384cd832e4a7d91c4da
Fixes: QTBUG-79846
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Check if the user has set Accessible.name before setting it to the
control's text/title/etc.
Fixes: QTBUG-66583
Change-Id: I8b2c8ab3f8a8ae8e76c8e6a241260b7f90eca254
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Allows configuring the selectByMouse property of the underlying
TextField for editable combo boxes.
Named selectTextByMouse instead of selectByMouse to avoid confusion
with selection of the items themselves.
[ChangeLog][Controls][ComboBox] Added selectTextByMouse property.
Change-Id: I852e4cd44ebe6b2a1ed2535513ea2fc35cbe0a32
Fixes: QTBUG-71406
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Icb923b10d2b6c524ebaa8b38c7979b780e3582d4
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The warnings were about:
- Undocumented function parameters
- Instances of \instantiates that us an internal class
- A few link issues
Task-number: QTBUG-79827
Change-Id: I60094279c7da6bc446b5c63b7b4924b71cee4672
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a focused Popup exited, it will try to transfer focus state to
next Popup in chain or other item. However if there is an unfocused
Popup exiting simultaneously, the focus state will be transferred to
unfocused Popup, and this will cause loss of focus state since an
unfocused Popup won't transfer its focus state to next Popup(or item)
Fixes: QTBUG-79464
Change-Id: Ic06bd5a3616c8afbce449266e6fc24d2d54059d9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Up until this patch, we've always deleted "old" items when a new one is
assigned. For example, the style's implementation of contentItem will
be destroyed here as it is not accessible by the user and is no longer
used:
Button {
contentItem: Item { /* ... */ }
}
This was especially important before the introduction of deferred
execution, as the "default" items would always be created, regardless
of whether the user had overridden it with one of their own items.
By deleting the old items, we free unused resources that would
otherwise persist until application shutdown (calling gc() does not
result in the items being garbage-collected, from my testing).
Although this has largely worked without issues, deleting objects
that weren't created by us in C++ is not supported. User-assigned items
can be created in QML (with JavaScriptOwnership) or C++ (with
CppOwnership), and it is up to the user and/or the QML engine to
manage the lifetime of these items.
After the introduction of deferred execution, it became possible to
skip creation of the default items altogether, meaning that there was
nothing to delete when assigning a new, user-specified item. This
requires that no ids are used in these items, as doing so prevents
deferred execution. Assuming that users avoid using ids in their items,
there should be no unused items that live unnecessarily until
application shutdown. The remaining cases where items do not get
destroyed when they should result from the following:
- Imperative assignments (e.g. assigning an item to a Button's
contentItem in Component.onCompleted). We already encourage
declarative bindings rather than imperative assignments.
- Using ids in items.
Given that these are use cases that we will advise against in the
documentation, it's an acceptable compromise.
[ChangeLog][Important Behavior Changes] Old delegate items (background,
contentItem, etc.) are no longer destroyed, as they are technically
owned by user code. Instead, they are hidden, unparented from the
control (QQuickItem parent, not QObject), and Accessible.ignored is
set to true. This prevents them from being unintentionally visible and
interfering with the accessibility tree when a new delegate item is
set.
Change-Id: I56c39a73dfee989dbe8f8b8bb33aaa187750fdb7
Task-number: QTBUG-72085
Fixes: QTBUG-70144
Fixes: QTBUG-75605
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This mirrors the behavior of QQuickOverlayPrivate::addPopup
While this might not be an issue in practice, as removeOne should fail
nevertheless, this avoids a warning from UBSan and should have only a
negligible performance impact.
The warning appears for instance in the (otherwise unrelated) example
from bug QTBUG-80070:
qquickoverlay.cpp:258:63: runtime error:
downcast of address 0x55d6e1b34860 which does not point to an object of
type 'QQuickDrawer'
0x55d6e1b34860: note: object is of type 'QQuickPopup'
Change-Id: Ic51979ad25e864151245b6d47c733696a099bde8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
It is being deprecated.
Change-Id: I69effb678ee29d9c98bdd51dc898845869211bcf
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I36a4d6043e00d97dc98cc9c77aa294a058574f47
|
| |
| |
| |
| |
| |
| |
| | |
q_ptr isn't used any more
Change-Id: Ib73b8310c13b9b0cca9b0b277b66bef444ceeda2
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I932a1b1606975265e6affd50e161e58737404a0d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Don't unset the hovered flag only to potentially set it again.
- Generally simplify the code.
- Move it into a new updateHoveredHandle() function so that
follow up patches can call it from other places.
- Add more logging to debug hover issues.
Change-Id: Iaf06cfe1f556a3f30bd0e883ef504b3df2dbc8e2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |\
| | |
| | |
| | | |
Change-Id: I2e33f9f4f508b98c26659574135fba9ff721d53b
|
| | |
| | |
| | |
| | |
| | |
| | | |
Fixes: QTBUG-79929
Change-Id: I153684fa9c4e40d220986391671b0945b66393e1
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ib14b8c77cefe7aaf5b11483d9a30b2ef05314598
|
| |\|
| | |
| | |
| | | |
Change-Id: I551670d92af2bc96d5d8b8724bf5b280e94498c7
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the font is resolved, if the font does not have families set then
it will set it to be the family to ensure that it has the right
precedence. Therefore we need to reset the families setting so that it
does not act like a font has changed after being resolved when it really
hasn't.
Fixes: QTBUG-79790
Change-Id: I03c6f1456dbe5f136181b1c3a0e22fdc0fa66679
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: Ibf7cf09570e73ad2f314e9ce7acf1c766ac3f332
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If closePolicy of Popup is set to CloseOnEscape and the Popup is
completed, shortcut will register to QGuiApplication to let Popup
respond to Escape key. However if Popup is set to visible in creation,
even if we set closePolicy to CloseOnEscape, the shortcut won't be
registered.
[ChangeLog][Controls][QQuickPopup] Fixed the issue that Popup doesn't
respond to CloseOnEscape if the initial value of visible is true
Fixes: QTBUG-79326
Change-Id: I90c6805e2b4d567a6e0d33d43a75fedcfc5416b3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
SplitView's contentItem is lazily created whenever contentItem() is called.
When adding regular, standalone items, they will go through
QQuickContainer::addItem(), which eventually calls contentItem(). This case
works fine.
Repeaters, on the other hand, call setTransparentForPositioner(true), which
QQuickContainerPrivate::contentData_append() checks for, and instead of calling
addItem(), reparents the Repeater to effectiveContentItem() with this line:
item->setParentItem(effectiveContentItem(p->contentItem));
If this happens before the contentItem is created, then the Repeater has no
parentItem and won't generate any items. So, instead of using the contentItem
member directly, call contentItem() to create it if it doesn't exist.
Fixes: QTBUG-79302
Change-Id: I258f7420d2fea843ed045d569f80e92fe1f507d2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a popup is not modal, all the application's main content can still
be interacted with, therefore should still be possible to navigate it
with tab. This issue is particularly evident with Drawer, also commonly
used as a sidebar, in which tab navigation should always work.
Fixes: QTBUG-79501
Change-Id: I0e8ad2e1abe57b9617c6316efbfe2f296c91b592
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
(cherry picked from commit 3358362e61ef96b3922a438d0806561285c49230)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Now that we can call stringValue()/variantValue() without having to
call object() first (see 67ef2583), we get huge performance gains and
can remove a lot of the code added in a392194.
Fixes: QTBUG-78858
Change-Id: I434d3a9d06c020545b5d2cf6731cb5a030418b71
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ida6e83517802b1e970f755b2e2128b77f08a8d11
|
| |\|
| | |
| | |
| | | |
Change-Id: I5da24592eb292ef4f430d734fec234166ce6e1e3
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In most cases, getContentItem() will create a new content item when
called. In addition, its only responsibility is to return the content
item, not set it as the control's new contentItem;
QQuickControl::contentItem() does that.
Instead, QQuickContainer should simply call contentItem().
Change-Id: I1b8cb57f9f7b9e56074e99bed20ce5bcac70e1a6
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Don't return early before restoring the ArrowCursor shape.
This is not testable in QML due to QWindow's cursor API not being
available there.
Task-number: QTBUG-79302
Change-Id: Idb59d9cfbf04fc12ebe0adfbb7285ae7155e195d
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When adding new MenuBarItem to MenuBar, MenuBar will first check the
Menu pointer in MenuBarItem and then connect the Menu's signal [aboutToHide]
to MenuBar's slot [onMenuAboutToHide] to unhighlight the MenuBarItem.
In case of adding dynamic Menu, this operation will be performed before
setting new Menu to MenuBarItem. So the Menu pointer in MenuBarItem is
null, and the connection will not be performed.
[ChangeLog][Controls][QQuickMenuBar] Fixed issue with dynamically menu bar
items not losing their highlight when their menu was dismissed.
Fixes: QTBUG-77306
Change-Id: Ibe987462505f65747b4290b3c206e9dfbcbbef57
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Check for -1 when calling handleIndexForSplitIndex().
Change-Id: I81021b64265ace0c47269ea54e538a2725c84b79
Fixes: QTBUG-79270
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Preparing for the extraction of QGuiShortcut, the shortcut
feature will changed to follow the convention of using
QT_REQUIRE_CONFIG(shortcut) in the affected class headers.
Add the required exclusions to prevent compile errors
when disabling shortcuts.
Task-number: QTBUG-76493
Change-Id: I726239a6bcf1974616edc604ffc7ae4138db833a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I1765ac71243de0a9bf9b49e88332faa98d1745e6
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I25813bc151347f69d4dbd9f61729300626be763f
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
f4623123 introduced a performance regression by calling
delegateModel->object() twice:
if (componentComplete) {
updateCurrentText();
updateCurrentValue();
}
We can avoid this by introducing versions of these functions that take
the delegate model object as a parameter in order to cache it between
calls.
Change-Id: I5f9041a8ff00b53e04d759f38677bd87c748f8d1
Fixes: QTBUG-76029
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |\|
| | |
| | |
| | | |
Change-Id: I53fc18c168daff6dfb504e5a64e20570de7d24ac
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QQuickPopup connects its parent item's (MouseArea, in this case)
windowChanged() signal to QQuickPopupPrivate::setWindow(). It does this so
that:
1) QQuickOverlay can keep track of all of the popups that it manages.
2) Fonts, palettes and locales can be resolved.
3) If the QQuickPopup component has completed loading and the popup is visible
with a valid window, start the enter transition.
The problem arises only when using a very specific item hierarchy:
Window {
width: 640
height: 480
visible: true
Item {
anchors.fill: parent
Item {
anchors.fill: parent
ColorOverlay {
source: parent
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
ToolTip.visible: containsMouse
ToolTip.text: "ToolTip text"
}
}
}
}
When the window is closed and hence begins to be destroyed, the following events occur:
- QQuickWindow's destructor is called.
- The window's root item (QQuickRootItem) begins destruction.
- QQuickOverlay is destroyed.
- QQuickWindow's destructor is done, so the QWindow and then QObject
destructors are called.
- The QQuickItem destructor for the outer Item is called.
- The child items of the outer Item have setParentItem(nullptr) called on them,
one of which being the inner Item.
- The inner Item's setParentItem() function calls derefWindow(), which in turn
calls derefWindow() on its children. One of those children is MouseArea.
- Since the MouseArea's window is deref'd, it emits the windowChanged() signal.
MouseArea is the parentItem of the popup, so its windowChanged() signal
causes QQuickPopupPrivate::setWindow() to be called.
- setWindow() tries to remove the popup from the old overlay, which has already
been destroyed.
One approach I tried involved using QQuickOverlay::itemChange() to remove all
of the popups (via setWindow(nullptr), to ensure that their window pointer is
nullified), since that was called much earlier than the windowChanged() signal
is emitted. However, this still resulted in a heap-use-after-free in the same
place when running the newly added setOverlayParentToNull() test.
I also tried removing the popups in QQuickOverlay's destructor, but this
resulted in another heap-use-after-free (when accessing a popup in the
destructor) in tst_QQuickPopup::Universal::visible().
The remaining options were: store the window in a QPointer or return early in
overlay() if the wasDeleted member of the window was true. Using QPointer
seems like it would catch more issues than a single check in overlay(), so I
went with that.
Fixes: QTBUG-73243
Change-Id: Ieb5ce26dd76d45771d28297031ec43e27d958b5b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
by applying the passed timeout value prior to re-starting the timer
Change-Id: I27953dbb4781b5cb0c2039d56faa56f3c000206f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use the position of the item and the currentItem in the calculation
in order to get reliable results. This fixes the displacement being
off by a small margin, which increased as the delegate height became
smaller.
Fixes: QTBUG-66799
Change-Id: Ieca5033fb4c0ed62f5965a21fcab7aa558bd40e6
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ia0dea6060be7ffd1c4a16348f166e7cde7ef2df2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
These were forgotten in f462312365d4955fc82b247b72f84e1c77d8104d.
Change-Id: If0415c9aab9555e14ee222aaa667ca1233ab4405
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I61bff0de1d7f1ee4d73612af07cbac8d7400b534
|
| |\|
| | |
| | |
| | | |
Change-Id: I34f3fa5e3cd2ebb0ed8f7d4e6d5ed6f66422a48d
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the x/y position of background depends on the height/width of
background and these values are not constant, the if statement in
the method resizeBackground() will always pass. And since
`resizingBackground` guard wasn't checked, any geometry change
will always call resizeBackground() and then call
themself recursively (via the change listener),
that means the height/width of background will
always be reset, no matter what value you set.
Another part of the issue was in determining the extra bits too late:
in case the background gets parented by the flickable, the new child
caused the flickable to re-calculate its metrics and thus resize
the background *prior* to remembering if it has w/h set.
As a side effect, this fix also brings the possibility to reset
previously set w/h to get the default background sizing behavior.
Inspired by da06da57002b64cf4bcde0ca708b3275a5f919ae
[ChangeLog][QtQuick][QQuickTextArea] prevent changing size
of background recursively in construction
Fixes: QTBUG-76369
Change-Id: Ide51ec1ebab63605ae3bfcc10a76a28be960ef36
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit da06da57002b64cf4bcde0ca708b3275a5f919ae.
Reason for revert: the change removes symptoms leaving a cause unfixed
Change-Id: I0a91409230c521da73ed53e2a00a4ccd8dca7335
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Idaf385d12ca9388c0bb0b3f8a47c8e75c620b7eb
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|