diff --git a/src/gui/wizard/webview.cpp b/src/gui/wizard/webview.cpp index 0ecaca08cb81f..99fd18bb2cfec 100644 --- a/src/gui/wizard/webview.cpp +++ b/src/gui/wizard/webview.cpp @@ -111,12 +111,30 @@ WebView::WebView(QWidget *parent) connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue); connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched); + + connect(_page, &QWebEnginePage::contentsSizeChanged, this, &WebView::slotResizeToContents); } void WebView::setUrl(const QUrl &url) { _page->setUrl(url); } +QSize WebView::minimumSizeHint() const { + return _size; +} + +void WebView::slotResizeToContents(const QSizeF &size){ + //this widget also holds the progressbar + const int newHeight = size.toSize().height() + _ui.progressBar->height(); + const int newWidth = size.toSize().width(); + _size = QSize(newWidth, newHeight); + + this->updateGeometry(); + + //only resize once + disconnect(_page, &QWebEnginePage::contentsSizeChanged, this, &WebView::slotResizeToContents); +} + WebView::~WebView() { /* * The Qt implmentation deletes children in the order they are added to the diff --git a/src/gui/wizard/webview.h b/src/gui/wizard/webview.h index 6cfbcb8c03942..999666687232b 100644 --- a/src/gui/wizard/webview.h +++ b/src/gui/wizard/webview.h @@ -23,13 +23,19 @@ class WebView : public QWidget WebView(QWidget *parent = nullptr); ~WebView() override; void setUrl(const QUrl &url); + virtual QSize minimumSizeHint() const override; signals: void urlCatched(const QString user, const QString pass, const QString host); +private slots: + void slotResizeToContents(const QSizeF &size); + private: Ui_WebView _ui; + QSize _size; + QWebEngineView *_webview; QWebEngineProfile *_profile; WebEnginePage *_page;