QToolButton: Don't elide text if an icon is present

The previous fix which adds an automatic text elision when the
QToolButton is not large enough brought up an inconsistency between
QToolButton::sizeHint() and QCommonStyle::drawControl().
Fix it by syncing the magic numbers between QToolButton::sizeHint() and
QCommonStyle::drawControl().

Fixes: QTBUG-72226
Change-Id: If4a76792cb97bcdb918e18c6b29cb637730acec0
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
This commit is contained in:
Christian Ehrlicher 2018-12-03 19:36:54 +01:00 committed by Shawn Rutledge
parent c4ee125891
commit 25231c4048

View File

@ -1654,7 +1654,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
alignment |= Qt::TextHideMnemonic; alignment |= Qt::TextHideMnemonic;
if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
pr.setHeight(pmSize.height() + 6); pr.setHeight(pmSize.height() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint()
tr.adjust(0, pr.height() - 1, 0, -1); tr.adjust(0, pr.height() - 1, 0, -1);
pr.translate(shiftX, shiftY); pr.translate(shiftX, shiftY);
if (!hasArrow) { if (!hasArrow) {
@ -1664,7 +1664,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
} }
alignment |= Qt::AlignCenter; alignment |= Qt::AlignCenter;
} else { } else {
pr.setWidth(pmSize.width() + 8); pr.setWidth(pmSize.width() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint()
tr.adjust(pr.width(), 0, 0, 0); tr.adjust(pr.width(), 0, 0, 0);
pr.translate(shiftX, shiftY); pr.translate(shiftX, shiftY);
if (!hasArrow) { if (!hasArrow) {