xserver/dix/selection_priv.h

74 lines
1.8 KiB
C

/* SPDX-License-Identifier: MIT OR X11
*
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
*/
#ifndef _XSERVER_DIX_SELECTION_PRIV_H
#define _XSERVER_DIX_SELECTION_PRIV_H
#include <X11/Xdefs.h>
#include <X11/Xproto.h>
#include "include/dixstruct.h"
#include "include/privates.h"
typedef struct _Selection {
Atom selection;
TimeStamp lastTimeChanged;
Window window;
WindowPtr pWin;
ClientPtr client;
struct _Selection *next;
PrivateRec *devPrivates;
} Selection;
typedef enum {
SelectionSetOwner,
SelectionWindowDestroy,
SelectionClientClose
} SelectionCallbackKind;
typedef struct {
struct _Selection *selection;
ClientPtr client;
SelectionCallbackKind kind;
} SelectionInfoRec;
#define SELECTION_FILTER_GETOWNER 1
#define SELECTION_FILTER_SETOWNER 2
#define SELECTION_FILTER_CONVERT 3
#define SELECTION_FILTER_LISTEN 4
#define SELECTION_FILTER_EV_REQUEST 5
#define SELECTION_FILTER_EV_CLEAR 6
#define SELECTION_FILTER_NOTIFY 7
typedef struct {
int op;
Bool skip;
int status;
Atom selection;
ClientPtr client; // initiating client
ClientPtr recvClient; // client receiving event
Time time; // request time stamp
Window requestor;
Window owner;
Atom property;
Atom target;
} SelectionFilterParamRec, *SelectionFilterParamPtr;
extern Selection *CurrentSelections;
extern CallbackListPtr SelectionCallback;
extern CallbackListPtr SelectionFilterCallback;
int dixLookupSelection(Selection **result,
Atom name,
ClientPtr client,
Mask access_mode);
void InitSelections(void);
void DeleteWindowFromAnySelections(WindowPtr pWin);
void DeleteClientFromAnySelections(ClientPtr client);
#endif /* _XSERVER_DIX_SELECTION_PRIV_H */