diff options
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/tabwidget.cpp')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/tabwidget.cpp | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.cpp b/examples/webenginewidgets/simplebrowser/tabwidget.cpp index a7f855c2a..c9fb32d83 100644 --- a/examples/webenginewidgets/simplebrowser/tabwidget.cpp +++ b/examples/webenginewidgets/simplebrowser/tabwidget.cpp @@ -56,9 +56,8 @@ TabWidget::TabWidget(QWidget *parent) connect(tabBar, &QTabBar::customContextMenuRequested, this, &TabWidget::handleContextMenuRequested); connect(tabBar, &QTabBar::tabCloseRequested, this, &TabWidget::closeTab); connect(tabBar, &QTabBar::tabBarDoubleClicked, [this](int index) { - if (index != -1) - return; - createTab(); + if (index == -1) + createTab(); }); setDocumentMode(true); @@ -67,10 +66,6 @@ TabWidget::TabWidget(QWidget *parent) connect(this, &QTabWidget::currentChanged, this, &TabWidget::handleCurrentChanged); } -TabWidget::~TabWidget() -{ -} - void TabWidget::handleCurrentChanged(int index) { if (index != -1) { @@ -80,11 +75,7 @@ void TabWidget::handleCurrentChanged(int index) emit titleChanged(view->title()); emit loadProgress(view->loadProgress()); emit urlChanged(view->url()); - QIcon pageIcon = view->page()->icon(); - if (!pageIcon.isNull()) - emit iconChanged(pageIcon); - else - emit iconChanged(QIcon(QStringLiteral(":defaulticon.png"))); + emit favIconChanged(view->favIcon()); emit webActionEnabledChanged(QWebEnginePage::Back, view->isWebActionEnabled(QWebEnginePage::Back)); emit webActionEnabledChanged(QWebEnginePage::Forward, view->isWebActionEnabled(QWebEnginePage::Forward)); emit webActionEnabledChanged(QWebEnginePage::Stop, view->isWebActionEnabled(QWebEnginePage::Stop)); @@ -93,7 +84,7 @@ void TabWidget::handleCurrentChanged(int index) emit titleChanged(QString()); emit loadProgress(0); emit urlChanged(QUrl()); - emit iconChanged(QIcon(QStringLiteral(":defaulticon.png"))); + emit favIconChanged(QIcon()); emit webActionEnabledChanged(QWebEnginePage::Back, false); emit webActionEnabledChanged(QWebEnginePage::Forward, false); emit webActionEnabledChanged(QWebEnginePage::Stop, false); @@ -150,8 +141,10 @@ void TabWidget::setupView(WebView *webView) connect(webView, &QWebEngineView::titleChanged, [this, webView](const QString &title) { int index = indexOf(webView); - if (index != -1) + if (index != -1) { setTabText(index, title); + setTabToolTip(index, title); + } if (currentIndex() == index) emit titleChanged(title); }); @@ -170,26 +163,17 @@ void TabWidget::setupView(WebView *webView) if (currentIndex() == indexOf(webView)) emit linkHovered(url); }); - connect(webPage, &WebPage::iconChanged, [this, webView](const QIcon &icon) { + connect(webView, &WebView::favIconChanged, [this, webView](const QIcon &icon) { int index = indexOf(webView); - QIcon ico = icon.isNull() ? QIcon(QStringLiteral(":defaulticon.png")) : icon; - if (index != -1) - setTabIcon(index, ico); + setTabIcon(index, icon); if (currentIndex() == index) - emit iconChanged(ico); + emit favIconChanged(icon); }); connect(webView, &WebView::webActionEnabledChanged, [this, webView](QWebEnginePage::WebAction action, bool enabled) { if (currentIndex() == indexOf(webView)) emit webActionEnabledChanged(action,enabled); }); - connect(webView, &QWebEngineView::loadStarted, [this, webView]() { - int index = indexOf(webView); - if (index != -1) { - QIcon icon(QLatin1String(":view-refresh.png")); - setTabIcon(index, icon); - } - }); connect(webPage, &QWebEnginePage::windowCloseRequested, [this, webView]() { int index = indexOf(webView); if (index >= 0) @@ -197,15 +181,21 @@ void TabWidget::setupView(WebView *webView) }); } -WebView *TabWidget::createTab(bool makeCurrent) +WebView *TabWidget::createTab() +{ + WebView *webView = createBackgroundTab(); + setCurrentWidget(webView); + return webView; +} + +WebView *TabWidget::createBackgroundTab() { WebView *webView = new WebView; WebPage *webPage = new WebPage(QWebEngineProfile::defaultProfile(), webView); webView->setPage(webPage); setupView(webView); - addTab(webView, tr("(Untitled)")); - if (makeCurrent) - setCurrentWidget(webView); + int index = addTab(webView, tr("(Untitled)")); + setTabIcon(index, webView->favIcon()); return webView; } @@ -239,7 +229,7 @@ void TabWidget::closeTab(int index) void TabWidget::cloneTab(int index) { if (WebView *view = webView(index)) { - WebView *tab = createTab(false); + WebView *tab = createTab(); tab->setUrl(view->url()); } } |