add requestToggleKeepAbove/below

Summary: client requests to toggle those states, to be used by libtaskmanager

Test Plan: setting keep above from the taskbar works

Reviewers: #plasma, hein, graesslin, #plasma_on_wayland

Reviewed By: #plasma, hein

Subscribers: graesslin, hein, plasma-devel, #frameworks

Tags: #frameworks, #plasma

Differential Revision: https://phabricator.kde.org/D5757
This commit is contained in:
Marco Martin 2017-05-24 18:02:15 +02:00
parent e182a2cc24
commit 7d10af91b1
2 changed files with 92 additions and 0 deletions

View file

@ -592,6 +592,10 @@ void PlasmaWindowModelTest::testRequests()
QVERIFY(resizeRequestedSpy.isValid()); QVERIFY(resizeRequestedSpy.isValid());
QSignalSpy virtualDesktopRequestedSpy(w, &PlasmaWindowInterface::virtualDesktopRequested); QSignalSpy virtualDesktopRequestedSpy(w, &PlasmaWindowInterface::virtualDesktopRequested);
QVERIFY(virtualDesktopRequestedSpy.isValid()); QVERIFY(virtualDesktopRequestedSpy.isValid());
QSignalSpy keepAboveRequestedSpy(w, &PlasmaWindowInterface::keepAboveRequested);
QVERIFY(keepAboveRequestedSpy.isValid());
QSignalSpy keepBelowRequestedSpy(w, &PlasmaWindowInterface::keepBelowRequested);
QVERIFY(keepBelowRequestedSpy.isValid());
QSignalSpy minimizedRequestedSpy(w, &PlasmaWindowInterface::minimizedRequested); QSignalSpy minimizedRequestedSpy(w, &PlasmaWindowInterface::minimizedRequested);
QVERIFY(minimizedRequestedSpy.isValid()); QVERIFY(minimizedRequestedSpy.isValid());
QSignalSpy maximizeRequestedSpy(w, &PlasmaWindowInterface::maximizedRequested); QSignalSpy maximizeRequestedSpy(w, &PlasmaWindowInterface::maximizedRequested);
@ -603,6 +607,8 @@ void PlasmaWindowModelTest::testRequests()
model->requestActivate(-1); model->requestActivate(-1);
model->requestClose(-1); model->requestClose(-1);
model->requestVirtualDesktop(-1, 1); model->requestVirtualDesktop(-1, 1);
model->requestToggleKeepAbove(-1);
model->requestToggleKeepBelow(-1);
model->requestToggleMinimized(-1); model->requestToggleMinimized(-1);
model->requestToggleMaximized(-1); model->requestToggleMaximized(-1);
model->requestActivate(1); model->requestActivate(1);
@ -610,6 +616,8 @@ void PlasmaWindowModelTest::testRequests()
model->requestMove(1); model->requestMove(1);
model->requestResize(1); model->requestResize(1);
model->requestVirtualDesktop(1, 1); model->requestVirtualDesktop(1, 1);
model->requestToggleKeepAbove(1);
model->requestToggleKeepBelow(1);
model->requestToggleMinimized(1); model->requestToggleMinimized(1);
model->requestToggleMaximized(1); model->requestToggleMaximized(1);
model->requestToggleShaded(1); model->requestToggleShaded(1);
@ -682,6 +690,30 @@ void PlasmaWindowModelTest::testRequests()
QCOMPARE(minimizedRequestedSpy.count(), 0); QCOMPARE(minimizedRequestedSpy.count(), 0);
QCOMPARE(maximizeRequestedSpy.count(), 0); QCOMPARE(maximizeRequestedSpy.count(), 0);
QCOMPARE(shadeRequestedSpy.count(), 0); QCOMPARE(shadeRequestedSpy.count(), 0);
// keep above
model->requestToggleKeepAbove(0);
QVERIFY(keepAboveRequestedSpy.wait());
QCOMPARE(keepAboveRequestedSpy.count(), 1);
QCOMPARE(keepAboveRequestedSpy.first().first().toBool(), true);
QCOMPARE(activateRequestedSpy.count(), 1);
QCOMPARE(closeRequestedSpy.count(), 1);
QCOMPARE(moveRequestedSpy.count(), 1);
QCOMPARE(resizeRequestedSpy.count(), 1);
QCOMPARE(virtualDesktopRequestedSpy.count(), 1);
QCOMPARE(maximizeRequestedSpy.count(), 0);
QCOMPARE(shadeRequestedSpy.count(), 0);
// keep Below
model->requestToggleKeepBelow(0);
QVERIFY(keepBelowRequestedSpy.wait());
QCOMPARE(keepBelowRequestedSpy.count(), 1);
QCOMPARE(keepBelowRequestedSpy.first().first().toBool(), true);
QCOMPARE(activateRequestedSpy.count(), 1);
QCOMPARE(closeRequestedSpy.count(), 1);
QCOMPARE(moveRequestedSpy.count(), 1);
QCOMPARE(resizeRequestedSpy.count(), 1);
QCOMPARE(virtualDesktopRequestedSpy.count(), 1);
QCOMPARE(maximizeRequestedSpy.count(), 0);
QCOMPARE(shadeRequestedSpy.count(), 0);
// minimize // minimize
model->requestToggleMinimized(0); model->requestToggleMinimized(0);
QVERIFY(minimizedRequestedSpy.wait()); QVERIFY(minimizedRequestedSpy.wait());
@ -721,6 +753,20 @@ void PlasmaWindowModelTest::testRequests()
// the toggles can also support a different state // the toggles can also support a different state
QSignalSpy dataChangedSpy(model, &PlasmaWindowModel::dataChanged); QSignalSpy dataChangedSpy(model, &PlasmaWindowModel::dataChanged);
QVERIFY(dataChangedSpy.isValid()); QVERIFY(dataChangedSpy.isValid());
// keepAbove
w->setKeepAbove(true);
QVERIFY(dataChangedSpy.wait());
model->requestToggleKeepAbove(0);
QVERIFY(keepAboveRequestedSpy.wait());
QCOMPARE(keepAboveRequestedSpy.count(), 2);
QCOMPARE(keepAboveRequestedSpy.last().first().toBool(), false);
// keepBelow
w->setKeepBelow(true);
QVERIFY(dataChangedSpy.wait());
model->requestToggleKeepBelow(0);
QVERIFY(keepBelowRequestedSpy.wait());
QCOMPARE(keepBelowRequestedSpy.count(), 2);
QCOMPARE(keepBelowRequestedSpy.last().first().toBool(), false);
// minimize // minimize
w->setMinimized(true); w->setMinimized(true);
QVERIFY(dataChangedSpy.wait()); QVERIFY(dataChangedSpy.wait());

