QNX: Fix QWindow autotest
On QNX a actual platform window is not created unless the window is explicitly postet (raster) or a swapBuffers (opengl) is executed. Change-Id: Ia06b97ea1a477d59e78d74d895c5d6ba6dd86edf Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
This commit is contained in:
parent
3f4277c264
commit
7ca958eb61
@ -49,6 +49,10 @@
|
|||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QStyleHints>
|
#include <QStyleHints>
|
||||||
|
|
||||||
|
#if defined(Q_OS_QNX)
|
||||||
|
#include <QOpenGLContext>
|
||||||
|
#endif
|
||||||
|
|
||||||
// For QSignalSpy slot connections.
|
// For QSignalSpy slot connections.
|
||||||
Q_DECLARE_METATYPE(Qt::ScreenOrientation)
|
Q_DECLARE_METATYPE(Qt::ScreenOrientation)
|
||||||
Q_DECLARE_METATYPE(QWindow::Visibility)
|
Q_DECLARE_METATYPE(QWindow::Visibility)
|
||||||
@ -122,6 +126,9 @@ public:
|
|||||||
{
|
{
|
||||||
reset();
|
reset();
|
||||||
setFlags(flags);
|
setFlags(flags);
|
||||||
|
#if defined(Q_OS_QNX)
|
||||||
|
setSurfaceType(QSurface::OpenGLSurface);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset()
|
void reset()
|
||||||
@ -187,7 +194,12 @@ void tst_QWindow::resizeEventAfterResize()
|
|||||||
// Make sure we get a resizeEvent after calling resize
|
// Make sure we get a resizeEvent after calling resize
|
||||||
window.resize(400, 100);
|
window.resize(400, 100);
|
||||||
|
|
||||||
|
#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
|
||||||
|
// so we only expect one resize event
|
||||||
|
QTRY_COMPARE(window.received(QEvent::Resize), 1);
|
||||||
|
#else
|
||||||
QTRY_COMPARE(window.received(QEvent::Resize), 2);
|
QTRY_COMPARE(window.received(QEvent::Resize), 2);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QWindow::positioning_data()
|
void tst_QWindow::positioning_data()
|
||||||
@ -244,13 +256,24 @@ void tst_QWindow::positioning()
|
|||||||
|
|
||||||
window.setWindowState(Qt::WindowFullScreen);
|
window.setWindowState(Qt::WindowFullScreen);
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
|
||||||
|
// so we only expect one resize event
|
||||||
|
Q_UNUSED(resizecount);
|
||||||
|
QTRY_COMPARE(window.received(QEvent::Resize), 1);
|
||||||
|
#else
|
||||||
QTRY_COMPARE(window.received(QEvent::Resize), 2);
|
QTRY_COMPARE(window.received(QEvent::Resize), 2);
|
||||||
|
#endif
|
||||||
|
|
||||||
QTest::qWait(2000);
|
QTest::qWait(2000);
|
||||||
|
|
||||||
window.setWindowState(Qt::WindowNoState);
|
window.setWindowState(Qt::WindowNoState);
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
|
||||||
|
// so we only expect one resize event
|
||||||
|
QTRY_COMPARE(window.received(QEvent::Resize), 1);
|
||||||
|
#else
|
||||||
QTRY_COMPARE(window.received(QEvent::Resize), resizecount);
|
QTRY_COMPARE(window.received(QEvent::Resize), resizecount);
|
||||||
|
#endif
|
||||||
|
|
||||||
QTRY_COMPARE(originalPos, window.position());
|
QTRY_COMPARE(originalPos, window.position());
|
||||||
QTRY_COMPARE(originalFramePos, window.framePosition());
|
QTRY_COMPARE(originalFramePos, window.framePosition());
|
||||||
@ -309,6 +332,13 @@ void tst_QWindow::isActive()
|
|||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
|
||||||
QTRY_VERIFY(window.isExposed());
|
QTRY_VERIFY(window.isExposed());
|
||||||
|
#if defined(Q_OS_QNX) // We either need to create a eglSurface or a create a backing store
|
||||||
|
// and then post the window in order for screen to show the window
|
||||||
|
QOpenGLContext context;
|
||||||
|
context.create();
|
||||||
|
context.makeCurrent(&window);
|
||||||
|
context.swapBuffers(&window);
|
||||||
|
#endif
|
||||||
QTRY_COMPARE(window.received(QEvent::Resize), 1);
|
QTRY_COMPARE(window.received(QEvent::Resize), 1);
|
||||||
QTRY_VERIFY(QGuiApplication::focusWindow() == &window);
|
QTRY_VERIFY(QGuiApplication::focusWindow() == &window);
|
||||||
QVERIFY(window.isActive());
|
QVERIFY(window.isActive());
|
||||||
@ -511,7 +541,7 @@ void tst_QWindow::testInputEvents()
|
|||||||
// Now with null pointer as window. local param should not be utilized:
|
// Now with null pointer as window. local param should not be utilized:
|
||||||
// handleMouseEvent() with tlw == 0 means the event is in global coords only.
|
// handleMouseEvent() with tlw == 0 means the event is in global coords only.
|
||||||
window.mousePressButton = window.mouseReleaseButton = 0;
|
window.mousePressButton = window.mouseReleaseButton = 0;
|
||||||
QPointF nonWindowGlobal(500, 500); // not inside the window
|
QPointF nonWindowGlobal(2000, 500); // not inside the window
|
||||||
QWindowSystemInterface::handleMouseEvent(0, nonWindowGlobal, nonWindowGlobal, Qt::LeftButton);
|
QWindowSystemInterface::handleMouseEvent(0, nonWindowGlobal, nonWindowGlobal, Qt::LeftButton);
|
||||||
QWindowSystemInterface::handleMouseEvent(0, nonWindowGlobal, nonWindowGlobal, Qt::NoButton);
|
QWindowSystemInterface::handleMouseEvent(0, nonWindowGlobal, nonWindowGlobal, Qt::NoButton);
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
@ -913,10 +943,21 @@ void tst_QWindow::activateAndClose()
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < 10; ++i) {
|
for (int i = 0; i < 10; ++i) {
|
||||||
QWindow window;
|
QWindow window;
|
||||||
|
#if defined(Q_OS_QNX)
|
||||||
|
window.setSurfaceType(QSurface::OpenGLSurface);
|
||||||
|
#endif
|
||||||
// qWaitForWindowActive will block for the duration of
|
// qWaitForWindowActive will block for the duration of
|
||||||
// of the timeout if the window is at 0,0
|
// of the timeout if the window is at 0,0
|
||||||
window.setGeometry(QGuiApplication::primaryScreen()->availableGeometry().adjusted(1, 1, -1, -1));
|
window.setGeometry(QGuiApplication::primaryScreen()->availableGeometry().adjusted(1, 1, -1, -1));
|
||||||
window.showNormal();
|
window.showNormal();
|
||||||
|
#if defined(Q_OS_QNX) // We either need to create a eglSurface or a create a backing store
|
||||||
|
// and then post the window in order for screen to show the window
|
||||||
|
QTest::qWaitForWindowExposed(&window);
|
||||||
|
QOpenGLContext context;
|
||||||
|
context.create();
|
||||||
|
context.makeCurrent(&window);
|
||||||
|
context.swapBuffers(&window);
|
||||||
|
#endif
|
||||||
window.requestActivate();
|
window.requestActivate();
|
||||||
QVERIFY(QTest::qWaitForWindowActive(&window));
|
QVERIFY(QTest::qWaitForWindowActive(&window));
|
||||||
QCOMPARE(qGuiApp->focusWindow(), &window);
|
QCOMPARE(qGuiApp->focusWindow(), &window);
|
||||||
@ -1252,15 +1293,26 @@ void tst_QWindow::initialSize()
|
|||||||
Window w;
|
Window w;
|
||||||
w.setWidth(200);
|
w.setWidth(200);
|
||||||
w.show();
|
w.show();
|
||||||
|
#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
|
||||||
|
// so we only expect one resize event
|
||||||
|
QTRY_COMPARE(w.width(), qGuiApp->primaryScreen()->availableGeometry().width());
|
||||||
|
#else
|
||||||
QTRY_COMPARE(w.width(), 200);
|
QTRY_COMPARE(w.width(), 200);
|
||||||
|
#endif
|
||||||
QTRY_VERIFY(w.height() > 0);
|
QTRY_VERIFY(w.height() > 0);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Window w;
|
Window w;
|
||||||
w.resize(200, 42);
|
w.resize(200, 42);
|
||||||
w.show();
|
w.show();
|
||||||
|
#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
|
||||||
|
// so we only expect one resize event
|
||||||
|
QTRY_COMPARE(w.width(), qGuiApp->primaryScreen()->availableGeometry().width());
|
||||||
|
QTRY_COMPARE(w.height(), qGuiApp->primaryScreen()->availableGeometry().height());
|
||||||
|
#else
|
||||||
QTRY_COMPARE(w.width(), 200);
|
QTRY_COMPARE(w.width(), 200);
|
||||||
QTRY_COMPARE(w.height(), 42);
|
QTRY_COMPARE(w.height(), 42);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user