diff options
-rw-r--r-- | src/quicktemplates2/qquickspinbox.cpp | 4 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_spinbox.qml | 32 |
2 files changed, 34 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp index b7595b71..116d1e12 100644 --- a/src/quicktemplates2/qquickspinbox.cpp +++ b/src/quicktemplates2/qquickspinbox.cpp @@ -612,7 +612,7 @@ void QQuickSpinBox::keyReleaseEvent(QKeyEvent *event) Q_D(QQuickSpinBox); QQuickControl::keyReleaseEvent(event); - if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) + if (d->editable && (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)) d->updateValue(); d->up->setPressed(false); @@ -704,7 +704,7 @@ void QQuickSpinBox::itemChange(ItemChange change, const ItemChangeData &value) { Q_D(QQuickSpinBox); QQuickControl::itemChange(change, value); - if (change == ItemActiveFocusHasChanged && !value.boolValue) + if (d->editable && change == ItemActiveFocusHasChanged && !value.boolValue) d->updateValue(); } diff --git a/tests/auto/controls/data/tst_spinbox.qml b/tests/auto/controls/data/tst_spinbox.qml index d8422706..b370a05f 100644 --- a/tests/auto/controls/data/tst_spinbox.qml +++ b/tests/auto/controls/data/tst_spinbox.qml @@ -478,4 +478,36 @@ TestCase { control.destroy() } + + function test_valueFromText_data() { + return [ + { tag: "editable", editable: true }, + { tag: "non-editable", editable: false } + ] + } + + function test_valueFromText(data) { + var control = spinBox.createObject(testCase, {editable: data.editable}) + verify(control) + + control.forceActiveFocus() + verify(control.activeFocus) + + var valueFromTextCalls = 0 + control.valueFromText = function(text, locale) { + ++valueFromTextCalls + return Number.fromLocaleString(locale, text); + } + + keyClick(Qt.Key_Enter) + compare(valueFromTextCalls, data.editable ? 1 : 0) + + keyClick(Qt.Key_Return) + compare(valueFromTextCalls, data.editable ? 2 : 0) + + control.focus = false + compare(valueFromTextCalls, data.editable ? 3 : 0) + + control.destroy() + } } |