diff --git a/src/libs/utils/markdownbrowser.cpp b/src/libs/utils/markdownbrowser.cpp index b57f4d50a61..426c41671ac 100644 --- a/src/libs/utils/markdownbrowser.cpp +++ b/src/libs/utils/markdownbrowser.cpp @@ -42,6 +42,8 @@ static constexpr std::array markdownHeadingFormats{ TextFormat{contentTF.first, UiElement::UiElementH6Capital}, }; +static constexpr int MinimumSizeBlocks = 5; + static QFont font(TextFormat format, bool underlined = false) { QFont result = Utils::StyleHelper::uiFont(format.second); @@ -373,6 +375,24 @@ MarkdownBrowser::MarkdownBrowser(QWidget *parent) 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) { static_cast(document())->setAllowRemoteImages(allow); diff --git a/src/libs/utils/markdownbrowser.h b/src/libs/utils/markdownbrowser.h index 9ac2c3f2cb3..70cf1a5ec18 100644 --- a/src/libs/utils/markdownbrowser.h +++ b/src/libs/utils/markdownbrowser.h @@ -21,6 +21,9 @@ public: void setMarkdown(const QString &markdown); void setBasePath(const FilePath &filePath); void setAllowRemoteImages(bool allow); + + QSize sizeHint() const override; + QSize minimumSizeHint() const override; }; } // namespace Utils