From 4cf8450bc4df6bbd8a307a087de54f3986ee4a33 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 29 Jun 2008 21:40:07 +0000 Subject: [PATCH] The check whether there is a cut-selection when receiving a preview consumes 12 % (!) of the runtime in addToPreviewQueue(). The check is now done only once before starting the preview generation and when the clipboard data has been changed. svn path=/trunk/KDE/kdebase/apps/; revision=826126 --- src/iconmanager.cpp | 11 +++++++---- src/iconmanager.h | 5 +++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/iconmanager.cpp b/src/iconmanager.cpp index 69250d6d74..cde3ab59e0 100644 --- a/src/iconmanager.cpp +++ b/src/iconmanager.cpp @@ -85,6 +85,7 @@ IconManager::IconManager(QAbstractItemView* parent, DolphinSortFilterProxyModel* QObject(parent), m_showPreview(false), m_clearItemQueues(true), + m_hasCutSelection(false), m_pendingVisiblePreviews(0), m_view(parent), m_previewTimer(0), @@ -138,7 +139,6 @@ IconManager::~IconManager() } } - void IconManager::setShowPreview(bool show) { if (m_showPreview != show) { @@ -242,8 +242,7 @@ void IconManager::addToPreviewQueue(const KFileItem& item, const QPixmap& pixmap limitToSize(icon, m_view->iconSize()); } - const QMimeData* mimeData = QApplication::clipboard()->mimeData(); - if (KonqMimeData::decodeIsCutSelection(mimeData) && isCutItem(item)) { + if (m_hasCutSelection && isCutItem(item)) { // Remember the current icon in the cache for cut items before // the disabled effect is applied. This makes it possible restoring // the uncut version again when cutting other items. @@ -394,7 +393,8 @@ bool IconManager::isCutItem(const KFileItem& item) const void IconManager::applyCutItemEffect() { const QMimeData* mimeData = QApplication::clipboard()->mimeData(); - if (!KonqMimeData::decodeIsCutSelection(mimeData)) { + m_hasCutSelection = KonqMimeData::decodeIsCutSelection(mimeData); + if (!m_hasCutSelection) { return; } @@ -499,6 +499,9 @@ void IconManager::startPreviewJob(const KFileItemList& items) return; } + const QMimeData* mimeData = QApplication::clipboard()->mimeData(); + m_hasCutSelection = KonqMimeData::decodeIsCutSelection(mimeData); + const QSize size = m_view->iconSize(); KIO::PreviewJob* job = KIO::filePreview(items, 128, 128); connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)), diff --git a/src/iconmanager.h b/src/iconmanager.h index 06d7df85a7..aee7672aa3 100644 --- a/src/iconmanager.h +++ b/src/iconmanager.h @@ -170,6 +170,11 @@ private: */ bool m_clearItemQueues; + /** + * True if a selection has been done which should cut items. + */ + bool m_hasCutSelection; + int m_pendingVisiblePreviews; QAbstractItemView* m_view;