View file

@ -61,6 +61,8 @@ private Q_SLOTS:
void testRequests(); void testRequests();
void testRequestsBoolean_data(); void testRequestsBoolean_data();
void testRequestsBoolean(); void testRequestsBoolean();
void testKeepAbove();
void testKeepBelow();
void testShowingDesktop(); void testShowingDesktop();
void testRequestShowingDesktop_data(); void testRequestShowingDesktop_data();
void testRequestShowingDesktop(); void testRequestShowingDesktop();
@ -477,6 +479,50 @@ void TestWindowManagement::testRequestShowingDesktop()
QTEST(requestSpy.first().first().value<PlasmaWindowManagementInterface::ShowingDesktopState>(), "expectedValue"); QTEST(requestSpy.first().first().value<PlasmaWindowManagementInterface::ShowingDesktopState>(), "expectedValue");
} }
void TestWindowManagement::testKeepAbove()
{
using namespace KWayland::Server;
// this test verifies setting the keep above state
QVERIFY(!m_window->isKeepAbove());
QSignalSpy keepAboveChangedSpy(m_window, &KWayland::Client::PlasmaWindow::keepAboveChanged);
QVERIFY(keepAboveChangedSpy.isValid());
m_windowInterface->setKeepAbove(true);
QVERIFY(keepAboveChangedSpy.wait());
QCOMPARE(keepAboveChangedSpy.count(), 1);
QVERIFY(m_window->isKeepAbove());
// setting to same should not change
m_windowInterface->setKeepAbove(true);
QVERIFY(!keepAboveChangedSpy.wait(100));
QCOMPARE(keepAboveChangedSpy.count(), 1);
// setting to other state should change
m_windowInterface->setKeepAbove(false);
QVERIFY(keepAboveChangedSpy.wait());
QCOMPARE(keepAboveChangedSpy.count(), 2);
QVERIFY(!m_window->isKeepAbove());
}
void TestWindowManagement::testKeepBelow()
{
using namespace KWayland::Server;
// this test verifies setting the keep below state
QVERIFY(!m_window->isKeepBelow());
QSignalSpy keepBelowChangedSpy(m_window, &KWayland::Client::PlasmaWindow::keepBelowChanged);
QVERIFY(keepBelowChangedSpy.isValid());
m_windowInterface->setKeepBelow(true);
QVERIFY(keepBelowChangedSpy.wait());
QCOMPARE(keepBelowChangedSpy.count(), 1);
QVERIFY(m_window->isKeepBelow());
// setting to same should not change
m_windowInterface->setKeepBelow(true);
QVERIFY(!keepBelowChangedSpy.wait(100));
QCOMPARE(keepBelowChangedSpy.count(), 1);
// setting to other state should change
m_windowInterface->setKeepBelow(false);
QVERIFY(keepBelowChangedSpy.wait());
QCOMPARE(keepBelowChangedSpy.count(), 2);
QVERIFY(!m_window->isKeepBelow());
}
void TestWindowManagement::testParentWindow() void TestWindowManagement::testParentWindow()
{ {
using namespace KWayland::Client; using namespace KWayland::Client;