diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-03-27 10:28:19 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-03-27 10:28:19 +0100 |
commit | d9b0e2cde72824d19fb8ef6dfffd8cceb53957a3 (patch) | |
tree | 1c1e7becae432e888d385b9ab4e8c60d94f45e4a /src/quicktemplates2 | |
parent | acebfc7f1e50386a83c1f039399cf5cf914b893e (diff) | |
parent | 5135bec50762955b3a1138ecda10214a9d0bf62a (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
.qmake.conf
Change-Id: I37f9f88a11946d5d67935c682273eb0aa8593f9b
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquickcombobox.cpp | 19 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialogbuttonbox.cpp | 5 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index ffdb7cc2..03dd6086 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -1556,8 +1556,13 @@ bool QQuickComboBox::eventFilter(QObject *object, QEvent *event) break; } case QEvent::FocusOut: - d->hidePopup(false); - setPressed(false); + if (qGuiApp->focusObject() != this) { + // Only close the popup if focus was transferred somewhere else + // than to the popup button (which normally means that the user + // clicked on the popup button to open it, not close it. + d->hidePopup(false); + setPressed(false); + } break; #if QT_CONFIG(im) case QEvent::InputMethod: @@ -1583,8 +1588,14 @@ void QQuickComboBox::focusOutEvent(QFocusEvent *event) { Q_D(QQuickComboBox); QQuickControl::focusOutEvent(event); - d->hidePopup(false); - setPressed(false); + + if (qGuiApp->focusObject() != d->contentItem) { + // Only close the popup if focus was transferred + // somewhere else than to the inner line edit (which is + // normally done from QQuickComboBox::focusInEvent). + d->hidePopup(false); + setPressed(false); + } } #if QT_CONFIG(im) diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index 03f5f8e8..91fb41f2 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -295,6 +295,7 @@ void QQuickDialogButtonBoxPrivate::updateLayout() if (firstRole != secondRole && firstRole != QPlatformDialogHelper::InvalidRole && secondRole != QPlatformDialogHelper::InvalidRole) { const int *l = m_layout; while (*l != QPlatformDialogHelper::EOL) { + // Unset the Reverse flag. const int role = (*l & ~QPlatformDialogHelper::Reverse); if (role == firstRole) return true; @@ -305,14 +306,14 @@ void QQuickDialogButtonBoxPrivate::updateLayout() } if (firstRole == secondRole) - return first < second; + return false; return firstRole != QPlatformDialogHelper::InvalidRole; } const int *m_layout; }; - std::sort(buttons.begin(), buttons.end(), ButtonLayout(static_cast<QPlatformDialogHelper::ButtonLayout>(buttonLayout))); + std::stable_sort(buttons.begin(), buttons.end(), ButtonLayout(static_cast<QPlatformDialogHelper::ButtonLayout>(buttonLayout))); for (int i = 0; i < buttons.count() - 1; ++i) q->insertItem(i, buttons.at(i)); |