1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 /*
19  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
20  * file for a list of people on the GTK+ Team.  See the ChangeLog
21  * files for a list of changes.  These files are distributed with
22  * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23  */
24 
25 #ifndef __GDK_SELECTION_H__
26 #define __GDK_SELECTION_H__
27 
28 #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
29 #error "Only <gdk/gdk.h> can be included directly."
30 #endif
31 
32 #include <gdk/gdktypes.h>
33 #include <gdk/gdkversionmacros.h>
34 
35 G_BEGIN_DECLS
36 
37 /* Predefined atoms relating to selections. In general, one will need to use
38  * gdk_intern_atom
39  */
40 /**
41  * GDK_SELECTION_PRIMARY:
42  *
43  * A #GdkAtom representing the `PRIMARY` selection.
44  */
45 #define GDK_SELECTION_PRIMARY 		_GDK_MAKE_ATOM (1)
46 
47 /**
48  * GDK_SELECTION_SECONDARY:
49  *
50  * A #GdkAtom representing the `SECONDARY` selection.
51  */
52 #define GDK_SELECTION_SECONDARY 	_GDK_MAKE_ATOM (2)
53 
54 /**
55  * GDK_SELECTION_CLIPBOARD:
56  *
57  * A #GdkAtom representing the `CLIPBOARD` selection.
58  */
59 #define GDK_SELECTION_CLIPBOARD 	_GDK_MAKE_ATOM (69)
60 
61 /**
62  * GDK_TARGET_BITMAP:
63  *
64  * A #GdkAtom representing the `BITMAP` selection target.
65  */
66 #define GDK_TARGET_BITMAP 		_GDK_MAKE_ATOM (5)
67 
68 /**
69  * GDK_TARGET_COLORMAP:
70  *
71  * A #GdkAtom representing the `COLORMAP` selection target.
72  */
73 #define GDK_TARGET_COLORMAP 		_GDK_MAKE_ATOM (7)
74 
75 /**
76  * GDK_TARGET_DRAWABLE:
77  *
78  * A #GdkAtom representing the `DRAWABLE` selection target.
79  */
80 #define GDK_TARGET_DRAWABLE 		_GDK_MAKE_ATOM (17)
81 
82 /**
83  * GDK_TARGET_PIXMAP:
84  *
85  * A #GdkAtom representing the `PIXMAP` selection target.
86  */
87 #define GDK_TARGET_PIXMAP 		_GDK_MAKE_ATOM (20)
88 
89 /**
90  * GDK_TARGET_STRING:
91  *
92  * A #GdkAtom representing the `STRING` selection target.
93  */
94 #define GDK_TARGET_STRING 		_GDK_MAKE_ATOM (31)
95 
96 /**
97  * GDK_SELECTION_TYPE_ATOM:
98  *
99  * A #GdkAtom representing the `ATOM` selection type.
100  */
101 #define GDK_SELECTION_TYPE_ATOM 	_GDK_MAKE_ATOM (4)
102 
103 /**
104  * GDK_SELECTION_TYPE_BITMAP:
105  *
106  * A #GdkAtom representing the `BITMAP` selection type.
107  */
108 #define GDK_SELECTION_TYPE_BITMAP 	_GDK_MAKE_ATOM (5)
109 
110 /**
111  * GDK_SELECTION_TYPE_COLORMAP:
112  *
113  * A #GdkAtom representing the `COLORMAP` selection type.
114  */
115 #define GDK_SELECTION_TYPE_COLORMAP 	_GDK_MAKE_ATOM (7)
116 
117 /**
118  * GDK_SELECTION_TYPE_DRAWABLE:
119  *
120  * A #GdkAtom representing the `DRAWABLE` selection type.
121  */
122 #define GDK_SELECTION_TYPE_DRAWABLE 	_GDK_MAKE_ATOM (17)
123 
124 /**
125  * GDK_SELECTION_TYPE_INTEGER:
126  *
127  * A #GdkAtom representing the `INTEGER` selection type.
128  */
129 #define GDK_SELECTION_TYPE_INTEGER 	_GDK_MAKE_ATOM (19)
130 
131 /**
132  * GDK_SELECTION_TYPE_PIXMAP:
133  *
134  * A #GdkAtom representing the `PIXMAP` selection type.
135  */
136 #define GDK_SELECTION_TYPE_PIXMAP 	_GDK_MAKE_ATOM (20)
137 
138 /**
139  * GDK_SELECTION_TYPE_WINDOW:
140  *
141  * A #GdkAtom representing the `WINDOW` selection type.
142  */
143 #define GDK_SELECTION_TYPE_WINDOW 	_GDK_MAKE_ATOM (33)
144 
145 /**
146  * GDK_SELECTION_TYPE_STRING:
147  *
148  * A #GdkAtom representing the `STRING` selection type.
149  */
150 #define GDK_SELECTION_TYPE_STRING 	_GDK_MAKE_ATOM (31)
151 
152 /* Selections
153  */
154 
155 GDK_AVAILABLE_IN_ALL
156 gboolean   gdk_selection_owner_set (GdkWindow	 *owner,
157 				    GdkAtom	  selection,
158 				    guint32	  time_,
159 				    gboolean      send_event);
160 GDK_AVAILABLE_IN_ALL
161 GdkWindow* gdk_selection_owner_get (GdkAtom	  selection);
162 GDK_AVAILABLE_IN_ALL
163 gboolean   gdk_selection_owner_set_for_display (GdkDisplay *display,
164 						GdkWindow  *owner,
165 						GdkAtom     selection,
166 						guint32     time_,
167 						gboolean    send_event);
168 GDK_AVAILABLE_IN_ALL
169 GdkWindow *gdk_selection_owner_get_for_display (GdkDisplay *display,
170 						GdkAtom     selection);
171 
172 /**
173  * gdk_selection_convert:
174  * @requestor: a #GdkWindow.
175  * @selection: an atom identifying the selection to get the
176  *   contents of.
177  * @target: the form in which to retrieve the selection.
178  * @time_: the timestamp to use when retrieving the
179  *   selection. The selection owner may refuse the
180  *   request if it did not own the selection at
181  *   the time indicated by the timestamp.
182  *
183  * Retrieves the contents of a selection in a given
184  * form.
185  */
186 GDK_AVAILABLE_IN_ALL
187 void	   gdk_selection_convert   (GdkWindow	 *requestor,
188 				    GdkAtom	  selection,
189 				    GdkAtom	  target,
190 				    guint32	  time_);
191 GDK_AVAILABLE_IN_ALL
192 gint       gdk_selection_property_get (GdkWindow  *requestor,
193 				       guchar	 **data,
194 				       GdkAtom	  *prop_type,
195 				       gint	  *prop_format);
196 
197 GDK_AVAILABLE_IN_ALL
198 void	   gdk_selection_send_notify (GdkWindow      *requestor,
199 				      GdkAtom	      selection,
200 				      GdkAtom	      target,
201 				      GdkAtom	      property,
202 				      guint32	      time_);
203 
204 GDK_AVAILABLE_IN_ALL
205 void       gdk_selection_send_notify_for_display (GdkDisplay      *display,
206 						  GdkWindow       *requestor,
207 						  GdkAtom     	   selection,
208 						  GdkAtom     	   target,
209 						  GdkAtom     	   property,
210 						  guint32     	   time_);
211 
212 G_END_DECLS
213 
214 #endif /* __GDK_SELECTION_H__ */
215