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 ®) 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