[autotests] Fix maximize test

Summary:
testMaximizedPassedToDeco was failing because it didn't handle async
maximization.

testBorderlessMaximizedWindow was failing because setNoBorder can modify
geometry, so we end up with a wrong restore geometry.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D16755
icc-effect-5.17.5
Vlad Zagorodniy 2018-11-08 12:33:57 +02:00
parent 80d0915cf8
commit abf6c6927c
2 changed files with 17 additions and 5 deletions

View File

@ -118,7 +118,14 @@ void TestMaximized::testMaximizedPassedToDeco()
QVERIFY(bordersChangedSpy.isValid());
QSignalSpy maximizedChangedSpy(decoration->client().data(), &KDecoration2::DecoratedClient::maximizedChanged);
QVERIFY(maximizedChangedSpy.isValid());
QSignalSpy geometryShapeChangedSpy(client, &AbstractClient::geometryShapeChanged);
QVERIFY(geometryShapeChangedSpy.isValid());
workspace()->slotWindowMaximize();
Test::render(surface.data(), QSize(100, 50), Qt::red);
QVERIFY(geometryShapeChangedSpy.wait());
QCOMPARE(geometryShapeChangedSpy.count(), 2);
QCOMPARE(client->maximizeMode(), MaximizeMode::MaximizeFull);
QCOMPARE(maximizedChangedSpy.count(), 1);
QCOMPARE(maximizedChangedSpy.last().first().toBool(), true);
@ -128,13 +135,15 @@ void TestMaximized::testMaximizedPassedToDeco()
QCOMPARE(decoration->borderRight(), 0);
QVERIFY(decoration->borderTop() != 0);
QVERIFY(sizeChangedSpy.isEmpty());
QVERIFY(sizeChangedSpy.wait());
QCOMPARE(sizeChangedSpy.count(), 1);
QCOMPARE(sizeChangedSpy.first().first().toSize(), QSize(1280, 1024 - decoration->borderTop()));
// now unmaximize again
workspace()->slotWindowMaximize();
Test::render(surface.data(), QSize(100, 50), Qt::red);
QVERIFY(geometryShapeChangedSpy.wait());
QCOMPARE(geometryShapeChangedSpy.count(), 4);
QCOMPARE(client->maximizeMode(), MaximizeMode::MaximizeRestore);
QCOMPARE(maximizedChangedSpy.count(), 2);
QCOMPARE(maximizedChangedSpy.last().first().toBool(), false);
@ -144,7 +153,6 @@ void TestMaximized::testMaximizedPassedToDeco()
QVERIFY(decoration->borderRight() != 0);
QVERIFY(decoration->borderBottom() != 0);
QVERIFY(sizeChangedSpy.wait());
QCOMPARE(sizeChangedSpy.count(), 2);
QCOMPARE(sizeChangedSpy.last().first().toSize(), QSize(100, 50));
}
@ -203,6 +211,7 @@ void TestMaximized::testBorderlessMaximizedWindow()
QVERIFY(geometryChangedSpy.wait());
QCOMPARE(client->maximizeMode(), MaximizeMode::MaximizeFull);
QCOMPARE(client->geometry(), QRect(0, 0, 1280, 1024));
QCOMPARE(client->geometryRestore(), origGeo);
QCOMPARE(client->isDecorated(), false);
// go back to normal
@ -213,6 +222,7 @@ void TestMaximized::testBorderlessMaximizedWindow()
QVERIFY(geometryChangedSpy.wait());
QCOMPARE(client->maximizeMode(), MaximizeMode::MaximizeRestore);
QCOMPARE(client->geometry(), origGeo);
QCOMPARE(client->geometryRestore(), origGeo);
QCOMPARE(client->isDecorated(), true);
}

View File

@ -828,7 +828,9 @@ void ShellClient::changeMaximize(bool horizontal, bool vertical, bool adjust)
workspace()->clientArea(MaximizeArea, Cursor::pos(), desktop()) :
workspace()->clientArea(MaximizeArea, this);
MaximizeMode oldMode = m_requestedMaximizeMode;
const MaximizeMode oldMode = m_requestedMaximizeMode;
const QRect oldGeometry = geometry();
StackingUpdatesBlocker blocker(workspace());
RequestGeometryBlocker geometryBlocker(this);
// 'adjust == true' means to update the size only, e.g. after changing workspace size
@ -881,7 +883,7 @@ void ShellClient::changeMaximize(bool horizontal, bool vertical, bool adjust)
// TODO: check rules
if (m_requestedMaximizeMode == MaximizeFull) {
m_geomMaximizeRestore = geometry();
m_geomMaximizeRestore = oldGeometry;
// TODO: Client has more checks
if (options->electricBorderMaximize()) {
updateQuickTileMode(QuickTileFlag::Maximize);