diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/controls/ComboBox.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/material/ComboBox.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/universal/ComboBox.qml | 2 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcombobox.cpp | 15 |
4 files changed, 17 insertions, 4 deletions
diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml index 5bffbb35..09930aad 100644 --- a/src/imports/controls/ComboBox.qml +++ b/src/imports/controls/ComboBox.qml @@ -115,6 +115,8 @@ T.ComboBox { implicitHeight: contentHeight model: control.popup.visible ? control.delegateModel : null currentIndex: control.highlightedIndex + highlightRangeMode: ListView.ApplyRange + highlightMoveDuration: 0 Rectangle { z: 10 diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml index 9d51f13b..05981baa 100644 --- a/src/imports/controls/material/ComboBox.qml +++ b/src/imports/controls/material/ComboBox.qml @@ -140,6 +140,8 @@ T.ComboBox { implicitHeight: contentHeight model: control.popup.visible ? control.delegateModel : null currentIndex: control.highlightedIndex + highlightRangeMode: ListView.ApplyRange + highlightMoveDuration: 0 T.ScrollIndicator.vertical: ScrollIndicator { } } diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml index 929232ab..bb816fc1 100644 --- a/src/imports/controls/universal/ComboBox.qml +++ b/src/imports/controls/universal/ComboBox.qml @@ -120,6 +120,8 @@ T.ComboBox { implicitHeight: contentHeight model: control.popup.visible ? control.delegateModel : null currentIndex: control.highlightedIndex + highlightRangeMode: ListView.ApplyRange + highlightMoveDuration: 0 T.ScrollIndicator.vertical: ScrollIndicator { } } diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index a7450d76..278f8608 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -170,6 +170,7 @@ public: void updateCurrentText(); void incrementCurrentIndex(); void decrementCurrentIndex(); + void updateHighlightedIndex(); void setHighlightedIndex(int index); void createDelegateModel(); @@ -200,19 +201,17 @@ void QQuickComboBoxPrivate::showPopup() { if (popup && !popup->isVisible()) popup->open(); - setHighlightedIndex(currentIndex); } void QQuickComboBoxPrivate::hidePopup(bool accept) { Q_Q(QQuickComboBox); - if (popup && popup->isVisible()) - popup->close(); if (accept) { q->setCurrentIndex(highlightedIndex); emit q->activated(currentIndex); } - setHighlightedIndex(-1); + if (popup && popup->isVisible()) + popup->close(); } void QQuickComboBoxPrivate::togglePopup(bool accept) @@ -303,6 +302,11 @@ void QQuickComboBoxPrivate::decrementCurrentIndex() } } +void QQuickComboBoxPrivate::updateHighlightedIndex() +{ + setHighlightedIndex(popup->isVisible() ? currentIndex : -1); +} + void QQuickComboBoxPrivate::setHighlightedIndex(int index) { Q_Q(QQuickComboBox); @@ -655,10 +659,13 @@ void QQuickComboBox::setPopup(QQuickPopup *popup) if (d->popup == popup) return; + if (d->popup) + QObjectPrivate::disconnect(d->popup, &QQuickPopup::visibleChanged, d, &QQuickComboBoxPrivate::updateHighlightedIndex); d->deleteDelegate(d->popup); if (popup) { QQuickPopupPrivate::get(popup)->allowVerticalFlip = true; popup->setClosePolicy(QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutsideParent); + QObjectPrivate::connect(popup, &QQuickPopup::visibleChanged, d, &QQuickComboBoxPrivate::updateHighlightedIndex); } d->popup = popup; emit popupChanged(); |