Client: Add test for starting a drag operation without input focus

This used to crash the client.

Task-number: QTBUG-76368
Change-Id: I855f3bda15b4b2bccbdb2aa8239e26c0eecf7cb3
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This commit is contained in:
Johan Klokkhammer Helsing 2019-06-14 08:45:29 +02:00
parent 0816fda053
commit 3b34e5f86d

View File

@ -30,9 +30,8 @@
#include <QtGui/QRasterWindow>
#include <QtGui/QOpenGLWindow>
//TODO: move?
#include <QtGui/QClipboard>
#include <QtGui/QDrag>
using namespace MockCompositor;
@ -60,6 +59,7 @@ private slots:
void pasteUtf8();
void destroysPreviousSelection();
void destroysSelectionWithSurface();
void dragWithoutFocus();
};
void tst_datadevicev1::initTestCase()
@ -209,5 +209,22 @@ void tst_datadevicev1::destroysSelectionWithSurface()
QCOMPOSITOR_TRY_COMPARE(dataDevice()->m_sentSelectionOffers.size(), 0);
}
// The application should not crash if it attempts to start a drag operation
// when it doesn't have input focus (QTBUG-76368)
void tst_datadevicev1::dragWithoutFocus()
{
QRasterWindow window;
window.resize(64, 64);
window.show();
QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial);
auto *mimeData = new QMimeData;
const QByteArray data("testData");
mimeData->setData("text/plain", data);
QDrag drag(&window);
drag.setMimeData(mimeData);
drag.exec();
}
QCOMPOSITOR_TEST_MAIN(tst_datadevicev1)
#include "tst_datadevicev1.moc"