File indexing completed on 2025-04-27 11:33:00

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2011 Arthur Arlt <a.arlt@stud.uni-heidelberg.de>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include "core/overlaywindow.h"
0013 #include "x11eventfilter.h"
0014 
0015 namespace KWin
0016 {
0017 class KWIN_EXPORT OverlayWindowX11 : public OverlayWindow, public X11EventFilter
0018 {
0019 public:
0020     OverlayWindowX11();
0021     ~OverlayWindowX11() override;
0022     /// Creates XComposite overlay window, call initOverlay() afterwards
0023     bool create() override;
0024     /// Init overlay and the destination window in it
0025     void setup(xcb_window_t window) override;
0026     void show() override;
0027     void hide() override; // hides and resets overlay window
0028     void setShape(const QRegion &reg) override;
0029     void resize(const QSize &size) override;
0030     /// Destroys XComposite overlay window
0031     void destroy() override;
0032     xcb_window_t window() const override;
0033     bool isVisible() const override;
0034     void setVisibility(bool visible) override;
0035 
0036     bool event(xcb_generic_event_t *event) override;
0037 
0038 private:
0039     void setNoneBackgroundPixmap(xcb_window_t window);
0040     void setupInputShape(xcb_window_t window);
0041     bool m_visible;
0042     bool m_shown; // For showOverlay()
0043     QRegion m_shape;
0044     xcb_window_t m_window;
0045 };
0046 } // namespace