File indexing completed on 2024-05-05 05:39:01
0001 /* 0002 Registers as a embed container 0003 SPDX-FileCopyrightText: 2015 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.1-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <QAbstractNativeEventFilter> 0011 #include <QHash> 0012 #include <QObject> 0013 0014 #include <xcb/xcb.h> 0015 0016 class KSelectionOwner; 0017 class SNIProxy; 0018 0019 class FdoSelectionManager : public QObject, public QAbstractNativeEventFilter 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 FdoSelectionManager(); 0025 ~FdoSelectionManager() override; 0026 0027 protected: 0028 bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; 0029 0030 private Q_SLOTS: 0031 void onClaimedOwnership(); 0032 void onFailedToClaimOwnership(); 0033 void onLostOwnership(); 0034 0035 private: 0036 void init(); 0037 bool addDamageWatch(xcb_window_t client); 0038 void dock(xcb_window_t embed_win); 0039 void undock(xcb_window_t client); 0040 void setSystemTrayVisual(); 0041 0042 uint8_t m_damageEventBase; 0043 0044 QHash<xcb_window_t, u_int32_t> m_damageWatches; 0045 QHash<xcb_window_t, SNIProxy *> m_proxies; 0046 KSelectionOwner *m_selectionOwner; 0047 };