| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Change-Id: Ib491000bf2751f24e3dc635958bdf997193c225e
Fixes: QTBUG-76077
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|\
| |
| |
| | |
Change-Id: I1ec3d930d4131ba6d1de687250c0f4f698946af4
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Short version:
There are currently two problems with MenuItems:
- Mirrored MenuItems don't fill the Menu's available width.
- MenuItem does not fill the Menu's available width when changed
after Component completion.
This patch fixes both of them by listening to geometry changes in both
the contentItem and individual menu items, and setting the explicit
width of those menu items when either changes.
Longer version:
The first problem can be seen whenever the MenuItem's implicitWidth
changes:
- QQmlEngine::retranslate() is called, causing all bindings to be
re-evaluated
- The MenuItem's font size changes
- The MenuItem's icon size changes
- etc.
We fix this by making Menu listen to the width of each of its MenuItems
and call resizeItem() if it doesn't have an explicit width.
The second problem can be seen when e.g. resizing a Menu to account
for new items that are wider and hence require more space.
This can be fixed by listening to width changes in Menu's contentItem,
which was actually done in earlier versions but (probably accidentally)
removed in 482ecb0f.
I had tried to solve both issues by setting the explicit width of
MenuItem to the width of its Menu, or undefined if it has none
(which means it reverts to its implicit width). However, this does
not account for e.g. MenuSeparator and custom items that can be added
to Menu - they should also have their width fill the Menu automatically
if they don't have an explicit width set.
Change-Id: I95dd0da0919a1e297f2e2030da746ff1f1a17644
Fixes: QTBUG-75051
Fixes: QTBUG-75142
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Idecee26bcae178ed294c062819f55e12a65af37d
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ibde952a165c9e0fb40133ce554e90ba35c93feee
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ibf39232616ea6ef67242b70011aa683ce8dc0b4f
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Connect to the QQuickAccessibleAttached::increaseAction() and
QQuickAccessibleAttached::decreaseAction() signals.
Change-Id: I9d6b37ac68d8790edcb3d4d72f155ec8511cabe2
Fixes: QTBUG-75072
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I02ebf4277142ef426194da0992b3348bd3c83998
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ice7d2ed56c85521a946b218d84087b255d3613ae
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The ComboBox popup should be closed when the ComboBox loses focus, but
not if the control gaining focus is the popup itself. While all the
styles implemented in this module implement the ComboBox popup as an
unfocusable window and handle all the keyboard events in QQuickComboBox
itself, the developer can choose to replace the popup with a custom
implementation, which might need the keyboard focus.
Fixes: QTBUG-74661
Change-Id: I838ab9cb697df63ea2099e68f1ae99eadb06be08
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Mention what happens if its contentItem has no implicit size and only
one child item.
Change-Id: I646ca2baad89ac195836268b14108b43beaec2bf
Fixes: QTBUG-69096
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-74902
Change-Id: I3f77459028de48729bb78353d8d95e92c7fc98f6
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We also need to update the hovered state of each indicator when
the mouse is moved while pressed, not just when we get hover move
events.
Change-Id: I6fa71344fd540f648683958e5804ae735523e72d
Fixes: QTBUG-74688
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
This amends 1693a19fd557c857ef4f43ab303ea1056790481e
Change-Id: I1c23d8a859e2cc2b878ddf2b6e7df35755abde22
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
This amends 1693a19fd557c857ef4f43ab303ea1056790481e
Change-Id: I70ef68de56405eb705d1c79be4eed8925def319a
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I5b112e0e4021191c387da86bb5b0477fe0c4da30
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Although the doc project is named QtQuickControls,
the repo is still called qtquickcontrols2 and the
exported headers are installed under
QT_INSTALL_PREFIX/include/QtQuickControls2. By default,
Qdoc tries to look for the headers in a directory that
matches the doc project name, which is not the right
include directory in this case.
Change-Id: I77889fe35c028a2fc903d49b571a564c57326c21
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I3a26f24ad16f6330715ce62151895f28e4b856d3
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Make ItemDelegate respect highlightedText
- Change ItemDelegate's highlightedText palette role from white to
almost black (i.e inversion of "light" which is 0xFF090909),
so that text shows up against a highlighted background.
This also allows easily switching ComboBox to a dark style via palette
customization.
Fixes: QTBUG-72786
Fixes: QTBUG-74678
Change-Id: I5ad0d86de112f869edf0488d06bb308cdc900363
Reviewed-by: Massimo Callegari <massimocallegari@yahoo.it>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I37f9f88a11946d5d67935c682273eb0aa8593f9b
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When two buttons' roles are equal, the code would fall back to
comparing the buttons' memory addresses. This leads to random results,
which are especially noticeable on Windows and with release builds.
This patch fixes the issue by instead returning false if the roles
are equal. This still satisfies the "comp(a,a)==false" requirement
of strict weak ordering:
https://en.cppreference.com/w/cpp/named_req/Compare
The patch also changes the sorting algorithm used from std::sort()
to std::stable_sort(). Although it doesn't appear to be necessary from
the testing that I did, it is good to ensure that the order of equal
elements is maintained.
Fixes: QTBUG-70451
Change-Id: I47561604108b12bf8ec0c794a2372767f0b2e04e
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On iOS (and Android), we give focus to a control on touch release
(rather than on touch begin, which is normal on desktop). For a
QQuickCombobox, this means that we will both handle focus and open
the popup on touch release, and not focus on touch begin
and open popup on touch release, like on desktop. Because of this, we
need to be more careful about when we choose to close the popup as
well, otherwise it will close down before it gets a chance to show on iOS.
This patch will check why we lose focus on both the inner line edit
and the combobox itself, and based on this, choose whether we should
close the popup. Basically, if focus is just transferred between the
popup button and the line edit, we choose to keep the popup open.
Fixes: QTBUG-70161
Change-Id: Iec242c0b5570844868085480fdf96fc49d189b82
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: If27c142786ad2457a80ce1ef65220834eda81e94
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some history:
- f1f884d3 worked around an issue in DialogButtonBox.
- c2fd8f7d fixed it by using contentWidth; i.e. the implicit width of
the contentItem. It caused QTBUG-72372.
- I tried to fix QTBUG-72372 with 6476de0b, but created (or exposed)
QTBUG-73860.
The problem in QTBUG-73860 can be seen with the following example:
Dialog {
id: dialog
visible: true
standardButtons: Dialog.Ok
}
The single 'Ok' button here will go outside of the dialog. The
underlying issue can be seen by looking into DialogButtonBox.qml:
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
(control.count === 1 ? contentWidth * 2 : contentWidth) + leftPadding + rightPadding)
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
contentHeight + topPadding + bottomPadding)
The implicit width of the box in this case is contentWidth * 2
(there is one button, so control.count === 1). This should result in
the button taking half the width of the box and being aligned to the
right:
alignment: count === 1 ? Qt.AlignRight : undefined
...
delegate: Button {
width: control.count === 1 ? control.availableWidth / 2 : undefined
}
What actually happens is that the contentItem (ListView) is temporarily 0
until it gets its final size of 100. However, QQuickDialogButtonBox
doesn't respond to this change in the ListView's contentWidth.
This problem can be fixed by returning to c2fd8f7d's resizeContent()
implementation, which uses contentWidth.
Then, there is a second issue:
Dialog {
id: dialog
visible: true
standardButtons: Dialog.Ok
width: 300
}
The button here is also positioned outside of the box. The problem is
that the contentWidth is based on implicitContentWidth:
QQuickContainerPrivate::updateContentWidth()
{
// ...
contentWidth = implicitContentWidth;
// ...
}
implicitContentWidth is calculated by calling getContentWidth():
void QQuickControlPrivate::updateImplicitContentWidth()
{
// ...
implicitContentWidth = getContentWidth();
// ...
}
In the case of horizontal alignment,
QQuickDialogButtonBoxPrivate::getContentWidth() uses the implicit
width of the largest button:
for (int i = 0; i < count; ++i) {
QQuickItem *item = q->itemAt(i);
if (item) {
totalWidth += item->implicitWidth();
maxWidth = qMax(maxWidth, item->implicitWidth());
}
}
// ...
if ((alignment & Qt::AlignHorizontal_Mask) == 0)
totalWidth = qMax(totalWidth, count * maxWidth + totalSpacing);
The Default style button has an implicitWidth of 100.
The DialogButtonBox in the example above is 300 pixels wide, so the
button should be 150, and it is, thanks to its width binding.
However, the DialogButtonBox uses contentWidth to size its contentItem
(ListView), and the contentWidth is, as mentioned, 100: the implicit
width of the button. So, the button ends up hanging over the side
of the box, as it's larger than the box thinks it is.
This problem is fixed by setting DialogButtonBox's contentWidth to the
contentWidth of the contentItem (ListView). This makes DialogButtonBox
use the explicit widths of the buttons rather than their implicit
widths. Since the contentWidth is no longer implicit, we must also
change any use of contentWidth in the implicitWidth binding to
implicitContentWidth.
While writing auto tests for this, they caught an issue where
contentWidth wasn't updated, so now we call resizeContent() in
QQuickContainer::setContentWidth().
Change-Id: I99ffda21b47aeb14d4382e453e87c4312f343a1c
Fixes: QTBUG-72886
Fixes: QTBUG-73860
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
State is saved into a byte array, not a string.
Change-Id: Id5a62a281a43349d0fa5d6a8c69a25cba900f9c7
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Add SplitView and TableView.
Change-Id: Ib049d12d6e922269ac80d2e9b10f37f5e274a567
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the attached property object was created on an item that SplitView
doesn't manage, then its m_splitView member will be null, so check
for that.
Sometimes, an attached SplitView object will be created on an item
that SplitView _does_ manage, but SplitView's own contentItem hasn't
been created yet (see the comment in the QQuickSplitViewAttached
constructor). In that case the SplitView will see the item added
as a child of its contentItem eventually, and we just have to wait.
While we are waiting, check access to our members in case they are
null.
Fixes: QTBUG-74276
Change-Id: I70b7f017e621e0d15c239b962f0407743eb70b15
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I34009799fe4016339920a7f0884af4dbe6d71418
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Attached ToolTips share a single ToolTip item and set properties
(such as delay) on it before showing it. Before 63899f3185,
this wasn't a problem, but now QQuickToolTip has its own show()
function that QQuickToolTipAttached calls. QQuickToolTipAttached
passes -1 by default, which QQuickToolTip sees as the "default"
and hence doesn't set a timeout at all. However, since that
QQuickToolTip instance is shared, it still has a previous
timeout value from the last time it was shown by a different
QQuickToolTipAttached object.
So, instead of QQuickToolTipAttached passing the timeout to
QQuickToolTip::show(), make it set it on the QQuickToolTip
instead. This ensures that it has the correct value if no
timeout was specified for an attached tool tip.
Task-number: QTBUG-74226
Change-Id: Iceed17bbb640a929fae3b9c975519df36cc2d210
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the flickable inside a scrollview has an explicit content
size assigned, or if the flickable was created by the
application, then don't fall back to calculate the content
size. The reason is that it should not try to change the content
size of a flickable that is controlled by the application (or by
the flickable itself, in the case of ListView, ScrollView and
TextArea). Sometimes e.g ListView will report a negative
contentWidth, which is not considered illegal.
From before we used to just check if the child flickable had
a negative content size, and if so, take that as a evidence
that the flickable was owned by the scrollview. But with this
patch, we instead add two extra variables that keeps explicit
track of whether or not we should read the content size from the
flickable, regardless of the values it might return.
With the two new variables, we also no longer need the
"ownsFlickable" property, as we can instead use the new
variables to check for the same.
Fixes: QTBUG-72536
Fixes: QTBUG-74000
Fixes: QTBUG-72940
Change-Id: Iec87cc953557bf8c1bdb32a3c11b721c607fc19a
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-73484
Change-Id: I5c6019ec015a7d423dcc103d1acf23383c5b6239
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Work was probably started before 5.12 but the patch ended up getting
merged in time for 5.13. It seems that I forgot to update the versions.
Change-Id: I19edf08158cca0967a7a536b3aee326e3b393d4c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
This makes sure the qmltypes target for qml_plugin's works.
Change-Id: I4a7624aa2db2eb40b9b44f158e099c651b1249cb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ibd3a8a111ce70643199c64f41143f332a34826f8
|
| |
| |
| |
| |
| | |
Change-Id: I7247659b3c9f4634ff57bce1e55187def604e161
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before this patch, only space was allowed.
Windows 10 and macOS 10.14.2 both allow using enter to activate menu
items.
Change-Id: I64476347669ff73f233efd129563a18ba51618a5
Fixes: QTBUG-73354
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
After checking, it seems that this is not needed and was likely added
by accident, so removing internal_module will enable the cmake file
generation so QtQuickTemplates2 can be used in a project.
Change-Id: I4a3287147c3c8afb715ba8e4d21b8af6fc1e48f6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This sentence was probably copied from Item's docs.
Task-number: QTBUG-73687
Change-Id: If9f7554c78cbc47abc7c9fdabacc8025864b76e0
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I1b34fe2df28c734395dc2a55340f2a7cb1629692
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes the issue where Drawer would try to reposition itself forever,
but does not address the fact that it is incorrectly positioned afterwards.
Task-number: QTBUG-71290
Change-Id: Ibbd4baa84b66ab446ce3af2ef326f8c50e74216d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When Dialog (which derives from Page) has only its title set,
there'd be a binding loop. A simplified version of the call stack:
- QQuickPopup::componentComplete
- QQuickPopupPrivate::prepareEnterTransition
- QQuickItem::setVisible
- QQuickPagePrivate::itemVisibilityChanged
- QQuickDialog::implicitHeaderWidthChanged
- QQmlBinding::expressionChanged <== Dialog.qml's implicitWidth binding
- QQmlPropertyData::readProperty
- QQuickDialog::implicitHeaderWidth
- QQuickPage::implicitHeaderWidth
- QQuickItem::implicitWidth <== QQuickPagePrivate::header, aka Label
- QQuickTextPrivate::getImplicitWidth
- QQuickTextPrivate::updateSize
- QQuickTextPrivate::setupTextLayout
- QQuickItem::setImplicitSize
- QQuickItemPrivate::implicitWidthChanged
- QQuickPagePrivate::itemImplicitWidthChanged
- QQuickDialog::implicitHeaderWidthChanged
- QQmlBinding::expressionChanged
- QQmlAbstractBinding::printBindingLoopError
Fix the issue by not emitting change signals if we're already in the
process of doing so.
Change-Id: I37d6fa35b1e70420e436c0e001f55035d7630542
Fixes: QTBUG-66494
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-73849
Change-Id: I02b32f55fabc6274a071536234dd485bf4e9bd02
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
TableView monitors if the application sets an explicit
contentWidth/Height, and skips calculating it when that is the case.
So be more careful from ScrollView, and don't set it on the
flickable if the application did not set it explicitly.
By doing it this way, you can now set an explicit contentWidth/Height
both in ScrollView and TableView, and it will be respected.
Task-number: QTBUG-72536
Change-Id: Ib87fa6958881fccdc47f50133e996484392281b6
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ia84e572f6f16cc050991450a18f2e695e461280d
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
qquickfusionstyle.cpp:85:31: warning: ‘const QBrush& QPalette::background() const’ is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations]
Change-Id: I5640132d28abf15f9e4dad474b27cc8f119b4d65
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I0d52818c7b221a6434acc6c960090a13d3d9febe
|
| |
| |
| |
| |
| |
| |
| |
| | |
QFont data must not be held at the application destruction time
to make the font database correctly dispose all acquired resources.
Change-Id: Ifc4a28a89701cf5622e8289a688eb0d4344c81fd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make Active and Disabled colors closer to Widgets' Fusion style.
Task-number: QTBUG-70819
Change-Id: I61cf22eb4449b5443fa71349da8df2ff57ee9158
Reviewed-by: Nils Jeisecke <nils.jeisecke@saltation.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I8aded0949d38315d4d22fa511f83331d7caf3145
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When changing the enabled state of a Menu after component completion,
the background would not change. The problem was that
QQuickPopup::paletteChanged() was not being emitted when the enabled
state changed, resulting in QQuickControl::palette() (which
QQuickPopup::palette() forwards calls to via its popupItem) not
being called. QQuickControl::palette() changes the palette's current
color group to QPalette::Disabled when it is disabled, so if it's not
called, the popup's colors won't change.
Fix the issue by adding a virtual enabledChange() function to
QQuickControl, which QQuickPopupItem can override to emit both
QQuickPopup::enabledChanged() (saving a connection in the process)
and QQuickPopup::paletteChanged(). This ensures that bindings to
QQuickPopup::palette are re-evaluated.
The patch adds a virtual instead of just emitting paletteChanged()
in QQuickPopup::setEnabled(), because we also want to be notified
of indirect enabled state changes, such as those coming from
parent items.
Change-Id: Ibdbd05f27b5a74fe731bda9d6698cbf6b8f81785
Fixes: QTBUG-73447
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|