summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2019-04-25 18:23:32 +0300
committerKonstantin Ritt <ritt.ks@gmail.com>2019-09-06 11:43:33 +0300
commit382531ab5e2270833d3805c57c00ebcf6b24d635 (patch)
treefa84fb70b853a999953bf55be57e19d1e85d66da
parent616c430d2b7f36e70987df7b2dc97e71f0e8b589 (diff)
QQuickIcon: properly resolve implicit values
when the property has not been set explicitly, the resolved mask must not contain a respective bit set either Change-Id: Iab0bd600b5bf458e26ed4601d4d2f608021f1518 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/quicktemplates2/qquickicon.cpp10
-rw-r--r--tests/auto/controls/data/tst_abstractbutton.qml8
2 files changed, 12 insertions, 6 deletions
diff --git a/src/quicktemplates2/qquickicon.cpp b/src/quicktemplates2/qquickicon.cpp
index 1b8f4797..bfa2f8c1 100644
--- a/src/quicktemplates2/qquickicon.cpp
+++ b/src/quicktemplates2/qquickicon.cpp
@@ -204,19 +204,19 @@ QQuickIcon QQuickIcon::resolve(const QQuickIcon &other) const
QQuickIcon resolved = *this;
if (!(d->resolveMask & QQuickIconPrivate::NameResolved))
- resolved.setName(other.name());
+ resolved.d->name = other.name();
if (!(d->resolveMask & QQuickIconPrivate::SourceResolved))
- resolved.setSource(other.source());
+ resolved.d->source = other.source();
if (!(d->resolveMask & QQuickIconPrivate::WidthResolved))
- resolved.setWidth(other.width());
+ resolved.d->width = other.width();
if (!(d->resolveMask & QQuickIconPrivate::HeightResolved))
- resolved.setHeight(other.height());
+ resolved.d->height = other.height();
if (!(d->resolveMask & QQuickIconPrivate::ColorResolved))
- resolved.setColor(other.color());
+ resolved.d->color = other.color();
return resolved;
}
diff --git a/tests/auto/controls/data/tst_abstractbutton.qml b/tests/auto/controls/data/tst_abstractbutton.qml
index 80155f69..ee26a6d6 100644
--- a/tests/auto/controls/data/tst_abstractbutton.qml
+++ b/tests/auto/controls/data/tst_abstractbutton.qml
@@ -599,7 +599,7 @@ TestCase {
AbstractButton {
action: Action {
text: "Default"
- icon.name: "default"
+ icon.name: checked ? "checked" : "unchecked"
icon.source: "qrc:/icons/default.png"
checkable: true
checked: true
@@ -617,6 +617,7 @@ TestCase {
compare(control.checkable, true)
compare(control.checked, true)
compare(control.enabled, false)
+ compare(control.icon.name, "checked")
var textSpy = signalSpy.createObject(control, { target: control, signalName: "textChanged" })
verify(textSpy.valid)
@@ -630,6 +631,7 @@ TestCase {
compare(control.checkable, false) // propagates
compare(control.checked, false) // propagates
compare(control.enabled, true) // propagates
+ compare(control.icon.name, "unchecked") // propagates
compare(textSpy.count, 1)
// changes via button
@@ -637,19 +639,23 @@ TestCase {
control.checkable = true
control.checked = true
control.enabled = false
+ control.icon.name = "default"
compare(control.text, "Button")
compare(control.checkable, true)
compare(control.checked, true)
compare(control.enabled, false)
+ compare(control.icon.name, "default")
compare(control.action.text, "Action") // does NOT propagate
compare(control.action.checkable, true) // propagates
compare(control.action.checked, true) // propagates
compare(control.action.enabled, true) // does NOT propagate
+ compare(control.action.icon.name, control.action.checked ? "checked" : "unchecked") // does NOT propagate
compare(textSpy.count, 2)
// remove the action so that only the button's properties are left
control.action = null
compare(control.text, "Button")
+ compare(control.icon.name, "default")
compare(textSpy.count, 2)
// setting an action while button has a particular property set