Imported Upstream version 1.15.1
[deb_xorg-server.git] / hw / xquartz / pbproxy / x-selection.h
CommitLineData
a09e091a
JB
1/* x-selection.h -- proxies between NSPasteboard and X11 selections
2 *
3 * Copyright (c) 2002-2012 Apple Inc. All rights reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation files
7 * (the "Software"), to deal in the Software without restriction,
8 * including without limitation the rights to use, copy, modify, merge,
9 * publish, distribute, sublicense, and/or sell copies of the Software,
10 * and to permit persons to whom the Software is furnished to do so,
11 * subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
20 * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 * DEALINGS IN THE SOFTWARE.
24 *
25 * Except as contained in this notice, the name(s) of the above
26 * copyright holders shall not be used in advertising or otherwise to
27 * promote the sale, use or other dealings in this Software without
28 * prior written authorization.
29 */
30
31#ifndef X_SELECTION_H
32#define X_SELECTION_H 1
33
34#include "pbproxy.h"
35
36#define Cursor X_Cursor
37#include <X11/extensions/Xfixes.h>
38#undef Cursor
39
40#include <AppKit/NSPasteboard.h>
41
42/* This stores image data or text. */
43struct propdata {
44 unsigned char *data;
45 size_t length;
46 int format;
47};
48
49struct atom_list {
50 Atom primary, clipboard, text, utf8_string, string, targets, multiple,
51 cstring, image_png, image_jpeg, incr, atom, clipboard_manager,
52 compound_text, atom_pair;
53};
54
55@interface x_selection : NSObject
56{
57 @private
58
59 /* The unmapped window we use for fetching selections. */
60 Window _selection_window;
61
62 Atom request_atom;
63
64 struct {
65 struct propdata propdata;
66 Window requestor;
67 Atom selection;
68 } pending;
69
70 /*
71 * This is the number of times the user has requested a copy.
72 * Once the copy is completed, we --pending_copy, and if the
73 * pending_copy is > 0 we do it again.
74 */
75 int pending_copy;
76 /*
77 * This is used for the same purpose as pending_copy, but for the
78 * CLIPBOARD. It also prevents a race with INCR transfers.
79 */
80 int pending_clipboard;
81
82 struct atom_list atoms[1];
83}
84
85- (void)x_active:(Time)timestamp;
86- (void)x_inactive:(Time)timestamp;
87
88- (void)x_copy:(Time)timestamp;
89
90- (void)clear_event:(XSelectionClearEvent *)e;
91- (void)request_event:(XSelectionRequestEvent *)e;
92- (void)notify_event:(XSelectionEvent *)e;
93- (void)property_event:(XPropertyEvent *)e;
94- (void)xfixes_selection_notify:(XFixesSelectionNotifyEvent *)e;
95- (void)handle_selection:(Atom) selection type:(Atom) type propdata:(struct
96 propdata
97 *)pdata;
98- (void)claim_clipboard;
99- (BOOL)set_clipboard_manager_status:(BOOL)value;
100- (void)own_clipboard;
101- (void)copy_completed:(Atom)selection;
102
103- (void)reload_preferences;
104- (BOOL)is_active;
105- (void)send_none:(XSelectionRequestEvent *)e;
106@end
107
108/* main.m */
109extern x_selection * _selection_object;
110
111#endif /* X_SELECTION_H */