summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2022-08-23 14:24:36 +0200
committerMikolaj Boc <mikolaj.boc@qt.io>2022-08-24 17:50:25 +0200
commit11f12521bcd9c76f0ff5c60fb8785aba33ec7ca7 (patch)
tree5cf2eb6ccad5143628146c793f84ae64e2b73261 /tests
parent0acb56518d72c09650dd83ca34a7d5bb0763b06a (diff)
Resolve window focusing problems on WASM
- Moved the modal window resolution to QWasmWindow::requestActivateWindow so that multiple async activation events are not issued in unpredictable patterns. - Request activation on added windows and on stack top in case of window removal Pick-to: 6.4 Change-Id: I6f02cf1b7e83abb7961caf311ffc83e91c8bf810 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/wasm/tst_qwasmwindowstack.cpp45
1 files changed, 13 insertions, 32 deletions
diff --git a/tests/auto/wasm/tst_qwasmwindowstack.cpp b/tests/auto/wasm/tst_qwasmwindowstack.cpp
index 3c1165353c..f978679a15 100644
--- a/tests/auto/wasm/tst_qwasmwindowstack.cpp
+++ b/tests/auto/wasm/tst_qwasmwindowstack.cpp
@@ -23,8 +23,7 @@ class tst_QWasmWindowStack : public QObject
public:
tst_QWasmWindowStack()
- : m_mockCallback(
- std::bind(&tst_QWasmWindowStack::onTopWindowChanged, this, std::placeholders::_1))
+ : m_mockCallback(std::bind(&tst_QWasmWindowStack::onTopWindowChanged, this))
{
}
@@ -39,11 +38,11 @@ private slots:
void removingTheRoot();
private:
- void onTopWindowChanged(QWasmWindow *topWindow)
+ void onTopWindowChanged()
{
++m_topLevelChangedCallCount;
if (m_onTopLevelChangedAction)
- m_onTopLevelChangedAction(topWindow);
+ m_onTopLevelChangedAction();
}
void verifyTopWindowChangedCalled(int expected = 1)
@@ -76,19 +75,15 @@ void tst_QWasmWindowStack::insertion()
{
QWasmWasmWindowStack stack(m_mockCallback);
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) { QVERIFY(topWindow == &m_root); };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_root); };
stack.pushWindow(&m_root);
verifyTopWindowChangedCalled();
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window1);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window1); };
stack.pushWindow(&m_window1);
verifyTopWindowChangedCalled();
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window2);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window2); };
stack.pushWindow(&m_window2);
verifyTopWindowChangedCalled();
}
@@ -111,9 +106,7 @@ void tst_QWasmWindowStack::raisingTheRootIsImpossible()
QCOMPARE(&m_window5, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window2);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window2); };
stack.raise(&m_window2);
verifyTopWindowChangedCalled();
}
@@ -133,9 +126,7 @@ void tst_QWasmWindowStack::raising()
QCOMPARE(&m_window5, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window1);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window1); };
stack.raise(&m_window1);
verifyTopWindowChangedCalled();
QCOMPARE(&m_window1, stack.topWindow());
@@ -144,9 +135,7 @@ void tst_QWasmWindowStack::raising()
verifyTopWindowChangedCalled(0);
QCOMPARE(&m_window1, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window3);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window3); };
stack.raise(&m_window3);
verifyTopWindowChangedCalled();
QCOMPARE(&m_window3, stack.topWindow());
@@ -168,9 +157,7 @@ void tst_QWasmWindowStack::lowering()
QCOMPARE(&m_window5, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window4);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window4); };
stack.lower(&m_window5);
// Window order: 4 3 2 1 5 R
verifyTopWindowChangedCalled();
@@ -201,9 +188,7 @@ void tst_QWasmWindowStack::removing()
QCOMPARE(&m_window5, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window4);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window4); };
stack.removeWindow(&m_window5);
// Window order: 4 3 2 1 R
verifyTopWindowChangedCalled();
@@ -237,9 +222,7 @@ void tst_QWasmWindowStack::removingTheRoot()
verifyTopWindowChangedCalled(0);
QCOMPARE(&m_window3, stack.topWindow());
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window1);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window1); };
// Check that the new bottom window is not treated specially as a root
stack.raise(&m_window1);
// Window order: 1 3 2
@@ -248,9 +231,7 @@ void tst_QWasmWindowStack::removingTheRoot()
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
getWindowsFrontToBack(&stack).begin()));
- m_onTopLevelChangedAction = [this](QWasmWindow *topWindow) {
- QVERIFY(topWindow == &m_window3);
- };
+ m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window3); };
// Check that the new bottom window is not treated specially as a root
stack.lower(&m_window1);
// Window order: 3 2 1