diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2021-01-21 11:04:55 +0100 |
---|---|---|
committer | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2021-02-03 11:31:26 +0000 |
commit | d8ac047575781635e70768973a0080b19b735df4 (patch) | |
tree | abe408189a4091b11050b6b10c267f519e4b0498 | |
parent | 7e819a5777a0632175347688312da9cee0702177 (diff) |
Combobox: Fix initial set of inputMethodHints
Fix for setting up initial inputMethodHints to Qt::ImhNoPredictiveText
for Combobox.
Before this change, Qt::ImhNoPredictiveText was never set for Combobox.
As inputMethodHints() by default returns Qt::ImhNoPredictiveText value,
setInputMethodHints didn't allow to set this value correctly.
Task-number: QTBUG-61021
Change-Id: Ie4ec0d32fff7586bc3a8bd055b752000c0330fad
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit b87cada5e386e5a16ff04cf50bd88e97c4819099)
-rw-r--r-- | src/quicktemplates2/qquickcombobox.cpp | 21 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_combobox.qml | 1 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index 1d89b016..ec6a6246 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -265,6 +265,8 @@ public: void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; + void setInputMethodHints(Qt::InputMethodHints hints, bool force = false); + static void hideOldPopup(QQuickPopup *popup); bool flat = false; @@ -770,6 +772,16 @@ void QQuickComboBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) emit q->implicitIndicatorWidthChanged(); } +void QQuickComboBoxPrivate::setInputMethodHints(Qt::InputMethodHints hints, bool force) +{ + Q_Q(QQuickComboBox); + if (!force && hints == q->inputMethodHints()) + return; + + extra.value().inputMethodHints = hints; + emit q->inputMethodHintsChanged(); +} + void QQuickComboBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) { Q_Q(QQuickComboBox); @@ -804,7 +816,8 @@ QQuickComboBox::QQuickComboBox(QQuickItem *parent) #if QT_CONFIG(cursor) setCursor(Qt::ArrowCursor); #endif - setInputMethodHints(Qt::ImhNoPredictiveText); + Q_D(QQuickComboBox); + d->setInputMethodHints(Qt::ImhNoPredictiveText, true); } QQuickComboBox::~QQuickComboBox() @@ -1437,11 +1450,7 @@ Qt::InputMethodHints QQuickComboBox::inputMethodHints() const void QQuickComboBox::setInputMethodHints(Qt::InputMethodHints hints) { Q_D(QQuickComboBox); - if (hints == inputMethodHints()) - return; - - d->extra.value().inputMethodHints = hints; - emit inputMethodHintsChanged(); + d->setInputMethodHints(hints); } /*! diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml index 4907b87f..cd4c8466 100644 --- a/tests/auto/controls/data/tst_combobox.qml +++ b/tests/auto/controls/data/tst_combobox.qml @@ -157,6 +157,7 @@ TestCase { verify(control.delegate) verify(control.indicator) verify(control.popup) + compare(control.inputMethodHints, Qt.ImhNoPredictiveText) } function test_array() { |