diff options
| author | Kai Uwe Broulik <[email protected]> | 2019-09-02 09:13:56 +0200 |
|---|---|---|
| committer | Kai Uwe Broulik <[email protected]> | 2019-09-02 09:13:56 +0200 |
| commit | 63c195b7ed9fa11c91dfed59bf00d65b66426339 (patch) | |
| tree | 6d5eecbcb4bdd484aabf51ecf16055b436054e0a /src | |
| parent | 41f7f4e4e89b97b5c7f31452774c37ce953dd125 (diff) | |
[Tab Bar] Resolve tab icon only if visible
Calling KIO::iconNameForUrl will determine mime type of the file potentially blocking.
Don't needless do it when the tab bar isn't visible.
Differential Revision: https://phabricator.kde.org/D23295
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphintabwidget.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index afb5462e1..bd0ee301f 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -171,7 +171,7 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU if (tabPlacement == AfterCurrentTab) { newTabIndex = currentIndex() + 1; } - insertTab(newTabIndex, tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(tabPage)); + insertTab(newTabIndex, tabPage, QIcon() /* loaded in tabInserted */, tabName(tabPage)); if (focusWidget) { // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened @@ -324,7 +324,12 @@ void DolphinTabWidget::tabUrlChanged(const QUrl& url) const int index = indexOf(qobject_cast<QWidget*>(sender())); if (index >= 0) { tabBar()->setTabText(index, tabName(tabPageAt(index))); - tabBar()->setTabIcon(index, QIcon::fromTheme(KIO::iconNameForUrl(url))); + if (tabBar()->isVisible()) { + tabBar()->setTabIcon(index, QIcon::fromTheme(KIO::iconNameForUrl(url))); + } else { + // Mark as dirty, actually load once the tab bar actually gets shown + tabBar()->setTabIcon(index, QIcon()); + } // Emit the currentUrlChanged signal if the url of the current tab has been changed. if (index == currentIndex()) { @@ -352,6 +357,13 @@ void DolphinTabWidget::tabInserted(int index) QTabWidget::tabInserted(index); if (count() > 1) { + // Resolve all pending tab icons + for (int i = 0; i < count(); ++i) { + if (tabBar()->tabIcon(i).isNull()) { + tabBar()->setTabIcon(i, QIcon::fromTheme(KIO::iconNameForUrl(tabPageAt(i)->activeViewContainer()->url()))); + } + } + tabBar()->show(); } |
