From 664e0c18ec3273d6b4364c9c49f77d88211962e4 Mon Sep 17 00:00:00 2001 From: Axel Lender Date: Thu, 10 Nov 2022 13:13:32 +0100 Subject: [PATCH] Resize WebView widget once the loginpage rendered When the login dialogue displays the login page itself the WebView widget did not resize according to the dimensions of the login page. Signed-off-by: Axel Lender --- src/gui/wizard/webview.cpp | 18 ++++++++++++++++++ src/gui/wizard/webview.h | 6 ++++++ 2 files changed, 24 insertions(+) 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;