forked from qt-creator/qt-creator
Welcome: Determine maximum width for Core::Button text for all states
Button states can have individual text tokens assigned. Depending on the used fonts and platform-specific renderer, any of these states may have the highest widts. Consider all of them and use the maximum. Change-Id: I51caccef9e34c1911c2773b8836dba722ad63c47 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -147,11 +147,16 @@ Button::Button(const QString &text, Role role, QWidget *parent)
|
|||||||
|
|
||||||
QSize Button::minimumSizeHint() const
|
QSize Button::minimumSizeHint() const
|
||||||
{
|
{
|
||||||
const TextFormat &tf = buttonTF(m_role, WidgetStateHovered);
|
int maxTextWidth = 0;
|
||||||
const QFontMetrics fm(tf.font());
|
for (WidgetState state : {WidgetStateDefault, WidgetStateChecked, WidgetStateHovered} ) {
|
||||||
const QSize textS = fm.size(Qt::TextShowMnemonic, text());
|
const TextFormat &tf = buttonTF(m_role, state);
|
||||||
|
const QFontMetrics fm(tf.font());
|
||||||
|
const QSize textS = fm.size(Qt::TextShowMnemonic, text());
|
||||||
|
maxTextWidth = qMax(maxTextWidth, textS.width());
|
||||||
|
}
|
||||||
|
const TextFormat &tf = buttonTF(m_role, WidgetStateDefault);
|
||||||
const QMargins margins = contentsMargins();
|
const QMargins margins = contentsMargins();
|
||||||
return {margins.left() + textS.width() + margins.right(),
|
return {margins.left() + maxTextWidth + margins.right(),
|
||||||
margins.top() + tf.lineHeight() + margins.bottom()};
|
margins.top() + tf.lineHeight() + margins.bottom()};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user