Add QTest::qWaitForWindowFocused for checking focus window
As opposed to QTest::qWaitForWindowActive, which checks if the window is active, which is not a guarantee that the window has focus. Task-number: QTBUG-119287 Change-Id: I9fe65b0474095389f6518ebaaf07c71143b6f459 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
311f889632
commit
9eb06a2848
@ -29,7 +29,7 @@ QT_BEGIN_NAMESPACE
|
||||
\note Since focus is an exclusive property, \a window may loose its focus to another window at
|
||||
any time - even after the method has returned \c true.
|
||||
|
||||
\sa qWaitForWindowExposed(), QWindow::isActive()
|
||||
\sa qWaitForWindowExposed(), qWaitForWindowFocused(), QWindow::isActive()
|
||||
*/
|
||||
Q_GUI_EXPORT bool QTest::qWaitForWindowActive(QWindow *window, int timeout)
|
||||
{
|
||||
@ -44,6 +44,27 @@ Q_GUI_EXPORT bool QTest::qWaitForWindowActive(QWindow *window, int timeout)
|
||||
return QTest::qWaitFor([&]() { return window->isActive(); }, timeout);
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 6.7
|
||||
|
||||
Returns \c true, if \a window is the focus window within \a timeout milliseconds. Otherwise returns \c false.
|
||||
|
||||
The method is useful in tests that call QWindow::show() and rely on the window
|
||||
having focus (for receiving keyboard events e.g.) before proceeding.
|
||||
|
||||
\note The method will time out and return \c false if another window prevents \a window from
|
||||
becoming focused.
|
||||
|
||||
\note Since focus is an exclusive property, \a window may loose its focus to another window at
|
||||
any time - even after the method has returned \c true.
|
||||
|
||||
\sa qWaitForWindowExposed(), qWaitForWindowActive(), QGuiApplication::focusWindow()
|
||||
*/
|
||||
Q_GUI_EXPORT bool QTest::qWaitForWindowFocused(QWindow *window, int timeout)
|
||||
{
|
||||
return QTest::qWaitFor([&]() { return qGuiApp->focusWindow() == window; }, timeout);
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 5.0
|
||||
|
||||
|
@ -23,6 +23,7 @@ Q_GUI_EXPORT bool qt_handleTouchEventv2(QWindow *w, const QPointingDevice *devic
|
||||
namespace QTest {
|
||||
|
||||
[[nodiscard]] Q_GUI_EXPORT bool qWaitForWindowActive(QWindow *window, int timeout = 5000);
|
||||
[[nodiscard]] Q_GUI_EXPORT bool qWaitForWindowFocused(QWindow *window, int timeout = 5000);
|
||||
[[nodiscard]] Q_GUI_EXPORT bool qWaitForWindowExposed(QWindow *window, int timeout = 5000);
|
||||
|
||||
Q_GUI_EXPORT QPointingDevice * createTouchDevice(QInputDevice::DeviceType devType = QInputDevice::DeviceType::TouchScreen,
|
||||
|
@ -60,6 +60,32 @@ Q_WIDGETS_EXPORT bool QTest::qWaitForWindowActive(QWidget *widget, int timeout)
|
||||
timeout);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\since 6.7
|
||||
|
||||
Returns \c true, if \a widget is the focus window within \a timeout milliseconds. Otherwise returns \c false.
|
||||
|
||||
The method is useful in tests that call QWidget::show() and rely on the widget
|
||||
having focus (for receiving keyboard events e.g.) before proceeding.
|
||||
|
||||
\note The method will time out and return \c false if another window prevents \a widget from
|
||||
becoming focused.
|
||||
|
||||
\note Since focus is an exclusive property, \a widget may loose its focus to another window at
|
||||
any time - even after the method has returned \c true.
|
||||
|
||||
\sa qWaitForWindowExposed(), qWaitForWindowActive(), QGuiApplication::focusWindow()
|
||||
*/
|
||||
Q_WIDGETS_EXPORT bool QTest::qWaitForWindowFocused(QWidget *widget, int timeout)
|
||||
{
|
||||
return qWaitForWidgetWindow([&]() {
|
||||
return widget->window()->windowHandle();
|
||||
}, [&](QWindow *window) {
|
||||
return qGuiApp->focusWindow() == window;
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 5.0
|
||||
|
||||
|
@ -15,6 +15,7 @@ class QWidget;
|
||||
namespace QTest {
|
||||
|
||||
[[nodiscard]] Q_WIDGETS_EXPORT bool qWaitForWindowActive(QWidget *widget, int timeout = 5000);
|
||||
[[nodiscard]] Q_WIDGETS_EXPORT bool qWaitForWindowFocused(QWidget *widget, int timeout = 5000);
|
||||
[[nodiscard]] Q_WIDGETS_EXPORT bool qWaitForWindowExposed(QWidget *widget, int timeout = 5000);
|
||||
|
||||
class Q_WIDGETS_EXPORT QTouchEventWidgetSequence : public QTouchEventSequence
|
||||
|
Loading…
x
Reference in New Issue
Block a user