File indexing completed on 2024-12-08 13:18:53

0001 /* SPDX-FileCopyrightText: 1999-2001 Lubos Lunak <l.lunak@kde.org>
0002 
0003    SPDX-License-Identifier: GPL-2.0-only
0004 */
0005 
0006 #ifndef WINDOWS_HANDLER_H
0007 #define WINDOWS_HANDLER_H
0008 
0009 #include <QObject>
0010 #include <QWindowList>
0011 
0012 #include <netwm.h>
0013 
0014 namespace KHotKeys
0015 {
0016 const NET::WindowTypes SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask
0017     | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask;
0018 
0019 class Windowdef_list;
0020 
0021 class Q_DECL_EXPORT WindowsHandler : public QObject
0022 {
0023     Q_OBJECT
0024 public:
0025     WindowsHandler(bool enable_signals_P, QObject *parent_P);
0026     ~WindowsHandler() override;
0027     QString get_window_class(WId id_P);
0028     QString get_window_role(WId id_P);
0029     WId active_window();
0030     void set_action_window(WId window);
0031     WId action_window();
0032     WId find_window(const Windowdef_list *window_P);
0033     static WId window_at_position(int x, int y);
0034     static void activate_window(WId id_P);
0035 Q_SIGNALS:
0036     void window_added(WId window_P);
0037     void window_removed(WId window_P);
0038     void active_window_changed(WId window_P);
0039     void window_changed(WId window_P);
0040     void window_changed(WId window_P, unsigned int flags_P);
0041 protected Q_SLOTS:
0042     void window_added_slot(WId window_P);
0043     void window_removed_slot(WId window_P);
0044     void active_window_changed_slot(WId window_P);
0045     void window_changed_slot(WId window_P);
0046     void window_changed_slot(WId window_P, unsigned int flags_P);
0047 
0048 private:
0049     bool signals_enabled;
0050     WId _action_window;
0051     bool m_isX11;
0052 };
0053 
0054 } // namespace KHotKeys
0055 
0056 #endif