aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-03-27 10:28:19 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-03-27 10:28:19 +0100
commitd9b0e2cde72824d19fb8ef6dfffd8cceb53957a3 (patch)
tree1c1e7becae432e888d385b9ab4e8c60d94f45e4a /src
parentacebfc7f1e50386a83c1f039399cf5cf914b893e (diff)
parent5135bec50762955b3a1138ecda10214a9d0bf62a (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts: .qmake.conf Change-Id: I37f9f88a11946d5d67935c682273eb0aa8593f9b
Diffstat (limited to 'src')
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp19
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox.cpp5
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));