ProjectExplorer: Fix clipping problem in issues pane

Add the missing call to QTextDocument::setTextWidth() in the delegate's
paint() method, add a workaround for invalid QStyleOption::rect in
sizeHint(), take item indentation into account.

Fixes: QTCREATORBUG-29458
Change-Id: I56d9f942d6c82dfac82d357ca0f16138ed39150d
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Christian Kandeler
2023-08-10 17:43:14 +02:00
parent 3024c1314e
commit 2f6bec1d48

View File

@@ -623,6 +623,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
painter->save();
m_doc.setHtml(options.text);
m_doc.setTextWidth(options.rect.width());
options.text = "";
options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);
painter->translate(options.rect.left(), options.rect.top());
@@ -650,9 +651,12 @@ QSize TaskDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelInd
return QStyledItemDelegate::sizeHint(option, index);
QStyleOptionViewItem options = option;
options.initFrom(options.widget);
initStyleOption(&options, index);
m_doc.setHtml(options.text);
m_doc.setTextWidth(options.rect.width());
const auto view = qobject_cast<const QTreeView *>(options.widget);
QTC_ASSERT(view, return {});
m_doc.setTextWidth(view->width() * 0.85 - view->indentation());
return QSize(m_doc.idealWidth(), m_doc.size().height());
}