From 2eec3272c78a3af1e362906654aa6d50b33a4c50 Mon Sep 17 00:00:00 2001 From: Ville Voutilainen Date: Mon, 26 Feb 2018 15:57:55 +0200 Subject: Make qWaitForWindowActive more robust Based on the information we got from Unity developers, we need to check for window's frame geometry to be set, not just window's position to be set. On various window managers, a window is 'ready' once the frame geometry is set. This fixes autotest flakiness of tests that use qWaitForWindowActive. Task-number: QTBUG-66216 Change-Id: Icb664e7b802b474919f3b058c00681574522ccbe Reviewed-by: Simon Hausmann --- src/testlib/qtestsystem.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/testlib') diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h index 79fe68004e..046fe1a3e7 100644 --- a/src/testlib/qtestsystem.h +++ b/src/testlib/qtestsystem.h @@ -114,7 +114,7 @@ namespace QTest { bool becameActive = qWaitFor([&]() { return window->isActive(); }, timeout); - // Try ensuring the platform window receives the real position. + // Try ensuring the platform window receives the real position and geometry. // (i.e. that window->pos() reflects reality) // isActive() ( == FocusIn in case of X) does not guarantee this. It seems some WMs randomly // send the final ConfigureNotify (the one with the non-bogus 0,0 position) after the FocusIn. @@ -122,7 +122,7 @@ namespace QTest // qWaitForWindowShown() will generate bogus results. if (becameActive) { int waitNo = 0; // 0, 0 might be a valid position after all, so do not wait for ever - while (window->position().isNull()) { + while (window->frameGeometry().isNull()) { if (waitNo++ > timeout / 10) break; qWait(10); -- cgit v1.2.3