summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
diff options
context:
space:
mode:
authorjian liang <jianliang79@gmail.com>2012-09-25 21:33:55 +0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-27 23:51:30 +0200
commit0a7e8350ae0a461d90619382c61e933eb0494be9 (patch)
tree44f222e2ac1c733f28e9e201be9af0eb2a70c964 /tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
parentf9547c89ea9fd0e6d571db840c5cadab079df607 (diff)
Fix drag and drop with native widgets
Task-number: QTBUG-27336 Don't check 'widget != m_widget' in QWidgetWindow::handleDragEnterMoveEvent() since the current window's parent widget may be the actual drop target. I replace it with a check '!widget->isWindow()' to prevent we pass through a top level window. I also change 'widget->mapFrom(m_widget, event->pos())' to 'widget->mapFromGlobal(m_widget->mapToGlobal(event->pos()))' since m_widget may not be widget's parent. Change-Id: Ia4f10f85ccdf1e27223ddc51afabd98b5d16f2fb Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp')
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index 65284bfbb6..230fcebfcb 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -409,7 +409,13 @@ static const char *expectedLogC[] = {
"acceptingDropsWidget2::dragMoveEvent at 1,31 action=1 MIME_DATA_ADDRESS 'testmimetext'",
"Event at 11,241 accepted",
"acceptingDropsWidget2::dropEvent at 1,51 action=1 MIME_DATA_ADDRESS 'testmimetext'",
- "Event at 11,261 accepted"
+ "Event at 11,261 accepted",
+ "acceptingDropsWidget1::dragEnterEvent at 10,10 action=1 MIME_DATA_ADDRESS 'testmimetext'",
+ "Event at 0,0 accepted",
+ "acceptingDropsWidget1::dragMoveEvent at 11,11 action=1 MIME_DATA_ADDRESS 'testmimetext'",
+ "Event at 1,1 accepted",
+ "acceptingDropsWidget1::dropEvent at 12,12 action=1 MIME_DATA_ADDRESS 'testmimetext'",
+ "Event at 2,2 accepted"
};
// A widget that logs the DnD events it receives into a QStringList.
@@ -497,6 +503,12 @@ void tst_QWidget_window::tst_dnd()
dropsAcceptingWidget1->resize(180, 80);
dropsAcceptingWidget1->move(10, 110);
+ // Create a native widget on top of dropsAcceptingWidget1 to check QTBUG-27336
+ QWidget *nativeWidget = new QWidget(dropsAcceptingWidget1);
+ nativeWidget->resize(160, 60);
+ nativeWidget->move(10, 10);
+ nativeWidget->winId();
+
QWidget *dropsAcceptingWidget2 = new DnDEventLoggerWidget(&log, &dndTestWidget);
dropsAcceptingWidget2->setAcceptDrops(true);
dropsAcceptingWidget2->setObjectName(QLatin1String("acceptingDropsWidget2"));
@@ -535,6 +547,19 @@ void tst_QWidget_window::tst_dnd()
}
}
+ window = nativeWidget->windowHandle();
+ QDragEnterEvent enterEvent(QPoint(0, 0), Qt::CopyAction, &mimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->sendEvent(window, &enterEvent);
+ log.push_back(msgEventAccepted(enterEvent));
+
+ QDragMoveEvent moveEvent(QPoint(1, 1), Qt::CopyAction, &mimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->sendEvent(window, &moveEvent);
+ log.push_back(msgEventAccepted(moveEvent));
+
+ QDropEvent dropEvent(QPoint(2, 2), Qt::CopyAction, &mimeData, Qt::LeftButton, Qt::NoModifier);
+ qApp->sendEvent(window, &dropEvent);
+ log.push_back(msgEventAccepted(dropEvent));
+
// Compare logs.
QStringList expectedLog;
const int expectedLogSize = int(sizeof(expectedLogC) / sizeof(expectedLogC[0]));