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, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
22 * file for a list of people on the GTK+ Team. See the ChangeLog
23 * files for a list of changes. These files are distributed with
24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25 */
26
27#ifndef __GDK_WINDOW_H__
28#define __GDK_WINDOW_H__
29
30#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
31#error "Only <gdk/gdk.h> can be included directly."
32#endif
33
34#include <gdk/gdkdrawable.h>
35#include <gdk/gdktypes.h>
36#include <gdk/gdkevents.h>
37
38G_BEGIN_DECLS
39
40typedef struct _GdkGeometry GdkGeometry;
41typedef struct _GdkWindowAttr GdkWindowAttr;
42typedef struct _GdkPointerHooks GdkPointerHooks;
43typedef struct _GdkWindowRedirect GdkWindowRedirect;
44
45/* Classes of windows.
46 * InputOutput: Almost every window should be of this type. Such windows
47 * receive events and are also displayed on screen.
48 * InputOnly: Used only in special circumstances when events need to be
49 * stolen from another window or windows. Input only windows
50 * have no visible output, so they are handy for placing over
51 * top of a group of windows in order to grab the events (or
52 * filter the events) from those windows.
53 */
54typedef enum
55{
56 GDK_INPUT_OUTPUT,
57 GDK_INPUT_ONLY
58} GdkWindowClass;
59
60/* Types of windows.
61 * Root: There is only 1 root window and it is initialized
62 * at startup. Creating a window of type GDK_WINDOW_ROOT
63 * is an error.
64 * Toplevel: Windows which interact with the window manager.
65 * Child: Windows which are children of some other type of window.
66 * (Any other type of window). Most windows are child windows.
67 * Dialog: A special kind of toplevel window which interacts with
68 * the window manager slightly differently than a regular
69 * toplevel window. Dialog windows should be used for any
70 * transient window.
71 * Foreign: A window that actually belongs to another application
72 */
73typedef enum
74{
75 GDK_WINDOW_ROOT,
76 GDK_WINDOW_TOPLEVEL,
77 GDK_WINDOW_CHILD,
78 GDK_WINDOW_DIALOG,
79 GDK_WINDOW_TEMP,
80 GDK_WINDOW_FOREIGN,
81 GDK_WINDOW_OFFSCREEN
82} GdkWindowType;
83
84/* Window attribute mask values.
85 * GDK_WA_TITLE: The "title" field is valid.
86 * GDK_WA_X: The "x" field is valid.
87 * GDK_WA_Y: The "y" field is valid.
88 * GDK_WA_CURSOR: The "cursor" field is valid.
89 * GDK_WA_COLORMAP: The "colormap" field is valid.
90 * GDK_WA_VISUAL: The "visual" field is valid.
91 */
92typedef enum
93{
94 GDK_WA_TITLE = 1 << 1,
95 GDK_WA_X = 1 << 2,
96 GDK_WA_Y = 1 << 3,
97 GDK_WA_CURSOR = 1 << 4,
98 GDK_WA_COLORMAP = 1 << 5,
99 GDK_WA_VISUAL = 1 << 6,
100 GDK_WA_WMCLASS = 1 << 7,
101 GDK_WA_NOREDIR = 1 << 8,
102 GDK_WA_TYPE_HINT = 1 << 9
103} GdkWindowAttributesType;
104
105/* Size restriction enumeration.
106 */
107typedef enum
108{
109 GDK_HINT_POS = 1 << 0,
110 GDK_HINT_MIN_SIZE = 1 << 1,
111 GDK_HINT_MAX_SIZE = 1 << 2,
112 GDK_HINT_BASE_SIZE = 1 << 3,
113 GDK_HINT_ASPECT = 1 << 4,
114 GDK_HINT_RESIZE_INC = 1 << 5,
115 GDK_HINT_WIN_GRAVITY = 1 << 6,
116 GDK_HINT_USER_POS = 1 << 7,
117 GDK_HINT_USER_SIZE = 1 << 8
118} GdkWindowHints;
119
120
121/* Window type hints.
122 * These are hints for the window manager that indicate
123 * what type of function the window has. The window manager
124 * can use this when determining decoration and behaviour
125 * of the window. The hint must be set before mapping the
126 * window.
127 *
128 * Normal: Normal toplevel window
129 * Dialog: Dialog window
130 * Menu: Window used to implement a menu.
131 * Toolbar: Window used to implement toolbars.
132 */
133typedef enum
134{
135 GDK_WINDOW_TYPE_HINT_NORMAL,
136 GDK_WINDOW_TYPE_HINT_DIALOG,
137 GDK_WINDOW_TYPE_HINT_MENU, /* Torn off menu */
138 GDK_WINDOW_TYPE_HINT_TOOLBAR,
139 GDK_WINDOW_TYPE_HINT_SPLASHSCREEN,
140 GDK_WINDOW_TYPE_HINT_UTILITY,
141 GDK_WINDOW_TYPE_HINT_DOCK,
142 GDK_WINDOW_TYPE_HINT_DESKTOP,
143 GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
144 GDK_WINDOW_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
145 GDK_WINDOW_TYPE_HINT_TOOLTIP,
146 GDK_WINDOW_TYPE_HINT_NOTIFICATION,
147 GDK_WINDOW_TYPE_HINT_COMBO,
148 GDK_WINDOW_TYPE_HINT_DND
149} GdkWindowTypeHint;
150
151/* The next two enumeration values current match the
152 * Motif constants. If this is changed, the implementation
153 * of gdk_window_set_decorations/gdk_window_set_functions
154 * will need to change as well.
155 */
156typedef enum
157{
158 GDK_DECOR_ALL = 1 << 0,
159 GDK_DECOR_BORDER = 1 << 1,
160 GDK_DECOR_RESIZEH = 1 << 2,
161 GDK_DECOR_TITLE = 1 << 3,
162 GDK_DECOR_MENU = 1 << 4,
163 GDK_DECOR_MINIMIZE = 1 << 5,
164 GDK_DECOR_MAXIMIZE = 1 << 6
165} GdkWMDecoration;
166
167typedef enum
168{
169 GDK_FUNC_ALL = 1 << 0,
170 GDK_FUNC_RESIZE = 1 << 1,
171 GDK_FUNC_MOVE = 1 << 2,
172 GDK_FUNC_MINIMIZE = 1 << 3,
173 GDK_FUNC_MAXIMIZE = 1 << 4,
174 GDK_FUNC_CLOSE = 1 << 5
175} GdkWMFunction;
176
177/* Currently, these are the same values numerically as in the
178 * X protocol. If you change that, gdkwindow-x11.c/gdk_window_set_geometry_hints()
179 * will need fixing.
180 */
181typedef enum
182{
183 GDK_GRAVITY_NORTH_WEST = 1,
184 GDK_GRAVITY_NORTH,
185 GDK_GRAVITY_NORTH_EAST,
186 GDK_GRAVITY_WEST,
187 GDK_GRAVITY_CENTER,
188 GDK_GRAVITY_EAST,
189 GDK_GRAVITY_SOUTH_WEST,
190 GDK_GRAVITY_SOUTH,
191 GDK_GRAVITY_SOUTH_EAST,
192 GDK_GRAVITY_STATIC
193} GdkGravity;
194
195
196typedef enum
197{
198 GDK_WINDOW_EDGE_NORTH_WEST,
199 GDK_WINDOW_EDGE_NORTH,
200 GDK_WINDOW_EDGE_NORTH_EAST,
201 GDK_WINDOW_EDGE_WEST,
202 GDK_WINDOW_EDGE_EAST,
203 GDK_WINDOW_EDGE_SOUTH_WEST,
204 GDK_WINDOW_EDGE_SOUTH,
205 GDK_WINDOW_EDGE_SOUTH_EAST
206} GdkWindowEdge;
207
208struct _GdkWindowAttr
209{
210 gchar *title;
211 gint event_mask;
212 gint x, y;
213 gint width;
214 gint height;
215 GdkWindowClass wclass;
216 GdkVisual *visual;
217 GdkColormap *colormap;
218 GdkWindowType window_type;
219 GdkCursor *cursor;
220 gchar *wmclass_name;
221 gchar *wmclass_class;
222 gboolean override_redirect;
223 GdkWindowTypeHint type_hint;
224};
225
226struct _GdkGeometry
227{
228 gint min_width;
229 gint min_height;
230 gint max_width;
231 gint max_height;
232 gint base_width;
233 gint base_height;
234 gint width_inc;
235 gint height_inc;
236 gdouble min_aspect;
237 gdouble max_aspect;
238 GdkGravity win_gravity;
239};
240
241struct _GdkPointerHooks
242{
243 GdkWindow* (*get_pointer) (GdkWindow *window,
244 gint *x,
245 gint *y,
246 GdkModifierType *mask);
247 GdkWindow* (*window_at_pointer) (GdkScreen *screen, /* unused */
248 gint *win_x,
249 gint *win_y);
250};
251
252typedef struct _GdkWindowObject GdkWindowObject;
253typedef struct _GdkWindowObjectClass GdkWindowObjectClass;
254
255#define GDK_TYPE_WINDOW (gdk_window_object_get_type ())
256#define GDK_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WINDOW, GdkWindow))
257#define GDK_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WINDOW, GdkWindowObjectClass))
258#define GDK_IS_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WINDOW))
259#define GDK_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WINDOW))
260#define GDK_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WINDOW, GdkWindowObjectClass))
261
262#ifndef GDK_DISABLE_DEPRECATED
263#define GDK_WINDOW_OBJECT(object) ((GdkWindowObject *) GDK_WINDOW (object))
264
265#ifndef GDK_COMPILATION
266
267/* We used to export all of GdkWindowObject, but we don't want to keep doing so.
268 However, there are various parts of it accessed by macros and other code,
269 so we keep the old exported version public, but in reality it is larger. */
270
271/**** DON'T CHANGE THIS STRUCT, the real version is in gdkinternals.h ****/
272struct _GdkWindowObject
273{
274 GdkDrawable parent_instance;
275
276 GdkDrawable *GSEAL (impl); /* window-system-specific delegate object */
277
278 GdkWindowObject *GSEAL (parent);
279
280 gpointer GSEAL (user_data);
281
282 gint GSEAL (x);
283 gint GSEAL (y);
284
285 gint GSEAL (extension_events);
286
287 GList *GSEAL (filters);
288 GList *GSEAL (children);
289
290 GdkColor GSEAL (bg_color);
291 GdkPixmap *GSEAL (bg_pixmap);
292
293 GSList *GSEAL (paint_stack);
294
295 GdkRegion *GSEAL (update_area);
296 guint GSEAL (update_freeze_count);
297
298 guint8 GSEAL (window_type);
299 guint8 GSEAL (depth);
300 guint8 GSEAL (resize_count);
301
302 GdkWindowState GSEAL (state);
303
304 guint GSEAL (guffaw_gravity) : 1;
305 guint GSEAL (input_only) : 1;
306 guint GSEAL (modal_hint) : 1;
307 guint GSEAL (composited) : 1;
308
309 guint GSEAL (destroyed) : 2;
310
311 guint GSEAL (accept_focus) : 1;
312 guint GSEAL (focus_on_map) : 1;
313 guint GSEAL (shaped) : 1;
314
315 GdkEventMask GSEAL (event_mask);
316
317 guint GSEAL (update_and_descendants_freeze_count);
318
319 GdkWindowRedirect *GSEAL (redirect);
320};
321#endif
322#endif
323
324struct _GdkWindowObjectClass
325{
326 GdkDrawableClass parent_class;
327};
328
329/* Windows
330 */
331GType gdk_window_object_get_type (void) G_GNUC_CONST;
332GdkWindow* gdk_window_new (GdkWindow *parent,
333 GdkWindowAttr *attributes,
334 gint attributes_mask);
335void gdk_window_destroy (GdkWindow *window);
336GdkWindowType gdk_window_get_window_type (GdkWindow *window);
337gboolean gdk_window_is_destroyed (GdkWindow *window);
338
339GdkScreen* gdk_window_get_screen (GdkWindow *window);
340GdkDisplay* gdk_window_get_display (GdkWindow *window);
341GdkVisual* gdk_window_get_visual (GdkWindow *window);
342int gdk_window_get_width (GdkWindow *window);
343int gdk_window_get_height (GdkWindow *window);
344
345GdkWindow* gdk_window_at_pointer (gint *win_x,
346 gint *win_y);
347void gdk_window_show (GdkWindow *window);
348void gdk_window_hide (GdkWindow *window);
349void gdk_window_withdraw (GdkWindow *window);
350void gdk_window_show_unraised (GdkWindow *window);
351void gdk_window_move (GdkWindow *window,
352 gint x,
353 gint y);
354void gdk_window_resize (GdkWindow *window,
355 gint width,
356 gint height);
357void gdk_window_move_resize (GdkWindow *window,
358 gint x,
359 gint y,
360 gint width,
361 gint height);
362void gdk_window_reparent (GdkWindow *window,
363 GdkWindow *new_parent,
364 gint x,
365 gint y);
366void gdk_window_clear (GdkWindow *window);
367void gdk_window_clear_area (GdkWindow *window,
368 gint x,
369 gint y,
370 gint width,
371 gint height);
372void gdk_window_clear_area_e (GdkWindow *window,
373 gint x,
374 gint y,
375 gint width,
376 gint height);
377void gdk_window_raise (GdkWindow *window);
378void gdk_window_lower (GdkWindow *window);
379void gdk_window_restack (GdkWindow *window,
380 GdkWindow *sibling,
381 gboolean above);
382void gdk_window_focus (GdkWindow *window,
383 guint32 timestamp);
384void gdk_window_set_user_data (GdkWindow *window,
385 gpointer user_data);
386void gdk_window_set_override_redirect (GdkWindow *window,
387 gboolean override_redirect);
388gboolean gdk_window_get_accept_focus (GdkWindow *window);
389void gdk_window_set_accept_focus (GdkWindow *window,
390 gboolean accept_focus);
391gboolean gdk_window_get_focus_on_map (GdkWindow *window);
392void gdk_window_set_focus_on_map (GdkWindow *window,
393 gboolean focus_on_map);
394void gdk_window_add_filter (GdkWindow *window,
395 GdkFilterFunc function,
396 gpointer data);
397void gdk_window_remove_filter (GdkWindow *window,
398 GdkFilterFunc function,
399 gpointer data);
400void gdk_window_scroll (GdkWindow *window,
401 gint dx,
402 gint dy);
403void gdk_window_move_region (GdkWindow *window,
404 const GdkRegion *region,
405 gint dx,
406 gint dy);
407gboolean gdk_window_ensure_native (GdkWindow *window);
408
409/*
410 * This allows for making shaped (partially transparent) windows
411 * - cool feature, needed for Drag and Drag for example.
412 * The shape_mask can be the mask
413 * from gdk_pixmap_create_from_xpm. Stefan Wille
414 */
415void gdk_window_shape_combine_mask (GdkWindow *window,
416 GdkBitmap *mask,
417 gint x,
418 gint y);
419void gdk_window_shape_combine_region (GdkWindow *window,
420 const GdkRegion *shape_region,
421 gint offset_x,
422 gint offset_y);
423
424/*
425 * This routine allows you to quickly take the shapes of all the child windows
426 * of a window and use their shapes as the shape mask for this window - useful
427 * for container windows that dont want to look like a big box
428 *
429 * - Raster
430 */
431void gdk_window_set_child_shapes (GdkWindow *window);
432
433gboolean gdk_window_get_composited (GdkWindow *window);
434void gdk_window_set_composited (GdkWindow *window,
435 gboolean composited);
436
437/*
438 * This routine allows you to merge (ie ADD) child shapes to your
439 * own window's shape keeping its current shape and ADDING the child
440 * shapes to it.
441 *
442 * - Raster
443 */
444void gdk_window_merge_child_shapes (GdkWindow *window);
445
446void gdk_window_input_shape_combine_mask (GdkWindow *window,
447 GdkBitmap *mask,
448 gint x,
449 gint y);
450void gdk_window_input_shape_combine_region (GdkWindow *window,
451 const GdkRegion *shape_region,
452 gint offset_x,
453 gint offset_y);
454void gdk_window_set_child_input_shapes (GdkWindow *window);
455void gdk_window_merge_child_input_shapes (GdkWindow *window);
456
457
458/*
459 * Check if a window has been shown, and whether all its
460 * parents up to a toplevel have been shown, respectively.
461 * Note that a window that is_viewable below is not necessarily
462 * viewable in the X sense.
463 */
464gboolean gdk_window_is_visible (GdkWindow *window);
465gboolean gdk_window_is_viewable (GdkWindow *window);
466gboolean gdk_window_is_input_only (GdkWindow *window);
467gboolean gdk_window_is_shaped (GdkWindow *window);
468
469GdkWindowState gdk_window_get_state (GdkWindow *window);
470
471/* Set static bit gravity on the parent, and static
472 * window gravity on all children.
473 */
474gboolean gdk_window_set_static_gravities (GdkWindow *window,
475 gboolean use_static);
476
477/* Functions to create/lookup windows from their native equivalents */
478#if !defined(GDK_DISABLE_DEPRECATED) || defined(GDK_COMPILATION)
479#ifndef GDK_MULTIHEAD_SAFE
480GdkWindow* gdk_window_foreign_new (GdkNativeWindow anid);
481GdkWindow* gdk_window_lookup (GdkNativeWindow anid);
482#endif
483GdkWindow *gdk_window_foreign_new_for_display (GdkDisplay *display,
484 GdkNativeWindow anid);
485GdkWindow* gdk_window_lookup_for_display (GdkDisplay *display,
486 GdkNativeWindow anid);
487#endif
488
489
490/* GdkWindow */
491
492gboolean gdk_window_has_native (GdkWindow *window);
493#ifndef GDK_DISABLE_DEPRECATED
494void gdk_window_set_hints (GdkWindow *window,
495 gint x,
496 gint y,
497 gint min_width,
498 gint min_height,
499 gint max_width,
500 gint max_height,
501 gint flags);
502#endif
503void gdk_window_set_type_hint (GdkWindow *window,
504 GdkWindowTypeHint hint);
505GdkWindowTypeHint gdk_window_get_type_hint (GdkWindow *window);
506
507gboolean gdk_window_get_modal_hint (GdkWindow *window);
508void gdk_window_set_modal_hint (GdkWindow *window,
509 gboolean modal);
510
511void gdk_window_set_skip_taskbar_hint (GdkWindow *window,
512 gboolean skips_taskbar);
513void gdk_window_set_skip_pager_hint (GdkWindow *window,
514 gboolean skips_pager);
515void gdk_window_set_urgency_hint (GdkWindow *window,
516 gboolean urgent);
517
518void gdk_window_set_geometry_hints (GdkWindow *window,
519 const GdkGeometry *geometry,
520 GdkWindowHints geom_mask);
521#if !defined(GDK_DISABLE_DEPRECATED) || defined(GDK_COMPILATION)
522void gdk_set_sm_client_id (const gchar *sm_client_id);
523#endif
524
525void gdk_window_begin_paint_rect (GdkWindow *window,
526 const GdkRectangle *rectangle);
527void gdk_window_begin_paint_region (GdkWindow *window,
528 const GdkRegion *region);
529void gdk_window_end_paint (GdkWindow *window);
530void gdk_window_flush (GdkWindow *window);
531
532void gdk_window_set_title (GdkWindow *window,
533 const gchar *title);
534void gdk_window_set_role (GdkWindow *window,
535 const gchar *role);
536void gdk_window_set_startup_id (GdkWindow *window,
537 const gchar *startup_id);
538void gdk_window_set_transient_for (GdkWindow *window,
539 GdkWindow *parent);
540void gdk_window_set_background (GdkWindow *window,
541 const GdkColor *color);
542void gdk_window_set_back_pixmap (GdkWindow *window,
543 GdkPixmap *pixmap,
544 gboolean parent_relative);
545cairo_pattern_t *gdk_window_get_background_pattern (GdkWindow *window);
546
547void gdk_window_set_cursor (GdkWindow *window,
548 GdkCursor *cursor);
549GdkCursor *gdk_window_get_cursor (GdkWindow *window);
550void gdk_window_get_user_data (GdkWindow *window,
551 gpointer *data);
552void gdk_window_get_geometry (GdkWindow *window,
553 gint *x,
554 gint *y,
555 gint *width,
556 gint *height,
557 gint *depth);
558void gdk_window_get_position (GdkWindow *window,
559 gint *x,
560 gint *y);
561gint gdk_window_get_origin (GdkWindow *window,
562 gint *x,
563 gint *y);
564void gdk_window_get_root_coords (GdkWindow *window,
565 gint x,
566 gint y,
567 gint *root_x,
568 gint *root_y);
569void gdk_window_coords_to_parent (GdkWindow *window,
570 gdouble x,
571 gdouble y,
572 gdouble *parent_x,
573 gdouble *parent_y);
574void gdk_window_coords_from_parent (GdkWindow *window,
575 gdouble parent_x,
576 gdouble parent_y,
577 gdouble *x,
578 gdouble *y);
579
580#if !defined (GDK_DISABLE_DEPRECATED) || defined (GDK_COMPILATION)
581/* Used by gtk_handle_box_button_changed () */
582gboolean gdk_window_get_deskrelative_origin (GdkWindow *window,
583 gint *x,
584 gint *y);
585#endif
586
587void gdk_window_get_root_origin (GdkWindow *window,
588 gint *x,
589 gint *y);
590void gdk_window_get_frame_extents (GdkWindow *window,
591 GdkRectangle *rect);
592GdkWindow* gdk_window_get_pointer (GdkWindow *window,
593 gint *x,
594 gint *y,
595 GdkModifierType *mask);
596GdkWindow * gdk_window_get_parent (GdkWindow *window);
597GdkWindow * gdk_window_get_toplevel (GdkWindow *window);
598
599GdkWindow * gdk_window_get_effective_parent (GdkWindow *window);
600GdkWindow * gdk_window_get_effective_toplevel (GdkWindow *window);
601
602GList * gdk_window_get_children (GdkWindow *window);
603GList * gdk_window_peek_children (GdkWindow *window);
604GdkEventMask gdk_window_get_events (GdkWindow *window);
605void gdk_window_set_events (GdkWindow *window,
606 GdkEventMask event_mask);
607
608void gdk_window_set_icon_list (GdkWindow *window,
609 GList *pixbufs);
610void gdk_window_set_icon (GdkWindow *window,
611 GdkWindow *icon_window,
612 GdkPixmap *pixmap,
613 GdkBitmap *mask);
614void gdk_window_set_icon_name (GdkWindow *window,
615 const gchar *name);
616void gdk_window_set_group (GdkWindow *window,
617 GdkWindow *leader);
618GdkWindow* gdk_window_get_group (GdkWindow *window);
619void gdk_window_set_decorations (GdkWindow *window,
620 GdkWMDecoration decorations);
621gboolean gdk_window_get_decorations (GdkWindow *window,
622 GdkWMDecoration *decorations);
623void gdk_window_set_functions (GdkWindow *window,
624 GdkWMFunction functions);
625#if !defined(GDK_MULTIHEAD_SAFE) && !defined(GDK_DISABLE_DEPRECATED)
626GList * gdk_window_get_toplevels (void);
627#endif
628
629cairo_surface_t *
630 gdk_window_create_similar_surface (GdkWindow *window,
631 cairo_content_t content,
632 int width,
633 int height);
634
635void gdk_window_beep (GdkWindow *window);
636void gdk_window_iconify (GdkWindow *window);
637void gdk_window_deiconify (GdkWindow *window);
638void gdk_window_stick (GdkWindow *window);
639void gdk_window_unstick (GdkWindow *window);
640void gdk_window_maximize (GdkWindow *window);
641void gdk_window_unmaximize (GdkWindow *window);
642void gdk_window_fullscreen (GdkWindow *window);
643void gdk_window_unfullscreen (GdkWindow *window);
644void gdk_window_set_keep_above (GdkWindow *window,
645 gboolean setting);
646void gdk_window_set_keep_below (GdkWindow *window,
647 gboolean setting);
648void gdk_window_set_opacity (GdkWindow *window,
649 gdouble opacity);
650void gdk_window_register_dnd (GdkWindow *window);
651
652void gdk_window_begin_resize_drag (GdkWindow *window,
653 GdkWindowEdge edge,
654 gint button,
655 gint root_x,
656 gint root_y,
657 guint32 timestamp);
658void gdk_window_begin_move_drag (GdkWindow *window,
659 gint button,
660 gint root_x,
661 gint root_y,
662 guint32 timestamp);
663
664/* Interface for dirty-region queueing */
665void gdk_window_invalidate_rect (GdkWindow *window,
666 const GdkRectangle *rect,
667 gboolean invalidate_children);
668void gdk_window_invalidate_region (GdkWindow *window,
669 const GdkRegion *region,
670 gboolean invalidate_children);
671void gdk_window_invalidate_maybe_recurse (GdkWindow *window,
672 const GdkRegion *region,
673 gboolean (*child_func) (GdkWindow *, gpointer),
674 gpointer user_data);
675GdkRegion *gdk_window_get_update_area (GdkWindow *window);
676
677void gdk_window_freeze_updates (GdkWindow *window);
678void gdk_window_thaw_updates (GdkWindow *window);
679
680void gdk_window_freeze_toplevel_updates_libgtk_only (GdkWindow *window);
681void gdk_window_thaw_toplevel_updates_libgtk_only (GdkWindow *window);
682
683void gdk_window_process_all_updates (void);
684void gdk_window_process_updates (GdkWindow *window,
685 gboolean update_children);
686
687/* Enable/disable flicker, so you can tell if your code is inefficient. */
688void gdk_window_set_debug_updates (gboolean setting);
689
690void gdk_window_constrain_size (GdkGeometry *geometry,
691 guint flags,
692 gint width,
693 gint height,
694 gint *new_width,
695 gint *new_height);
696
697void gdk_window_get_internal_paint_info (GdkWindow *window,
698 GdkDrawable **real_drawable,
699 gint *x_offset,
700 gint *y_offset);
701
702void gdk_window_enable_synchronized_configure (GdkWindow *window);
703void gdk_window_configure_finished (GdkWindow *window);
704
705GdkWindow *gdk_get_default_root_window (void);
706
707/* Offscreen redirection */
708GdkPixmap *gdk_offscreen_window_get_pixmap (GdkWindow *window);
709void gdk_offscreen_window_set_embedder (GdkWindow *window,
710 GdkWindow *embedder);
711GdkWindow *gdk_offscreen_window_get_embedder (GdkWindow *window);
712void gdk_window_geometry_changed (GdkWindow *window);
713
714void gdk_window_redirect_to_drawable (GdkWindow *window,
715 GdkDrawable *drawable,
716 gint src_x,
717 gint src_y,
718 gint dest_x,
719 gint dest_y,
720 gint width,
721 gint height);
722void gdk_window_remove_redirection (GdkWindow *window);
723
724#ifndef GDK_DISABLE_DEPRECATED
725#ifndef GDK_MULTIHEAD_SAFE
726GdkPointerHooks *gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks);
727#endif /* GDK_MULTIHEAD_SAFE */
728
729#define GDK_ROOT_PARENT() (gdk_get_default_root_window ())
730#define gdk_window_get_size gdk_drawable_get_size
731#define gdk_window_get_type gdk_window_get_window_type
732#define gdk_window_get_colormap gdk_drawable_get_colormap
733#define gdk_window_set_colormap gdk_drawable_set_colormap
734#define gdk_window_ref g_object_ref
735#define gdk_window_unref g_object_unref
736
737#define gdk_window_copy_area(drawable,gc,x,y,source_drawable,source_x,source_y,width,height) \
738 gdk_draw_pixmap(drawable,gc,source_drawable,source_x,source_y,x,y,width,height)
739#endif /* GDK_DISABLE_DEPRECATED */
740
741G_END_DECLS
742
743#endif /* __GDK_WINDOW_H__ */
744