Files
xembed-fluff/fdoselectionmanager.h

53 lines
1.2 KiB
C++

/*
Registers as a embed container
SPDX-FileCopyrightText: 2015 David Edmundson <davidedmundson@kde.org>
SPDX-License-Identifier: LGPL-2.1-or-later
*/
#pragma once
#include <QAbstractNativeEventFilter>
#include <QGuiApplication>
#include <QHash>
#include <QObject>
#include <xcb/xcb.h>
class KSelectionOwner;
class TrayManagerProxy;
class TrayManager1;
class FdoSelectionManager : public QObject, public QAbstractNativeEventFilter
{
Q_OBJECT
public:
FdoSelectionManager(QObject *parent = nullptr);
~FdoSelectionManager() override;
protected:
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override;
private Q_SLOTS:
void onClaimedOwnership();
void onFailedToClaimOwnership();
void onLostOwnership();
private:
void init();
bool addDamageWatch(xcb_window_t client);
void dock(xcb_window_t embed_win);
void undock(xcb_window_t client);
void setSystemTrayVisual();
void initTrayManager();
TrayManager1 *m_trayManager = nullptr;
uint8_t m_damageEventBase;
QHash<xcb_window_t, u_int32_t> m_damageWatches;
// QHash<xcb_window_t, TrayManagerProxy *> m_proxies;
KSelectionOwner *m_selectionOwner;
};