53 lines
1.2 KiB
C++
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;
|
|
};
|