summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qcombobox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/widgets/qcombobox.cpp')
-rw-r--r--src/widgets/widgets/qcombobox.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index 16de0da4ac..74b3dc77d3 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -919,7 +919,17 @@ QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent)
void QComboBoxPrivate::init()
{
Q_Q(QComboBox);
- q->setFocusPolicy(Qt::WheelFocus);
+#ifdef Q_OS_MAC
+ // On Mac, only line edits and list views always get tab focus. It's only
+ // when we enable full keyboard access that other controls can get tab focus.
+ // When it's not editable, a combobox looks like a button, and it behaves as
+ // such in this respect.
+ if (!q->isEditable())
+ q->setFocusPolicy(Qt::TabFocus);
+ else
+#endif
+ q->setFocusPolicy(Qt::WheelFocus);
+
q->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed,
QSizePolicy::ComboBox));
setLayoutItemMargins(QStyle::SE_ComboBoxLayoutItem);
@@ -1655,6 +1665,10 @@ void QComboBox::setEditable(bool editable)
}
QLineEdit *le = new QLineEdit(this);
setLineEdit(le);
+#ifdef Q_OS_MAC
+ // See comment in QComboBoxPrivate::init()
+ setFocusPolicy(Qt::WheelFocus);
+#endif
} else {
if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) {
d->viewContainer()->updateScrollers();
@@ -1664,6 +1678,10 @@ void QComboBox::setEditable(bool editable)
d->lineEdit->hide();
d->lineEdit->deleteLater();
d->lineEdit = 0;
+#ifdef Q_OS_MAC
+ // See comment in QComboBoxPrivate::init()
+ setFocusPolicy(Qt::TabFocus);
+#endif
}
d->viewContainer()->updateTopBottomMargin();