我在 X11 应用程序中实现了剪贴板处理。复制操作的第一步是调用
XSetSelectionOwner:
Atom clipboardAtom = XInternAtom(display, "CLIPBOARD", False);
XSetSelectionOwner(display, clipboardAtom, clipboardWin, CurrentTime);
之后我得到
XSelectionRequestEvent
。该事件包含目标原子。调用 XSetSelectionOwner
是否总是将目标原子设置为原子“TARGETS”?
Atom targetsAtom = XInternAtom(display, "TARGETS", False);
//handling XSelectionRequestEvent after calling XSetSelectionOwner
if(event.xselectionrequest.target == targetsAtom)
{
}
XSelectionRequestEvent
是其他某个窗口(事件中的 .requestor
字段)发送 ConvertSelection
请求的结果。由请求者设置 target
字段的值。
支持多种选择类型的程序经常(但并非总是)使用原子“TARGETS”。 ICCCM 表示,每个选择所有者都必须知道如何通过此选择支持的目标列表来回答这个问题。