Utils: Better size hints for the markdown browser

Change-Id: I5b071cd349a3322bb41dad002c4aeda175831f18
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-10-30 10:01:07 +01:00
parent 5d56d10b23
commit 42ec15cbed
2 changed files with 23 additions and 0 deletions

View File

@@ -42,6 +42,8 @@ static constexpr std::array<TextFormat, 6> markdownHeadingFormats{
TextFormat{contentTF.first, UiElement::UiElementH6Capital}, TextFormat{contentTF.first, UiElement::UiElementH6Capital},
}; };
static constexpr int MinimumSizeBlocks = 5;
static QFont font(TextFormat format, bool underlined = false) static QFont font(TextFormat format, bool underlined = false)
{ {
QFont result = Utils::StyleHelper::uiFont(format.second); QFont result = Utils::StyleHelper::uiFont(format.second);
@@ -373,6 +375,24 @@ MarkdownBrowser::MarkdownBrowser(QWidget *parent)
setDocument(new AnimatedDocument(this)); setDocument(new AnimatedDocument(this));
} }
QSize MarkdownBrowser::sizeHint() const
{
return document()->size().toSize();
}
QSize MarkdownBrowser::minimumSizeHint() const
{
//Lets use the size of the first few blocks as minimum size hint
QTextBlock block = document()->begin();
QRectF boundingRect;
for (int i = 0; i < MinimumSizeBlocks && block.isValid(); ++i, block = block.next()) {
QTextLayout *layout = block.layout();
QRectF blockRect = layout->boundingRect();
boundingRect.adjust(0, 0, 0, blockRect.height());
boundingRect.setWidth(qMax(boundingRect.width(), blockRect.width()));
}
return boundingRect.size().toSize() + QTextBrowser::minimumSizeHint();
}
void MarkdownBrowser::setAllowRemoteImages(bool allow) void MarkdownBrowser::setAllowRemoteImages(bool allow)
{ {
static_cast<AnimatedDocument *>(document())->setAllowRemoteImages(allow); static_cast<AnimatedDocument *>(document())->setAllowRemoteImages(allow);

View File

@@ -21,6 +21,9 @@ public:
void setMarkdown(const QString &markdown); void setMarkdown(const QString &markdown);
void setBasePath(const FilePath &filePath); void setBasePath(const FilePath &filePath);
void setAllowRemoteImages(bool allow); void setAllowRemoteImages(bool allow);
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
}; };
} // namespace Utils } // namespace Utils