From b87cada5e386e5a16ff04cf50bd88e97c4819099 Mon Sep 17 00:00:00 2001 From: Bartlomiej Moskal Date: Thu, 21 Jan 2021 11:04:55 +0100 Subject: 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 Pick-to: 5.15 6.0 Change-Id: Ie4ec0d32fff7586bc3a8bd055b752000c0330fad Reviewed-by: Mitch Curtis Reviewed-by: Assam Boudjelthia --- src/quicktemplates2/qquickcombobox.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index 136b32f4..c01d6394 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -269,6 +269,8 @@ public: void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; + void setInputMethodHints(Qt::InputMethodHints hints, bool force = false); + virtual qreal getContentWidth() const override; qreal calculateWidestTextWidth() const; void maybeUpdateImplicitContentWidth(); @@ -791,6 +793,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); @@ -893,7 +905,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() @@ -1529,11 +1542,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); } /*! -- cgit v1.2.3