File indexing completed on 2024-05-05 16:19:51

0001 /*
0002     SPDX-FileCopyrightText: 2014 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 
0007 #ifndef KWINDOWINFO_P_X11_H
0008 #define KWINDOWINFO_P_X11_H
0009 #include "kwindowinfo_p.h"
0010 #include <memory>
0011 
0012 class NETWinInfo;
0013 
0014 class KWindowInfoPrivateX11 : public KWindowInfoPrivate,
0015                               public KWindowInfoPrivateDesktopFileNameExtension,
0016                               public KWindowInfoPrivatePidExtension,
0017                               public KWindowInfoPrivateAppMenuExtension,
0018                               public KWindowInfoPrivateGtkApplicationIdExtension
0019 {
0020 public:
0021     KWindowInfoPrivateX11(WId window, NET::Properties properties, NET::Properties2 properties2);
0022     ~KWindowInfoPrivateX11() override;
0023 
0024     bool valid(bool withdrawn_is_valid) const override;
0025     NET::States state() const override;
0026     bool isMinimized() const override;
0027     NET::MappingState mappingState() const override;
0028     NETExtendedStrut extendedStrut() const override;
0029     NET::WindowType windowType(NET::WindowTypes supported_types) const override;
0030     QString visibleName() const override;
0031     QString visibleNameWithState() const override;
0032     QString name() const override;
0033     QString visibleIconName() const override;
0034     QString visibleIconNameWithState() const override;
0035     QString iconName() const override;
0036     bool onAllDesktops() const override;
0037     bool isOnDesktop(int desktop) const override;
0038     int desktop() const override;
0039     QStringList activities() const override;
0040     QRect geometry() const override;
0041     QRect frameGeometry() const override;
0042     WId transientFor() const override;
0043     WId groupLeader() const override;
0044     QByteArray windowClassClass() const override;
0045     QByteArray windowClassName() const override;
0046     QByteArray windowRole() const override;
0047     QByteArray clientMachine() const override;
0048     bool actionSupported(NET::Action action) const override;
0049 
0050     QByteArray desktopFileName() const override;
0051     QByteArray applicationMenuObjectPath() const override;
0052     QByteArray applicationMenuServiceName() const override;
0053     QByteArray gtkApplicationId() const override;
0054 
0055     int pid() const override;
0056 
0057 private:
0058     bool icccmCompliantMappingState() const;
0059 
0060     std::unique_ptr<NETWinInfo> m_info;
0061     QString m_name;
0062     QString m_iconic_name;
0063     QRect m_geometry;
0064     QRect m_frame_geometry;
0065     int m_pid = -1; // real PID from XResources. Valid if > 0
0066     bool m_valid;
0067 };
0068 
0069 #endif