Пример #1
0
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;
}
Пример #2
0
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?
    }
}
Пример #3
0
/**
 * 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;
}
Пример #4
0
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);
}