diff --git a/src/kcms/tabbox/layoutpreview.cpp b/src/kcms/tabbox/layoutpreview.cpp index 307c4b1960..2b84610d39 100644 --- a/src/kcms/tabbox/layoutpreview.cpp +++ b/src/kcms/tabbox/layoutpreview.cpp @@ -33,6 +33,7 @@ LayoutPreview::LayoutPreview(const QString &path, bool showDesktopThumbnail, QOb QQmlComponent *component = new QQmlComponent(engine, this); qmlRegisterType("org.kde.kwin", 3, 0, "WindowThumbnail"); qmlRegisterType("org.kde.kwin", 3, 0, "TabBoxSwitcher"); + qmlRegisterType("org.kde.kwin", 3, 0, "DesktopBackground"); qmlRegisterAnonymousType("org.kde.kwin", 3); component->loadUrl(QUrl::fromLocalFile(path)); if (component->isError()) { @@ -246,6 +247,28 @@ void SwitcherItem::decrementIndex() setCurrentIndex(index); } +DesktopBackground::DesktopBackground(QQuickItem *parent) + : WindowThumbnailItem(parent) +{ + setWId(WindowThumbnailItem::Desktop); + + connect(this, &QQuickItem::windowChanged, this, &DesktopBackground::stretchToScreen); + stretchToScreen(); +}; + +void DesktopBackground::stretchToScreen() +{ + const QQuickWindow *w = window(); + if (!w) { + return; + } + const QScreen *screen = w->screen(); + if (!screen) { + return; + } + setImplicitSize(screen->size().width(), screen->size().height()); +}; + } // namespace KWin } // namespace TabBox diff --git a/src/kcms/tabbox/layoutpreview.h b/src/kcms/tabbox/layoutpreview.h index 2d5ebd6436..57030faec3 100644 --- a/src/kcms/tabbox/layoutpreview.h +++ b/src/kcms/tabbox/layoutpreview.h @@ -149,5 +149,25 @@ inline QObject *SwitcherItem::item() const return m_item; } +class DesktopBackground : public WindowThumbnailItem +{ + Q_OBJECT + Q_PROPERTY(QVariant activity MEMBER m_activity) + Q_PROPERTY(QVariant desktop MEMBER m_desktop) + Q_PROPERTY(QString outputName MEMBER m_outputName) + +public: + DesktopBackground(QQuickItem *parent = nullptr); + +private Q_SLOTS: + void stretchToScreen(); + +private: + // Just for mock-up purposes. + QVariant m_activity; + QVariant m_desktop; + QString m_outputName; +}; + } // namespace TabBox } // namespace KWin