/* SPDX-FileCopyrightText: 1999 Martin R. Jones SPDX-FileCopyrightText: 2002 Luboš Luňák SPDX-FileCopyrightText: 2003 Oswald Buddenhagen SPDX-FileCopyrightText: 2008 Chani Armitage SPDX-FileCopyrightText: 2011 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "abstractlocker.h" #include #include #include namespace ScreenLocker { class AbstractLocker; class X11Locker : public AbstractLocker, public QAbstractNativeEventFilter { Q_OBJECT public: explicit X11Locker(QObject *parent = nullptr); ~X11Locker() override; void showLockWindow() override; void hideLockWindow() override; void addAllowedWindow(quint32 window) override; bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; private Q_SLOTS: void updateGeo(); private: void initialize(); void saveVRoot(); void setVRoot(Window win, Window vr); void removeVRoot(Window win); int findWindowInfo(Window w); void fakeFocusIn(WId window); void stayOnTop() override; struct WindowInfo { Window window; bool viewable; }; QList m_windowInfo; QList m_lockWindows; QList m_allowedWindows; WId m_focusedLockWindow; }; }