QMimeData* PictureImage::dragObject(QWidget *dragSource, const char *name) { Q_UNUSED(dragSource); // Was used in Qt3? QMimeData* mimeData = new QMimeData(); mimeData->setImageData(m_originalImage); mimeData->setObjectName(name); return mimeData; }
QMimeData* PictureBase::dragObject(QWidget * dragSource, const char * name) { Q_UNUSED(dragSource); QImage image(generateImage(getOriginalSize())); if (image.isNull()) return 0; else { QMimeData* mimeData = new QMimeData(); mimeData->setImageData(image); mimeData->setObjectName(name); return mimeData; // XXX: Qt3 use dragsource here? } }
/** * Mouse move event handler. */ void TiledWindow::mouseMoveEvent(QMouseEvent *ev) { if (!m_buttonPressed || !hasSelection() || (ev->pos() - m_dragStartPos).manhattanLength() < QApplication::startDragDistance()) { return; } QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; mimeData->setObjectName("TiledWindow"); mimeData->setText(name()); drag->setMimeData(mimeData); Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction); (void)dropAction; }
void tst_QClipboard::setMimeData() { if (!PlatformClipboard::isAvailable()) QSKIP("Native clipboard not working in this setup"); QMimeData *mimeData = new QMimeData; const QString TestName(QLatin1String("tst_QClipboard::setMimeData() mimeData")); mimeData->setObjectName(TestName); #if defined(Q_OS_WINCE) // need to set text on CE mimeData->setText(QLatin1String("Qt/CE foo")); #endif QGuiApplication::clipboard()->setMimeData(mimeData); QCOMPARE(QGuiApplication::clipboard()->mimeData(), (const QMimeData *)mimeData); QCOMPARE(QGuiApplication::clipboard()->mimeData()->objectName(), TestName); // set it to the same data again, it shouldn't delete mimeData (and crash as a result) QGuiApplication::clipboard()->setMimeData(mimeData); QCOMPARE(QGuiApplication::clipboard()->mimeData(), (const QMimeData *)mimeData); QCOMPARE(QGuiApplication::clipboard()->mimeData()->objectName(), TestName); QGuiApplication::clipboard()->clear(); const QMimeData *appMimeData = QGuiApplication::clipboard()->mimeData(); QVERIFY(appMimeData != mimeData || appMimeData->objectName() != TestName); // check for crash when using the same mimedata object on several clipboards QMimeData *data = new QMimeData; data->setText("foo"); QGuiApplication::clipboard()->setMimeData(data, QClipboard::Clipboard); QGuiApplication::clipboard()->setMimeData(data, QClipboard::Selection); QGuiApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer); QSignalSpy spySelection(QGuiApplication::clipboard(), SIGNAL(selectionChanged())); QSignalSpy spyData(QGuiApplication::clipboard(), SIGNAL(dataChanged())); QSignalSpy spyFindBuffer(QGuiApplication::clipboard(), SIGNAL(findBufferChanged())); QGuiApplication::clipboard()->clear(QClipboard::Clipboard); QGuiApplication::clipboard()->clear(QClipboard::Selection); // used to crash on X11 QGuiApplication::clipboard()->clear(QClipboard::FindBuffer); if (QGuiApplication::clipboard()->supportsSelection()) QCOMPARE(spySelection.count(), 1); else QCOMPARE(spySelection.count(), 0); if (QGuiApplication::clipboard()->supportsFindBuffer()) QCOMPARE(spyFindBuffer.count(), 1); else QCOMPARE(spyFindBuffer.count(), 0); QCOMPARE(spyData.count(), 1); // an other crash test data = new QMimeData; data->setText("foo"); QGuiApplication::clipboard()->setMimeData(data, QClipboard::Clipboard); QGuiApplication::clipboard()->setMimeData(data, QClipboard::Selection); QGuiApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer); QMimeData *newData = new QMimeData; newData->setText("bar"); spySelection.clear(); spyData.clear(); spyFindBuffer.clear(); QGuiApplication::clipboard()->setMimeData(newData, QClipboard::Clipboard); QGuiApplication::clipboard()->setMimeData(newData, QClipboard::Selection); // used to crash on X11 QGuiApplication::clipboard()->setMimeData(newData, QClipboard::FindBuffer); if (QGuiApplication::clipboard()->supportsSelection()) QCOMPARE(spySelection.count(), 1); else QCOMPARE(spySelection.count(), 0); if (QGuiApplication::clipboard()->supportsFindBuffer()) QCOMPARE(spyFindBuffer.count(), 1); else QCOMPARE(spyFindBuffer.count(), 0); QCOMPARE(spyData.count(), 1); }