diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 497c13b52..b2c4646a1 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -977,37 +977,14 @@ void KFileItemModelRolesUpdater::startPreviewJob() return; } - // KIO::filePreview() will request the MIME-type of all passed items, which (in the - // worst case) might block the application for several seconds. To prevent such - // a blocking, we only pass items with known mime type to the preview job. - const int count = m_pendingPreviewItems.count(); - KFileItemList itemSubSet; - itemSubSet.reserve(count); + const KFileItemList items = m_pendingPreviewItems; + m_pendingPreviewItems.clear(); - if (m_pendingPreviewItems.first().isMimeTypeKnown()) { - // Some mime types are known already, probably because they were - // determined when loading the icons for the visible items. Start - // a preview job for all items at the beginning of the list which - // have a known mime type. - do { - itemSubSet.append(m_pendingPreviewItems.takeFirst()); - } while (!m_pendingPreviewItems.isEmpty() && m_pendingPreviewItems.first().isMimeTypeKnown()); - } else { - // Determine mime types for MaxBlockTimeout ms, and start a preview - // job for the corresponding items. - QElapsedTimer timer; - timer.start(); - - do { - const KFileItem item = m_pendingPreviewItems.takeFirst(); - item.determineMimeType(); - itemSubSet.append(item); - } while (!m_pendingPreviewItems.isEmpty() && timer.elapsed() < MaxBlockTimeout); - } + const KFileItem &referenceItem = items.first(); - KIO::PreviewJob *job = new KIO::PreviewJob(itemSubSet, cacheSize(), &m_enabledPlugins); + KIO::PreviewJob *job = new KIO::PreviewJob(items, cacheSize(), &m_enabledPlugins); job->setDevicePixelRatio(m_devicePixelRatio); - job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && !itemSubSet.first().isSlow() && m_localFileSizePreviewLimit <= 0); + job->setIgnoreMaximumSize(referenceItem.isLocalFile() && !referenceItem.isSlow() && m_localFileSizePreviewLimit <= 0); if (job->uiDelegate()) { KJobWidgets::setWindow(job, qApp->activeWindow()); } |
