mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-23 03:58:56 -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 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