summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-09-17 10:49:33 +0200
committerDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-09-18 14:54:51 +0200
commit2b0f2c1c8452c16723a15f00117c96c57bb017a8 (patch)
tree28a3c95d3191c5f404cb89693307d007cd2eb20b /src/testlib
parentbb3a4e11584aa089e3d0c565522eda28b009a7c5 (diff)
Added a QTest::qWaitForWindowShown function that waits for window manager on X11.
On X11 it calls the qt_x11_wait_for_window_manager from QtGui, allowing to wait until the window has been mapped and reparented into a frame decoration parent. Reviewed-by: Olivier Goffart
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qtestcase.cpp10
-rw-r--r--src/testlib/qtestsystem.h18
2 files changed, 28 insertions, 0 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 74c3af923e..96f8a1bef8 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -731,6 +731,16 @@ QT_BEGIN_NAMESPACE
\sa QTest::qSleep()
*/
+/*! \fn void QTest::qWaitForWindowManager(QWidget *window)
+
+ Waits until the window is shown in the screen. This is mainly useful for
+ asynchronous systems like X11, where a window will be mapped to screen some
+ time after being asked to show itself on the screen.
+
+ Example:
+ \snippet doc/src/snippets/code/src_qtestlib_qtestcase.cpp 24
+*/
+
/*!
\class QTest::QTouchEventSequence
\inmodule QtTest
diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h
index bdcc826df9..540b18d516 100644
--- a/src/testlib/qtestsystem.h
+++ b/src/testlib/qtestsystem.h
@@ -52,6 +52,11 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Test)
+class QWidget;
+#ifdef Q_WS_X11
+extern void qt_x11_wait_for_window_manager(QWidget *w);
+#endif
+
namespace QTest
{
inline static void qWait(int ms)
@@ -65,6 +70,19 @@ namespace QTest
QTest::qSleep(10);
} while (timer.elapsed() < ms);
}
+
+ inline static bool qWaitForWindowShown(QWidget *window)
+ {
+#if defined(Q_WS_X11)
+ qt_x11_wait_for_window_manager(window);
+#elif defined(Q_WS_QWS)
+ qWait(100);
+#else
+ qWait(50);
+#endif
+ return true;
+ }
+
}
QT_END_NAMESPACE