Utils: Let ElidingLabel handle Qt::ElideNone

In case of Qt::ElideNone, act like a normale QLabel.

Task-number: QTCREATORBUG-23346
Change-Id: Id4fbd00dc0c8432f9ae60bee6dba114141c107df
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Alessandro Portale
2019-12-12 09:20:15 +01:00
parent 00e04d5022
commit b519a5b482

View File

@@ -38,15 +38,14 @@
namespace Utils { namespace Utils {
ElidingLabel::ElidingLabel(QWidget *parent) ElidingLabel::ElidingLabel(QWidget *parent)
: QLabel(parent), m_elideMode(Qt::ElideRight) : ElidingLabel({}, parent)
{ {
setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred, QSizePolicy::Label));
} }
ElidingLabel::ElidingLabel(const QString &text, QWidget *parent) ElidingLabel::ElidingLabel(const QString &text, QWidget *parent)
: QLabel(text, parent), m_elideMode(Qt::ElideRight) : QLabel(text, parent)
{ {
setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred, QSizePolicy::Label)); setElideMode(Qt::ElideRight);
} }
Qt::TextElideMode ElidingLabel::elideMode() const Qt::TextElideMode ElidingLabel::elideMode() const
@@ -57,11 +56,23 @@ Qt::TextElideMode ElidingLabel::elideMode() const
void ElidingLabel::setElideMode(const Qt::TextElideMode &elideMode) void ElidingLabel::setElideMode(const Qt::TextElideMode &elideMode)
{ {
m_elideMode = elideMode; m_elideMode = elideMode;
if (elideMode == Qt::ElideNone)
setToolTip({});
setSizePolicy(QSizePolicy(
m_elideMode == Qt::ElideNone ? QSizePolicy::Preferred : QSizePolicy::Ignored,
QSizePolicy::Preferred,
QSizePolicy::Label));
update(); update();
} }
void ElidingLabel::paintEvent(QPaintEvent *) void ElidingLabel::paintEvent(QPaintEvent *)
{ {
if (m_elideMode == Qt::ElideNone) {
QLabel::paintEvent(nullptr);
return;
}
const int m = margin(); const int m = margin();
QRect contents = contentsRect().adjusted(m, m, -m, -m); QRect contents = contentsRect().adjusted(m, m, -m, -m);
QFontMetrics fm = fontMetrics(); QFontMetrics fm = fontMetrics();