X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/06e5202c4727df7295fc7a515e41f65a9c2fcdde..681d8bb6c:/src/kitemviews/private/kfileitemclipboard.cpp diff --git a/src/kitemviews/private/kfileitemclipboard.cpp b/src/kitemviews/private/kfileitemclipboard.cpp index c5f88194d..2bc96a0fa 100644 --- a/src/kitemviews/private/kfileitemclipboard.cpp +++ b/src/kitemviews/private/kfileitemclipboard.cpp @@ -19,7 +19,8 @@ #include "kfileitemclipboard.h" -#include +#include + #include #include #include @@ -29,7 +30,7 @@ class KFileItemClipboardSingleton public: KFileItemClipboard instance; }; -K_GLOBAL_STATIC(KFileItemClipboardSingleton, s_KFileItemClipboard) +Q_GLOBAL_STATIC(KFileItemClipboardSingleton, s_KFileItemClipboard) @@ -38,12 +39,12 @@ KFileItemClipboard* KFileItemClipboard::instance() return &s_KFileItemClipboard->instance; } -bool KFileItemClipboard::isCut(const KUrl& url) const +bool KFileItemClipboard::isCut(const QUrl& url) const { return m_cutItems.contains(url); } -QList KFileItemClipboard::cutItems() const +QList KFileItemClipboard::cutItems() const { return m_cutItems.toList(); } @@ -55,18 +56,30 @@ KFileItemClipboard::~KFileItemClipboard() void KFileItemClipboard::updateCutItems() { const QMimeData* mimeData = QApplication::clipboard()->mimeData(); - m_cutItems = KUrl::List::fromMimeData(mimeData).toSet(); + + // mimeData can be 0 according to https://bugs.kde.org/show_bug.cgi?id=335053 + if (!mimeData) { + m_cutItems.clear(); + emit cutItemsChanged(); + return; + } + + const QByteArray data = mimeData->data(QStringLiteral("application/x-kde-cutselection")); + const bool isCutSelection = (!data.isEmpty() && data.at(0) == QLatin1Char('1')); + if (isCutSelection) { + m_cutItems = KUrlMimeData::urlsFromMimeData(mimeData).toSet(); + } else { + m_cutItems.clear(); + } emit cutItemsChanged(); } KFileItemClipboard::KFileItemClipboard() : - QObject(0), + QObject(nullptr), m_cutItems() { updateCutItems(); - connect(QApplication::clipboard(), SIGNAL(dataChanged()), - this, SLOT(updateCutItems())); + connect(QApplication::clipboard(), &QClipboard::dataChanged, + this, &KFileItemClipboard::updateCutItems); } - -#include "kfileitemclipboard.moc"