widgets: Don't show an error when trying do paste while there is nothing to paste (4ccd8814) · Commits · Frameworks / KIO · GitLab
Commit 4ccd8814 authored by Tobias Fella's avatar Tobias Fella
Browse files
parent c4025db5
Loading
Loading
Loading
Loading
Loading
Original line number Diff line number Diff line
@@ -129,8 +129,8 @@ void ClipboardUpdaterTest::testPasteAfterDeleteFile()
    createTestDirectory(pasteDir, NoSymlink);
    KIO::Job *job = KIO::paste(clipboard->mimeData(), QUrl::fromLocalFile(pasteDir), KIO::DefaultFlags);
    QVERIFY(job);
    QVERIFY(!job->exec());
    QCOMPARE(job->error(), int(KIO::ERR_NO_CONTENT));
    QVERIFY(job->exec());
    QCOMPARE(job->error(), 0);
}

void ClipboardUpdaterTest::testPasteAfterDeleteFiles()
@@ -152,8 +152,8 @@ void ClipboardUpdaterTest::testPasteAfterDeleteFiles()
    createTestDirectory(pasteDir, NoSymlink);
    KIO::Job *job = KIO::paste(clipboard->mimeData(), QUrl::fromLocalFile(pasteDir), KIO::DefaultFlags);
    QVERIFY(job);
    QVERIFY(!job->exec());
    QCOMPARE(job->error(), int(KIO::ERR_NO_CONTENT));
    QVERIFY(job->exec());
    QCOMPARE(job->error(), 0);
}

#include "moc_clipboardupdatertest.cpp"
Original line number Diff line number Diff line
@@ -195,7 +195,6 @@ void KIOPasteTest::testPasteJob()
    QVERIFY(spy.isValid());
    QVERIFY(spyCopyJobStarted.isValid());
    job->setUiDelegate(nullptr);
    const bool expectedSuccess = !expectedFileName.isEmpty();

    int copying = 0, moving = 0;
    connect(job, &KIO::PasteJob::copyJobStarted, this, [this, &copying, &moving](KIO::CopyJob *copyJob) {
@@ -207,8 +206,8 @@ void KIOPasteTest::testPasteJob()
        });
    });

    QCOMPARE(job->exec(), expectedSuccess);
    if (expectedSuccess) {
    QCOMPARE(job->exec(), true);
    if (!expectedFileName.isEmpty()) {
        const QString destFile = destDir + '/' + expectedFileName;
        QVERIFY2(QFile::exists(destFile), qPrintable(expectedFileName));
        if (isDir) {
Original line number Diff line number Diff line
@@ -144,13 +144,7 @@ static QStringList extractFormats(const QMimeData *mimeData)
        if (format == QLatin1String("application/x-qiconlist")) { // Q3IconView and kde4's libkonq
            continue;
        }
        if (format == QLatin1String("application/x-kde-cutselection")) { // see isClipboardDataCut
            continue;
        }
        if (format == QLatin1String("application/x-kde-suggestedfilename")) {
            continue;
        }
        if (format == QLatin1String("application/x-kde-onlyReplaceEmpty")) { // Prevents emptying Klipper via selection
        if (format.startsWith(QLatin1String("application/x-kde-"))) {
            continue;
        }
        if (format.startsWith(QLatin1String("application/x-qt-"))) { // Qt-internal
@@ -184,10 +178,7 @@ std::pair<KIO::Job *, int> pasteMimeDataImpl(const QMimeData *mimeData, const QU
    } else {
        auto formats = extractFormats(mimeData);
        const auto firstFormat = formats.value(0);
        // Remove formats that shouldn't be exposed to the user
        erase_if(formats, [](const QString &string) -> bool {
            return string.startsWith(u"application/x-kde-");
        });

        if (formats.isEmpty() && firstFormat.isEmpty()) {
            return std::make_pair(nullptr, KIO::ERR_NO_CONTENT);
        } else if (formats.size() > 1) {
Original line number Diff line number Diff line
@@ -45,6 +45,10 @@ void PasteJobPrivate::slotStart()
        q->emitResult();
        return;
    }
    if (!KIO::canPasteMimeData(m_mimeData)) {
        q->emitResult();
        return;
    }
    const bool move = KIO::isClipboardDataCut(m_mimeData);
    KIO::Job *job = nullptr;
    KIO::CopyJob *copyJob = nullptr;