diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-10-01 23:02:43 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-10-02 12:49:15 +0000 |
commit | 4fb88d0f34e030223c75fc8903ef5d8325b649ed (patch) | |
tree | a691bdb06464050fce11ba8a5a9a04a4a91b5b64 /src | |
parent | bfaa08a335f21e6fdf533969779f806883fe27b0 (diff) |
Fix ComboBox to scroll to the highlighted item
Change-Id: I57fefd8ba47796118e71902c6882e9918d462920
Tasl-number: QTBUG-55030
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
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(); |