macOS: Add more padding to width of non-editable comboboxes

The width of the combobox took the space for the checkmark and the contents
into account, but didn't provide any padding on the right side, resulting
in the text hitting the right side of the combobox popup.

Add another 12 pixels padding to the sizeFromContents implementation,
which results in a symmetrical padding on both sides of the text.

Fixes: QTBUG-88715
Change-Id: I811da73d11ce935c1fb83efabbe799f9a882e1d7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit ee409a536e7e1e4da28e235c4979a31cf40bb3c4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Volker Hilsheimer 2021-01-12 18:10:35 +01:00 committed by Qt Cherry-pick Bot
parent c688bcb2f6
commit 59785478c3

View File

@ -6473,9 +6473,9 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
if (const auto *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
const auto controlSize = d->effectiveAquaSizeConstrain(opt, widget);
if (!cb->editable) {
// Same as CT_PushButton, because we have to fit the focus
// See CT_PushButton; we have to fit the focus
// ring and a non-editable combo box is a NSPopUpButton.
sz.rwidth() += QMacStylePrivate::PushButtonLeftOffset + QMacStylePrivate::PushButtonRightOffset + 12;
sz.rwidth() += QMacStylePrivate::PushButtonLeftOffset + QMacStylePrivate::PushButtonRightOffset + 24;
// All values as measured from HIThemeGetButtonBackgroundBounds()
if (controlSize != QStyleHelper::SizeMini)
sz.rwidth() += 12; // We like 12 over here.