Files
xembed-fluff/fdoselectionmanager.h

53 lines
1.2 KiB
C
Raw Permalink Normal View History

2025-12-18 16:41:37 +08:00
/*
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;
2025-12-18 16:52:13 +08:00
class TrayManagerProxy;
class TrayManager1;
2025-12-18 16:41:37 +08:00
class FdoSelectionManager : public QObject, public QAbstractNativeEventFilter
{
Q_OBJECT
public:
2025-12-29 18:09:38 +08:00
FdoSelectionManager(QObject *parent = nullptr);
2025-12-18 16:41:37 +08:00
~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();
2025-12-18 16:52:13 +08:00
void initTrayManager();
2025-12-18 16:41:37 +08:00
2025-12-18 16:52:13 +08:00
TrayManager1 *m_trayManager = nullptr;
2025-12-18 16:41:37 +08:00
uint8_t m_damageEventBase;
QHash<xcb_window_t, u_int32_t> m_damageWatches;
2025-12-18 21:10:53 +08:00
// QHash<xcb_window_t, TrayManagerProxy *> m_proxies;
2025-12-18 16:41:37 +08:00
KSelectionOwner *m_selectionOwner;
};