diff options
| author | Peter Penz <[email protected]> | 2008-06-29 21:40:07 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2008-06-29 21:40:07 +0000 |
| commit | 4cf8450bc4df6bbd8a307a087de54f3986ee4a33 (patch) | |
| tree | 243190432e544fa748ef2d35dc67da5921c22ac6 | |
| parent | 1f3607bdc1f9c4c39049079a973d5027187512c2 (diff) | |
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
| -rw-r--r-- | src/iconmanager.cpp | 11 | ||||
| -rw-r--r-- | src/iconmanager.h | 5 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/iconmanager.cpp b/src/iconmanager.cpp index 69250d6d7..cde3ab59e 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 06d7df85a..aee7672aa 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; |
