File indexing completed on 2024-05-12 17:00:20

0001 /*
0002     SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 #ifndef WINDOWSYSTEM_H
0007 #define WINDOWSYSTEM_H
0008 
0009 #include <private/kwindowsystem_p.h>
0010 
0011 #include <QObject>
0012 
0013 namespace KWayland
0014 {
0015 namespace Client
0016 {
0017 class PlasmaShell;
0018 }
0019 }
0020 
0021 class WindowSystem : public QObject, public KWindowSystemPrivateV2
0022 {
0023     Q_OBJECT
0024 public:
0025     WindowSystem();
0026     QList<WId> windows() override;
0027     QList<WId> stackingOrder() override;
0028     WId activeWindow() override;
0029     void activateWindow(WId win, long time) override;
0030     void forceActiveWindow(WId win, long time) override;
0031 #if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 101)
0032     void demandAttention(WId win, bool set) override;
0033 #endif
0034     void requestToken(QWindow *win, uint32_t serial, const QString &app_id) override;
0035     quint32 lastInputSerial(QWindow *window) override;
0036     void setCurrentToken(const QString &token) override;
0037     bool compositingActive() override;
0038     int currentDesktop() override;
0039     int numberOfDesktops() override;
0040     void setCurrentDesktop(int desktop) override;
0041     void setOnAllDesktops(WId win, bool b) override;
0042     void setOnDesktop(WId win, int desktop) override;
0043     void setOnActivities(WId win, const QStringList &activities) override;
0044 #if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 0)
0045     WId transientFor(WId window) override;
0046     WId groupLeader(WId window) override;
0047 #endif
0048     QPixmap icon(WId win, int width, int height, bool scale, int flags) override;
0049 #if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 101)
0050     void setIcons(WId win, const QPixmap &icon, const QPixmap &miniIcon) override;
0051 #endif
0052     void setType(WId win, NET::WindowType windowType) override;
0053     void setState(WId win, NET::States state) override;
0054     void clearState(WId win, NET::States state) override;
0055     void minimizeWindow(WId win) override;
0056     void unminimizeWindow(WId win) override;
0057     void raiseWindow(WId win) override;
0058     void lowerWindow(WId win) override;
0059     bool icccmCompliantMappingState() override;
0060     QRect workArea(int desktop) override;
0061     QRect workArea(const QList<WId> &excludes, int desktop) override;
0062     QString desktopName(int desktop) override;
0063     void setDesktopName(int desktop, const QString &name) override;
0064     bool showingDesktop() override;
0065     void setShowingDesktop(bool showing) override;
0066     void setUserTime(WId win, long time) override;
0067     void setExtendedStrut(WId win,
0068                           int left_width,
0069                           int left_start,
0070                           int left_end,
0071                           int right_width,
0072                           int right_start,
0073                           int right_end,
0074                           int top_width,
0075                           int top_start,
0076                           int top_end,
0077                           int bottom_width,
0078                           int bottom_start,
0079                           int bottom_end) override;
0080     void setStrut(WId win, int left, int right, int top, int bottom) override;
0081     bool allowedActionsSupported() override;
0082     QString readNameProperty(WId window, unsigned long atom) override;
0083     void allowExternalProcessWindowActivation(int pid) override;
0084     void setBlockingCompositing(WId window, bool active) override;
0085     bool mapViewport() override;
0086     int viewportToDesktop(const QPoint &pos) override;
0087     int viewportWindowToDesktop(const QRect &r) override;
0088     QPoint desktopToViewport(int desktop, bool absolute) override;
0089     QPoint constrainViewportRelativePosition(const QPoint &pos) override;
0090     void connectNotify(const QMetaMethod &signal) override;
0091 
0092 private:
0093     KWayland::Client::PlasmaShell *m_waylandPlasmaShell = nullptr;
0094     QString m_lastToken;
0095 };
0096 
0097 #endif