Resize WebView widget once the loginpage rendered
authorAxel Lender <lender@b1-systems.de>
Thu, 10 Nov 2022 12:13:32 +0000 (13:13 +0100)
committerAxel Lender <lender@b1-systems.de>
Tue, 7 Mar 2023 08:55:04 +0000 (09:55 +0100)
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 <lender@b1-systems.de>
src/gui/wizard/webview.cpp
src/gui/wizard/webview.h

index 0ecaca08cb81f5ca2473d7133b8c4aa019aeb036..99fd18bb2cfec4f9c43f7e7b5acbbacb20ed9b43 100644 (file)
@@ -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
index 6cfbcb8c039424b23f6ffa0043e1fd165ff3071f..999666687232b46552449839fc78b92e557467b9 100644 (file)
@@ -23,13 +23,19 @@ public:
     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;