Просмотр исходного кода

Merge pull request #5161 from xllndr/master

Resize WebView widget once the loginpage rendered
Claudio Cambra 2 лет назад
Родитель
Сommit
f0ddc54635
2 измененных файлов с 24 добавлено и 0 удалено
  1. 18 0
      src/gui/wizard/webview.cpp
  2. 6 0
      src/gui/wizard/webview.h

+ 18 - 0
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

+ 6 - 0
src/gui/wizard/webview.h

@@ -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;