summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-03-16 10:01:29 +0100
committerKent Hansen <kent.hansen@nokia.com>2012-03-16 10:01:29 +0100
commit440f452aa3a5609e5f6006a03ac36d41462d5908 (patch)
tree598d682291945055e4f6feb08a228212648482c1 /src/testlib
parentcd1e62ffc121cc68c5a133a8095d431f04d966ce (diff)
parentd4959fa6376255ab4adf8adaeb2ee47ae6b679d2 (diff)
Merge master into api_changes
Conflicts: src/corelib/kernel/qmetatype.cpp src/gui/kernel/qplatformsurface_qpa.cpp tests/auto/corelib/tools/qtimeline/qtimeline.pro Change-Id: Iff3fff34eeeb06f02369767ddfce44cfde505178
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qtestaccessible.h30
-rw-r--r--src/testlib/qtestmouse.h17
-rw-r--r--src/testlib/qtestsystem.h22
3 files changed, 42 insertions, 27 deletions
diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h
index f9b1b97ac6..807cc2f846 100644
--- a/src/testlib/qtestaccessible.h
+++ b/src/testlib/qtestaccessible.h
@@ -63,7 +63,8 @@ QT_BEGIN_NAMESPACE
class QObject;
-typedef QList<QAccessibleEvent> EventList;
+// Use pointers since we subclass QAccessibleEvent
+typedef QList<QAccessibleEvent*> EventList;
bool operator==(const QAccessibleEvent &l, const QAccessibleEvent &r)
{
@@ -100,8 +101,18 @@ public:
static bool verifyEvent(const QAccessibleEvent& ev)
{
if (eventList().isEmpty())
- return FALSE;
- return eventList().takeFirst() == ev;
+ return false;
+ QAccessibleEvent *first = eventList().takeFirst();
+ bool res = *first == ev;
+ delete first;
+ return res;
+ }
+ static bool containsEvent(const QAccessibleEvent &event) {
+ Q_FOREACH (QAccessibleEvent *ev, eventList()) {
+ if (*ev == event)
+ return true;
+ }
+ return false;
}
private:
@@ -129,17 +140,16 @@ private:
}
}
- static void updateHandler(const QAccessibleEvent &event)
+ static void updateHandler(QAccessibleEvent *event)
{
eventList().append(copyEvent(event));
}
-
- static QAccessibleEvent copyEvent(const QAccessibleEvent &event)
+ static QAccessibleEvent *copyEvent(QAccessibleEvent *event)
{
- if (event.type() == QAccessible::StateChanged)
- return QAccessibleStateChangeEvent(static_cast<const QAccessibleStateChangeEvent*>(&event)->changedStates(),
- event.object(), event.child());
- return QAccessibleEvent(event.type(), event.object(), event.child());
+ if (event->type() == QAccessible::StateChanged)
+ return new QAccessibleStateChangeEvent(static_cast<const QAccessibleStateChangeEvent*>(event)->changedStates(),
+ event->object(), event->child());
+ return new QAccessibleEvent(event->type(), event->object(), event->child());
}
static EventList &eventList()
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index 593e164b01..441cfa1f65 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -70,6 +70,15 @@ namespace QTest
{
enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove };
+ static void waitForEvents()
+ {
+#ifdef Q_OS_MAC
+ QTest::qWait(20);
+#else
+ qApp->processEvents();
+#endif
+ }
+
static void mouseEvent(MouseAction action, QWindow *window, Qt::MouseButton button,
Qt::KeyboardModifiers stateKey, QPoint pos, int delay=-1)
{
@@ -119,15 +128,11 @@ namespace QTest
case MouseMove:
QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),lastButton,stateKey);
//QCursor::setPos(window->mapToGlobal(pos));
-#ifdef Q_OS_MAC
- QTest::qWait(20);
-#else
- qApp->processEvents();
-#endif
- return;
+ break;
default:
QTEST_ASSERT(false);
}
+ waitForEvents();
}
inline void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h
index 1f10967557..ade5f4c8ac 100644
--- a/src/testlib/qtestsystem.h
+++ b/src/testlib/qtestsystem.h
@@ -53,9 +53,6 @@ QT_BEGIN_NAMESPACE
class QWidget;
-#ifdef Q_WS_X11
-extern void qt_x11_wait_for_window_manager(QWidget *w);
-#endif
namespace QTest
{
@@ -74,22 +71,25 @@ namespace QTest
inline static bool qWaitForWindowShown(QWidget *window)
{
-#if defined(Q_WS_X11)
- qt_x11_wait_for_window_manager(window);
- QCoreApplication::processEvents();
-#else
Q_UNUSED(window);
qWait(200);
-#endif
return true;
}
+
inline static bool qWaitForWindowShown(QWindow *window)
{
- Q_UNUSED(window);
- qWait(200);
+ QElapsedTimer timer;
+ timer.start();
+ while (!window->isExposed()) {
+ int remaining = int(timer.elapsed()) - 1000;
+ if (remaining <= 0)
+ break;
+ QCoreApplication::processEvents(QEventLoop::AllEvents, remaining);
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+ QTest::qSleep(10);
+ }
return true;
}
-
}
QT_END_NAMESPACE