mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-24 04:32:15 -04:00
Custom Elide for Suggestion List Text
Qt painting also doesn't have elide support.
This commit is contained in:
parent
651c88be9f
commit
8246c5c2c5
@ -68,5 +68,23 @@ void SuggestionListDelegate::paintText(QPainter *p,
|
|||||||
|
|
||||||
const int flag = {Qt::AlignVCenter | Qt::AlignLeading};
|
const int flag = {Qt::AlignVCenter | Qt::AlignLeading};
|
||||||
const QString text = index.data(Qt::DisplayRole).toString();
|
const QString text = index.data(Qt::DisplayRole).toString();
|
||||||
p->drawText(textRect, flag, text);
|
|
||||||
|
/* Custom text elide. */
|
||||||
|
const QFontMetrics metrics = opt.fontMetrics;
|
||||||
|
const int elideMarkerLength = metrics.tightBoundingRect("(...)").width();
|
||||||
|
const int textLength = textRect.width() - elideMarkerLength;
|
||||||
|
QString elidedText = metrics.elidedText(text, Qt::ElideRight, textLength);
|
||||||
|
if (elidedText != text)
|
||||||
|
{
|
||||||
|
/* Remove built-in elide marker */
|
||||||
|
elidedText.chop(1);
|
||||||
|
|
||||||
|
/* drawText's Align direction determines text direction */
|
||||||
|
const bool textDirFlipped = KiwixApp::isRightToLeft() != text.isRightToLeft();
|
||||||
|
elidedText = textDirFlipped ? "(...)" + elidedText.trimmed()
|
||||||
|
: elidedText.trimmed() + "(...)";
|
||||||
|
p->drawText(textRect, flag, elidedText);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
p->drawText(textRect, flag, text);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user