mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-03 07:45:30 +08:00
qt 6.6.0 clean
This commit is contained in:
@ -11,14 +11,16 @@ class tst_LocalFileApi : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
emscripten::val makeAccept(std::vector<emscripten::val> types) {
|
||||
emscripten::val makeAccept(std::vector<emscripten::val> types)
|
||||
{
|
||||
auto accept = emscripten::val::object();
|
||||
accept.set("application/octet-stream",
|
||||
emscripten::val::array(std::move(types)));
|
||||
return accept;
|
||||
}
|
||||
|
||||
emscripten::val makeType(QString description, std::vector<emscripten::val> acceptExtensions) {
|
||||
emscripten::val makeType(QString description, std::vector<emscripten::val> acceptExtensions)
|
||||
{
|
||||
using namespace emscripten;
|
||||
|
||||
auto type = val::object();
|
||||
@ -65,6 +67,8 @@ private Q_SLOTS:
|
||||
void openFileOptions();
|
||||
void saveFileOptions_data();
|
||||
void saveFileOptions();
|
||||
void fileInputAccept_data();
|
||||
void fileInputAccept();
|
||||
};
|
||||
|
||||
bool valDeepEquals(emscripten::val lhs, emscripten::val rhs)
|
||||
@ -79,24 +83,27 @@ bool valDeepEquals(emscripten::val lhs, emscripten::val rhs)
|
||||
void tst_LocalFileApi::fileExtensionFilterTransformation_data()
|
||||
{
|
||||
QTest::addColumn<QString>("qtFileFilter");
|
||||
QTest::addColumn<std::optional<std::string>>("expectedWebExtensionFilter");
|
||||
QTest::addColumn<std::optional<QString>>("expectedWebExtensionFilter");
|
||||
|
||||
QTest::newRow("PNG extension with an asterisk") << QString("*.png") << std::make_optional<std::string>(".png");
|
||||
QTest::newRow("Long extension with an asterisk") << QString("*.someotherfile") << std::make_optional<std::string>(".someotherfile");
|
||||
QTest::newRow(".dat with no asterisk") << QString(".dat") << std::make_optional<std::string>(".dat");
|
||||
QTest::newRow("Multiple asterisks") << QString("*ot*.abc") << std::optional<std::string>();
|
||||
QTest::newRow("Filename") << QString("abcd.abc") << std::optional<std::string>();
|
||||
QTest::newRow("match all") << QString("*.*") << std::optional<std::string>();
|
||||
QTest::newRow("PNG extension with an asterisk")
|
||||
<< QString("*.png") << std::make_optional<QString>(".png");
|
||||
QTest::newRow("Long extension with an asterisk")
|
||||
<< QString("*.someotherfile") << std::make_optional<QString>(".someotherfile");
|
||||
QTest::newRow(".dat with no asterisk")
|
||||
<< QString(".dat") << std::make_optional<QString>(".dat");
|
||||
QTest::newRow("Multiple asterisks") << QString("*ot*.abc") << std::optional<QString>();
|
||||
QTest::newRow("Filename") << QString("abcd.abc") << std::optional<QString>();
|
||||
QTest::newRow("match all") << QString("*.*") << std::optional<QString>();
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::fileExtensionFilterTransformation()
|
||||
{
|
||||
QFETCH(QString, qtFileFilter);
|
||||
QFETCH(std::optional<std::string>, expectedWebExtensionFilter);
|
||||
QFETCH(std::optional<QString>, expectedWebExtensionFilter);
|
||||
|
||||
auto result = LocalFileApi::Type::Accept::MimeType::Extension::fromQt(qtFileFilter);
|
||||
if (expectedWebExtensionFilter) {
|
||||
QCOMPARE_EQ(expectedWebExtensionFilter, result->asVal().as<std::string>());
|
||||
QCOMPARE_EQ(expectedWebExtensionFilter, result->value());
|
||||
} else {
|
||||
QVERIFY(!result.has_value());
|
||||
}
|
||||
@ -107,34 +114,37 @@ void tst_LocalFileApi::acceptTransformation_data()
|
||||
using namespace emscripten;
|
||||
|
||||
QTest::addColumn<QString>("qtFilterList");
|
||||
QTest::addColumn<emscripten::val>("expectedWebType");
|
||||
QTest::addColumn<QStringList>("expectedExtensionList");
|
||||
|
||||
QTest::newRow("Multiple types") << QString("*.png *.other *.txt")
|
||||
<< makeAccept(std::vector<val> { val(".png"), val(".other"), val(".txt") });
|
||||
QTest::newRow("Multiple types")
|
||||
<< QString("*.png *.other *.txt") << QStringList{ ".png", ".other", ".txt" };
|
||||
|
||||
QTest::newRow("Single type") << QString("*.png")
|
||||
<< makeAccept(std::vector<val> { val(".png") });
|
||||
QTest::newRow("Single type") << QString("*.png") << QStringList{ ".png" };
|
||||
|
||||
QTest::newRow("No filter when accepts all") << QString("*.*")
|
||||
<< val::undefined();
|
||||
QTest::newRow("No filter when accepts all") << QString("*.*") << QStringList();
|
||||
|
||||
QTest::newRow("No filter when one filter accepts all") << QString("*.* *.jpg")
|
||||
<< val::undefined();
|
||||
QTest::newRow("No filter when one filter accepts all") << QString("*.* *.jpg") << QStringList();
|
||||
|
||||
QTest::newRow("Weird spaces") << QString(" *.jpg *.png *.icon ")
|
||||
<< makeAccept(std::vector<val> { val(".jpg"), val(".png"), val(".icon") });
|
||||
<< QStringList{ ".jpg", ".png", ".icon" };
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::acceptTransformation()
|
||||
{
|
||||
QFETCH(QString, qtFilterList);
|
||||
QFETCH(emscripten::val, expectedWebType);
|
||||
QFETCH(QStringList, expectedExtensionList);
|
||||
|
||||
auto result = LocalFileApi::Type::Accept::fromQt(qtFilterList);
|
||||
if (!expectedWebType.isUndefined()) {
|
||||
QVERIFY(valDeepEquals(result->asVal(), expectedWebType));
|
||||
} else {
|
||||
if (expectedExtensionList.isEmpty()) {
|
||||
QVERIFY(!result.has_value());
|
||||
} else {
|
||||
QStringList transformed;
|
||||
std::transform(result->mimeType().extensions().begin(),
|
||||
result->mimeType().extensions().end(), std::back_inserter(transformed),
|
||||
[](const LocalFileApi::Type::Accept::MimeType::Extension &extension) {
|
||||
return extension.value().toString();
|
||||
});
|
||||
QCOMPARE_EQ(expectedExtensionList, transformed);
|
||||
}
|
||||
}
|
||||
|
||||
@ -143,26 +153,31 @@ void tst_LocalFileApi::typeTransformation_data()
|
||||
using namespace emscripten;
|
||||
|
||||
QTest::addColumn<QString>("qtFilterList");
|
||||
QTest::addColumn<emscripten::val>("expectedWebType");
|
||||
QTest::addColumn<QString>("expectedDescription");
|
||||
QTest::addColumn<QStringList>("expectedExtensions");
|
||||
|
||||
QTest::newRow("With description") << QString("Text files (*.txt)")
|
||||
<< makeType("Text files", std::vector<val> { val(".txt") });
|
||||
QTest::newRow("With description")
|
||||
<< QString("Text files (*.txt)") << QString("Text files") << QStringList{ ".txt" };
|
||||
|
||||
QTest::newRow("No description") << QString("*.jpg")
|
||||
<< makeType("", std::vector<val> { val(".jpg") });
|
||||
QTest::newRow("No description") << QString("*.jpg") << QString("") << QStringList{ ".jpg" };
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::typeTransformation()
|
||||
{
|
||||
QFETCH(QString, qtFilterList);
|
||||
QFETCH(emscripten::val, expectedWebType);
|
||||
QFETCH(QString, expectedDescription);
|
||||
QFETCH(QStringList, expectedExtensions);
|
||||
|
||||
auto result = LocalFileApi::Type::fromQt(qtFilterList);
|
||||
if (!expectedWebType.isUndefined()) {
|
||||
QVERIFY(valDeepEquals(result->asVal(), expectedWebType));
|
||||
} else {
|
||||
QVERIFY(!result.has_value());
|
||||
}
|
||||
QCOMPARE_EQ(result->description(), expectedDescription);
|
||||
|
||||
QStringList transformed;
|
||||
std::transform(result->accept()->mimeType().extensions().begin(),
|
||||
result->accept()->mimeType().extensions().end(), std::back_inserter(transformed),
|
||||
[](const LocalFileApi::Type::Accept::MimeType::Extension &extension) {
|
||||
return extension.value().toString();
|
||||
});
|
||||
QCOMPARE_EQ(expectedExtensions, transformed);
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::openFileOptions_data()
|
||||
@ -217,5 +232,29 @@ void tst_LocalFileApi::saveFileOptions()
|
||||
QVERIFY(valDeepEquals(result, expectedWebType));
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::fileInputAccept_data()
|
||||
{
|
||||
using namespace emscripten;
|
||||
|
||||
QTest::addColumn<QStringList>("qtFilterList");
|
||||
QTest::addColumn<QString>("expectedAccept");
|
||||
|
||||
QTest::newRow("Multiple files")
|
||||
<< QStringList{ "Text files (*.txt)", "Images (*.jpg *.png)", "*.bat" }
|
||||
<< ".txt,.jpg,.png,.bat";
|
||||
QTest::newRow("Spaces") << QStringList{ " Documents (*.doc)", "Everything (*.*)",
|
||||
" Stuff ( *.stf *.tng)", " *.exe" }
|
||||
<< ".doc,.stf,.tng,.exe";
|
||||
}
|
||||
|
||||
void tst_LocalFileApi::fileInputAccept()
|
||||
{
|
||||
QFETCH(QStringList, qtFilterList);
|
||||
QFETCH(QString, expectedAccept);
|
||||
|
||||
auto result = LocalFileApi::makeFileInputAccept(qtFilterList);
|
||||
QCOMPARE_EQ(expectedAccept, QString::fromStdString(result));
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_LocalFileApi)
|
||||
#include "tst_localfileapi.moc"
|
||||
|
@ -31,11 +31,16 @@ private slots:
|
||||
void init();
|
||||
|
||||
void insertion();
|
||||
void raisingTheRootIsImpossible();
|
||||
void raising();
|
||||
void raisingWithAlwaysOnBottom();
|
||||
void raisingWithAlwaysOnTop();
|
||||
void lowering();
|
||||
void loweringWithAlwaysOnBottom();
|
||||
void loweringWithAlwaysOnTop();
|
||||
void removing();
|
||||
void removingTheRoot();
|
||||
void removingWithAlwaysOnBottom();
|
||||
void removingWithAlwaysOnTop();
|
||||
void positionPreferenceChanges();
|
||||
void clearing();
|
||||
|
||||
private:
|
||||
@ -46,7 +51,7 @@ private:
|
||||
m_onTopLevelChangedAction();
|
||||
}
|
||||
|
||||
void verifyTopWindowChangedCalled(int expected = 1)
|
||||
void verifyWindowOrderChanged(int expected = 1)
|
||||
{
|
||||
QCOMPARE(expected, m_topLevelChangedCallCount);
|
||||
clearCallbackCounter();
|
||||
@ -54,8 +59,8 @@ private:
|
||||
|
||||
void clearCallbackCounter() { m_topLevelChangedCallCount = 0; }
|
||||
|
||||
QWasmWindowStack::TopWindowChangedCallbackType m_mockCallback;
|
||||
QWasmWindowStack::TopWindowChangedCallbackType m_onTopLevelChangedAction;
|
||||
QWasmWindowStack::WindowOrderChangedCallbackType m_mockCallback;
|
||||
QWasmWindowStack::WindowOrderChangedCallbackType m_onTopLevelChangedAction;
|
||||
int m_topLevelChangedCallCount = 0;
|
||||
|
||||
QWasmWindow m_root;
|
||||
@ -68,7 +73,7 @@ private:
|
||||
|
||||
void tst_QWasmWindowStack::init()
|
||||
{
|
||||
m_onTopLevelChangedAction = QWasmWindowStack::TopWindowChangedCallbackType();
|
||||
m_onTopLevelChangedAction = QWasmWindowStack::WindowOrderChangedCallbackType();
|
||||
clearCallbackCounter();
|
||||
}
|
||||
|
||||
@ -77,51 +82,28 @@ void tst_QWasmWindowStack::insertion()
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_root); };
|
||||
stack.pushWindow(&m_root);
|
||||
verifyTopWindowChangedCalled();
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::Regular);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window1); };
|
||||
stack.pushWindow(&m_window1);
|
||||
verifyTopWindowChangedCalled();
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window2); };
|
||||
stack.pushWindow(&m_window2);
|
||||
verifyTopWindowChangedCalled();
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::raisingTheRootIsImpossible()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_window2);
|
||||
stack.pushWindow(&m_window3);
|
||||
stack.pushWindow(&m_window4);
|
||||
stack.pushWindow(&m_window5);
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
stack.raise(&m_root);
|
||||
verifyTopWindowChangedCalled(0);
|
||||
|
||||
QCOMPARE(&m_window5, stack.topWindow());
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window2); };
|
||||
stack.raise(&m_window2);
|
||||
verifyTopWindowChangedCalled();
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
verifyWindowOrderChanged();
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::raising()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_window2);
|
||||
stack.pushWindow(&m_window3);
|
||||
stack.pushWindow(&m_window4);
|
||||
stack.pushWindow(&m_window5);
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window4, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
@ -129,30 +111,176 @@ void tst_QWasmWindowStack::raising()
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window1); };
|
||||
stack.raise(&m_window1);
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window1, stack.topWindow());
|
||||
|
||||
stack.raise(&m_window1);
|
||||
verifyTopWindowChangedCalled(0);
|
||||
verifyWindowOrderChanged(0);
|
||||
QCOMPARE(&m_window1, stack.topWindow());
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window3); };
|
||||
stack.raise(&m_window3);
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::raisingWithAlwaysOnBottom()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnBottomWindow1;
|
||||
QWasmWindow alwaysOnBottomWindow2;
|
||||
QWasmWindow alwaysOnBottomWindow3;
|
||||
|
||||
stack.pushWindow(&alwaysOnBottomWindow1, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow2, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow3, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 3 2 1 | B3 B2 B1
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window3,
|
||||
&m_window2,
|
||||
&m_window1,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
// Window order: 1 3 2 | B3 B2 B1
|
||||
stack.raise(&m_window1);
|
||||
|
||||
expectedWindowOrder = { &m_window1,
|
||||
&m_window3,
|
||||
&m_window2,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window1, stack.topWindow());
|
||||
|
||||
// Window order: 1 3 2 | B1 B3 B2
|
||||
stack.raise(&alwaysOnBottomWindow1);
|
||||
|
||||
expectedWindowOrder = { &m_window1,
|
||||
&m_window3,
|
||||
&m_window2,
|
||||
&alwaysOnBottomWindow1,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window1, stack.topWindow());
|
||||
|
||||
// Window order: 1 3 2 | B3 B1 B2
|
||||
stack.raise(&alwaysOnBottomWindow3);
|
||||
|
||||
expectedWindowOrder = { &m_window1,
|
||||
&m_window3,
|
||||
&m_window2,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow1,
|
||||
&alwaysOnBottomWindow2 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window1, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::raisingWithAlwaysOnTop()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnTopWindow1;
|
||||
QWasmWindow alwaysOnTopWindow2;
|
||||
QWasmWindow alwaysOnTopWindow3;
|
||||
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow1, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow2, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow3, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
// Window order: T3 T2 T1 | 5 3 1 | R
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &alwaysOnTopWindow3,
|
||||
&alwaysOnTopWindow2,
|
||||
&alwaysOnTopWindow1,
|
||||
&m_window5,
|
||||
&m_window3,
|
||||
&m_window1,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T3 T2 T1 | 1 5 3 | R
|
||||
stack.raise(&m_window1);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow3,
|
||||
&alwaysOnTopWindow2,
|
||||
&alwaysOnTopWindow1,
|
||||
&m_window1,
|
||||
&m_window5,
|
||||
&m_window3,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow3, stack.topWindow());
|
||||
|
||||
// Window order: T3 T2 T1 3 1 5 R
|
||||
stack.raise(&m_window3);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow3,
|
||||
&alwaysOnTopWindow2,
|
||||
&alwaysOnTopWindow1,
|
||||
&m_window3,
|
||||
&m_window1,
|
||||
&m_window5,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow3, stack.topWindow());
|
||||
|
||||
// Window order: T1 T3 T2 3 1 5 R
|
||||
stack.raise(&alwaysOnTopWindow1);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow1,
|
||||
&alwaysOnTopWindow3,
|
||||
&alwaysOnTopWindow2,
|
||||
&m_window3,
|
||||
&m_window1,
|
||||
&m_window5,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow1, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::lowering()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_window2);
|
||||
stack.pushWindow(&m_window3);
|
||||
stack.pushWindow(&m_window4);
|
||||
stack.pushWindow(&m_window5);
|
||||
// Window order: 5 4 3 2 1 R
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window4, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 5 4 3 2 1 | R
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
@ -160,29 +288,166 @@ void tst_QWasmWindowStack::lowering()
|
||||
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window4); };
|
||||
stack.lower(&m_window5);
|
||||
|
||||
// Window order: 4 3 2 1 5 R
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window4, stack.topWindow());
|
||||
|
||||
stack.lower(&m_window3);
|
||||
// Window order: 4 2 1 5 3 R
|
||||
verifyTopWindowChangedCalled(0);
|
||||
verifyWindowOrderChanged();
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window4, &m_window2, &m_window1,
|
||||
&m_window5, &m_window3, &m_root };
|
||||
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::loweringWithAlwaysOnBottom()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnBottomWindow1;
|
||||
QWasmWindow alwaysOnBottomWindow2;
|
||||
QWasmWindow alwaysOnBottomWindow3;
|
||||
|
||||
stack.pushWindow(&alwaysOnBottomWindow1, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow2, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow3, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 3 2 1 | B3 B2 B1
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window3,
|
||||
&m_window2,
|
||||
&m_window1,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
// Window order: 2 1 3 | B3 B2 B1
|
||||
stack.lower(&m_window3);
|
||||
|
||||
expectedWindowOrder = { &m_window2,
|
||||
&m_window1,
|
||||
&m_window3,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window2, stack.topWindow());
|
||||
|
||||
// Window order: 2 1 3 | B2 B1 B3
|
||||
stack.lower(&alwaysOnBottomWindow3);
|
||||
|
||||
expectedWindowOrder = { &m_window2,
|
||||
&m_window1,
|
||||
&m_window3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1,
|
||||
&alwaysOnBottomWindow3 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window2, stack.topWindow());
|
||||
|
||||
// Window order: 2 1 3 | B2 B3 B1
|
||||
stack.lower(&alwaysOnBottomWindow1);
|
||||
|
||||
expectedWindowOrder = { &m_window2,
|
||||
&m_window1,
|
||||
&m_window3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window2, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::loweringWithAlwaysOnTop()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnTopWindow1;
|
||||
QWasmWindow alwaysOnTopWindow2;
|
||||
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow1, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow2, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: T2 T1 5 3 1 R
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1,
|
||||
&m_window5, &m_window3,
|
||||
&m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T1 T2 5 3 1 R
|
||||
stack.lower(&alwaysOnTopWindow2);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow1, &alwaysOnTopWindow2, &m_window5,
|
||||
&m_window3, &m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow1, stack.topWindow());
|
||||
|
||||
// Window order: T2 T1 5 3 1 R
|
||||
stack.lower(&alwaysOnTopWindow1);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1, &m_window5,
|
||||
&m_window3, &m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow2, stack.topWindow());
|
||||
|
||||
// Window order: T2 T1 3 1 5 R
|
||||
stack.lower(&m_window5);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1, &m_window3,
|
||||
&m_window1, &m_window5, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow2, stack.topWindow());
|
||||
|
||||
// Window order: T2 T1 3 5 1 R
|
||||
stack.lower(&m_window1);
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1, &m_window3,
|
||||
&m_window5, &m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&alwaysOnTopWindow2, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::removing()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_window2);
|
||||
stack.pushWindow(&m_window3);
|
||||
stack.pushWindow(&m_window4);
|
||||
stack.pushWindow(&m_window5);
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window4, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 5 4 3 2 1 R
|
||||
|
||||
clearCallbackCounter();
|
||||
@ -192,62 +457,239 @@ void tst_QWasmWindowStack::removing()
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_window4); };
|
||||
stack.removeWindow(&m_window5);
|
||||
// Window order: 4 3 2 1 R
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window4, stack.topWindow());
|
||||
|
||||
stack.removeWindow(&m_window2);
|
||||
// Window order: 4 3 1 R
|
||||
verifyTopWindowChangedCalled(0);
|
||||
verifyWindowOrderChanged();
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window4, &m_window3, &m_window1,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::removingTheRoot()
|
||||
void tst_QWasmWindowStack::positionPreferenceChanges()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_window2);
|
||||
stack.pushWindow(&m_window3);
|
||||
// Window order: 3 2 1 R
|
||||
QWasmWindow window6;
|
||||
QWasmWindow window7;
|
||||
QWasmWindow window8;
|
||||
QWasmWindow window9;
|
||||
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window4, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&window6, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&window7, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&window8, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&window9, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
|
||||
// Window order: 9 8 7 | 6 5 4 | 3 2 1
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
stack.removeWindow(&m_root);
|
||||
// Window order: 3 2 1
|
||||
verifyTopWindowChangedCalled(0);
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
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
|
||||
verifyTopWindowChangedCalled();
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window1, &m_window3, &m_window2 };
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &window9, &window8, &window7,
|
||||
&window6, &m_window5, &m_window4,
|
||||
&m_window3, &m_window2, &m_window1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
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
|
||||
verifyTopWindowChangedCalled();
|
||||
expectedWindowOrder = { &m_window3, &m_window2, &m_window1 };
|
||||
// Window order: 9 8 7 1 | 6 5 4 | 3 2
|
||||
stack.windowPositionPreferenceChanged(&m_window1,
|
||||
QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window9, &window8, &window7, &m_window1, &window6,
|
||||
&m_window5, &m_window4, &m_window3, &m_window2,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: 9 8 7 1 5 | 6 4 | 3 2
|
||||
stack.windowPositionPreferenceChanged(&m_window5,
|
||||
QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window9, &window8, &window7, &m_window1, &m_window5,
|
||||
&window6, &m_window4, &m_window3, &m_window2,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: 9 7 1 5 | 8 6 4 | 3 2
|
||||
stack.windowPositionPreferenceChanged(&window8, QWasmWindowStack::PositionPreference::Regular);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window9, &window7, &m_window1, &m_window5, &window8,
|
||||
&window6, &m_window4, &m_window3, &m_window2,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: 9 7 1 5 | 8 6 4 2 | 3
|
||||
stack.windowPositionPreferenceChanged(&m_window2,
|
||||
QWasmWindowStack::PositionPreference::Regular);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window9, &window7, &m_window1, &m_window5, &window8,
|
||||
&window6, &m_window4, &m_window2, &m_window3,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: 7 1 5 | 8 6 4 2 | 9 3
|
||||
stack.windowPositionPreferenceChanged(&window9,
|
||||
QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window7, &m_window1, &m_window5, &window8, &window6,
|
||||
&m_window4, &m_window2, &window9, &m_window3,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: 7 1 5 | 6 4 2 | 8 9 3
|
||||
stack.windowPositionPreferenceChanged(&window8,
|
||||
QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
|
||||
expectedWindowOrder = {
|
||||
&window7, &m_window1, &m_window5, &window6, &m_window4,
|
||||
&m_window2, &window8, &window9, &m_window3,
|
||||
};
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::removingWithAlwaysOnBottom()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnBottomWindow1;
|
||||
QWasmWindow alwaysOnBottomWindow2;
|
||||
QWasmWindow alwaysOnBottomWindow3;
|
||||
|
||||
stack.pushWindow(&alwaysOnBottomWindow1, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow2, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&alwaysOnBottomWindow3, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window2, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 3 2 1 | B3 B2 B1
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &m_window3,
|
||||
&m_window2,
|
||||
&m_window1,
|
||||
&alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
// Window order: 3 1 | B3 B2 B1
|
||||
stack.removeWindow(&m_window2);
|
||||
|
||||
expectedWindowOrder = { &m_window3, &m_window1, &alwaysOnBottomWindow3, &alwaysOnBottomWindow2,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
// Window order: 1 3 2 | B1 B3 B2
|
||||
stack.removeWindow(&alwaysOnBottomWindow2);
|
||||
|
||||
expectedWindowOrder = { &m_window3, &m_window1, &alwaysOnBottomWindow3,
|
||||
&alwaysOnBottomWindow1 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
|
||||
// Window order: 1 3 2 | B3 B1 B2
|
||||
stack.removeWindow(&alwaysOnBottomWindow1);
|
||||
|
||||
expectedWindowOrder = { &m_window3, &m_window1, &alwaysOnBottomWindow3 };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_window3, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::removingWithAlwaysOnTop()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
QWasmWindow alwaysOnTopWindow1;
|
||||
QWasmWindow alwaysOnTopWindow2;
|
||||
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow1, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window3, QWasmWindowStack::PositionPreference::Regular);
|
||||
stack.pushWindow(&alwaysOnTopWindow2, QWasmWindowStack::PositionPreference::StayOnTop);
|
||||
stack.pushWindow(&m_window5, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: T2 T1 5 3 1 R
|
||||
|
||||
clearCallbackCounter();
|
||||
|
||||
std::vector<QWasmWindow *> expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1,
|
||||
&m_window5, &m_window3,
|
||||
&m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T2 T1 5 1 R
|
||||
stack.removeWindow(&m_window3);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &alwaysOnTopWindow1, &m_window5, &m_window1,
|
||||
&m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T2 5 1 R
|
||||
stack.removeWindow(&alwaysOnTopWindow1);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &m_window5, &m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T2 1 R
|
||||
stack.removeWindow(&m_window5);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &m_window1, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: T2 R
|
||||
stack.removeWindow(&m_window1);
|
||||
verifyWindowOrderChanged();
|
||||
|
||||
expectedWindowOrder = { &alwaysOnTopWindow2, &m_root };
|
||||
QVERIFY(std::equal(expectedWindowOrder.begin(), expectedWindowOrder.end(),
|
||||
getWindowsFrontToBack(&stack).begin()));
|
||||
|
||||
// Window order: R
|
||||
stack.removeWindow(&alwaysOnTopWindow2);
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_root, stack.topWindow());
|
||||
}
|
||||
|
||||
void tst_QWasmWindowStack::clearing()
|
||||
{
|
||||
QWasmWindowStack stack(m_mockCallback);
|
||||
|
||||
stack.pushWindow(&m_root);
|
||||
stack.pushWindow(&m_window1);
|
||||
stack.pushWindow(&m_root, QWasmWindowStack::PositionPreference::StayOnBottom);
|
||||
stack.pushWindow(&m_window1, QWasmWindowStack::PositionPreference::Regular);
|
||||
// Window order: 1 R
|
||||
|
||||
clearCallbackCounter();
|
||||
@ -257,13 +699,13 @@ void tst_QWasmWindowStack::clearing()
|
||||
m_onTopLevelChangedAction = [this, &stack]() { QVERIFY(stack.topWindow() == &m_root); };
|
||||
stack.removeWindow(&m_window1);
|
||||
// Window order: R
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(&m_root, stack.topWindow());
|
||||
|
||||
m_onTopLevelChangedAction = [&stack]() { QVERIFY(stack.topWindow() == nullptr); };
|
||||
stack.removeWindow(&m_root);
|
||||
// Window order: <empty>
|
||||
verifyTopWindowChangedCalled();
|
||||
verifyWindowOrderChanged();
|
||||
QCOMPARE(nullptr, stack.topWindow());
|
||||
QCOMPARE(0u, stack.size());
|
||||
}
|
||||
|
Reference in New Issue
Block a user