diff --git a/autotests/client/test_plasma_window_model.cpp b/autotests/client/test_plasma_window_model.cpp --- a/autotests/client/test_plasma_window_model.cpp +++ b/autotests/client/test_plasma_window_model.cpp @@ -65,6 +65,7 @@ void testIsMovable(); void testIsResizable(); void testIsVirtualDesktopChangeable(); + void testIsCloseable(); void testTitle(); void testAppId(); void testVirtualDesktop(); @@ -225,6 +226,7 @@ QTest::newRow("IsMovable") << int(PlasmaWindowModel::IsMovable) << QByteArrayLiteral("IsMovable"); QTest::newRow("IsResizable") << int(PlasmaWindowModel::IsResizable) << QByteArrayLiteral("IsResizable"); QTest::newRow("IsVirtualDesktopChangeable") << int(PlasmaWindowModel::IsVirtualDesktopChangeable) << QByteArrayLiteral("IsVirtualDesktopChangeable"); + QTest::newRow("IsCloseable") << int(PlasmaWindowModel::IsCloseable) << QByteArrayLiteral("IsCloseable"); } void PlasmaWindowModelTest::testRoleNames() @@ -308,6 +310,7 @@ QTest::newRow("IsMovable") << int(PlasmaWindowModel::IsMovable) << QVariant(false); QTest::newRow("IsResizable") << int(PlasmaWindowModel::IsResizable) << QVariant(false); QTest::newRow("IsVirtualDesktopChangeable") << int(PlasmaWindowModel::IsVirtualDesktopChangeable) << QVariant(false); + QTest::newRow("IsCloseable") << int(PlasmaWindowModel::IsCloseable) << QVariant(false); } void PlasmaWindowModelTest::testDefaultData() @@ -412,6 +415,11 @@ QVERIFY(testBooleanData(PlasmaWindowModel::IsVirtualDesktopChangeable, &PlasmaWindowInterface::setVirtualDesktopChangeable)); } +void PlasmaWindowModelTest::testIsCloseable() +{ + QVERIFY(testBooleanData(PlasmaWindowModel::IsCloseable, &PlasmaWindowInterface::setCloseable)); +} + void PlasmaWindowModelTest::testTitle() { auto model = m_pw->createWindowModel(); diff --git a/src/client/plasmawindowmodel.h b/src/client/plasmawindowmodel.h --- a/src/client/plasmawindowmodel.h +++ b/src/client/plasmawindowmodel.h @@ -94,7 +94,11 @@ /** * @since 5.7 */ - IsVirtualDesktopChangeable + IsVirtualDesktopChangeable, + /** + * @since 5.7 + */ + IsCloseable }; explicit PlasmaWindowModel(PlasmaWindowManagement *parent); diff --git a/src/client/plasmawindowmodel.cpp b/src/client/plasmawindowmodel.cpp --- a/src/client/plasmawindowmodel.cpp +++ b/src/client/plasmawindowmodel.cpp @@ -151,6 +151,10 @@ QObject::connect(window, &PlasmaWindow::virtualDesktopChangeableChanged, [window, this] { this->dataChanged(window, IsVirtualDesktopChangeable); } ); + + QObject::connect(window, &PlasmaWindow::closeableChanged, + [window, this] { this->dataChanged(window, IsCloseable); } + ); } void PlasmaWindowModel::Private::dataChanged(PlasmaWindow *window, int role) @@ -253,6 +257,8 @@ return window->isResizable(); } else if (role == IsVirtualDesktopChangeable) { return window->isVirtualDesktopChangeable(); + } else if (role == IsCloseable) { + return window->isCloseable(); } return QVariant();