1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
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.
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.
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.
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/.
27 #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
28 #error "Only <gdk/gdk.h> can be included directly."
31 #ifndef __GDK_WINDOW_H__
32 #define __GDK_WINDOW_H__
34 #include <gdk/gdkdrawable.h>
35 #include <gdk/gdktypes.h>
36 #include <gdk/gdkevents.h>
40 typedef struct _GdkGeometry GdkGeometry;
41 typedef struct _GdkWindowAttr GdkWindowAttr;
42 typedef struct _GdkPointerHooks GdkPointerHooks;
43 typedef struct _GdkWindowRedirect GdkWindowRedirect;
47 * @GDK_INPUT_OUTPUT: window for graphics and events
48 * @GDK_INPUT_ONLY: window for events only
50 * @GDK_INPUT_OUTPUT windows are the standard kind of window you might expect.
51 * Such windows receive events and are also displayed on screen.
52 * @GDK_INPUT_ONLY windows are invisible; they are usually placed above other
53 * windows in order to trap or filter the events. You can't draw on
54 * @GDK_INPUT_ONLY windows.
64 * @GDK_WINDOW_ROOT: root window; this window has no parent, covers the entire
65 * screen, and is created by the window system
66 * @GDK_WINDOW_TOPLEVEL: toplevel window (used to implement #GtkWindow)
67 * @GDK_WINDOW_CHILD: child window (used to implement e.g. #GtkEntry)
68 * @GDK_WINDOW_DIALOG: useless/deprecated compatibility type
69 * @GDK_WINDOW_TEMP: override redirect temporary window (used to implement
71 * @GDK_WINDOW_FOREIGN: foreign window (see gdk_window_foreign_new())
72 * @GDK_WINDOW_OFFSCREEN: offscreen window (see
73 * <xref linkend="OFFSCREEN-WINDOWS"/>). Since 2.18
75 * Describes the kind of window.
89 * GdkWindowAttributesType:
90 * @GDK_WA_TITLE: Honor the title field
91 * @GDK_WA_X: Honor the X coordinate field
92 * @GDK_WA_Y: Honor the Y coordinate field
93 * @GDK_WA_CURSOR: Honor the cursor field
94 * @GDK_WA_COLORMAP: Honor the colormap field
95 * @GDK_WA_VISUAL: Honor the visual field
96 * @GDK_WA_WMCLASS: Honor the wmclass_class and wmclass_name fields
97 * @GDK_WA_NOREDIR: Honor the override_redirect field
98 * @GDK_WA_TYPE_HINT: Honor the type_hint field
100 * Used to indicate which fields in the #GdkWindowAttr struct should be honored.
101 * For example, if you filled in the "cursor" and "x" fields of #GdkWindowAttr,
102 * pass "@GDK_WA_X | @GDK_WA_CURSOR" to gdk_window_new(). Fields in
103 * #GdkWindowAttr not covered by a bit in this enum are required; for example,
104 * the @width/@height, @wclass, and @window_type fields are required, they have
105 * no corresponding flag in #GdkWindowAttributesType.
109 GDK_WA_TITLE = 1 << 1,
112 GDK_WA_CURSOR = 1 << 4,
113 GDK_WA_COLORMAP = 1 << 5,
114 GDK_WA_VISUAL = 1 << 6,
115 GDK_WA_WMCLASS = 1 << 7,
116 GDK_WA_NOREDIR = 1 << 8,
117 GDK_WA_TYPE_HINT = 1 << 9
118 } GdkWindowAttributesType;
120 /* Size restriction enumeration.
124 * @GDK_HINT_POS: indicates that the program has positioned the window
125 * @GDK_HINT_MIN_SIZE: min size fields are set
126 * @GDK_HINT_MAX_SIZE: max size fields are set
127 * @GDK_HINT_BASE_SIZE: base size fields are set
128 * @GDK_HINT_ASPECT: aspect ratio fields are set
129 * @GDK_HINT_RESIZE_INC: resize increment fields are set
130 * @GDK_HINT_WIN_GRAVITY: window gravity field is set
131 * @GDK_HINT_USER_POS: indicates that the window's position was explicitly set
133 * @GDK_HINT_USER_SIZE: indicates that the window's size was explicitly set by
136 * Used to indicate which fields of a #GdkGeometry struct should be paid
137 * attention to. Also, the presence/absence of @GDK_HINT_POS,
138 * @GDK_HINT_USER_POS, and @GDK_HINT_USER_SIZE is significant, though they don't
139 * directly refer to #GdkGeometry fields. @GDK_HINT_USER_POS will be set
140 * automatically by #GtkWindow if you call gtk_window_move().
141 * @GDK_HINT_USER_POS and @GDK_HINT_USER_SIZE should be set if the user
142 * specified a size/position using a --geometry command-line argument;
143 * gtk_window_parse_geometry() automatically sets these flags.
147 GDK_HINT_POS = 1 << 0,
148 GDK_HINT_MIN_SIZE = 1 << 1,
149 GDK_HINT_MAX_SIZE = 1 << 2,
150 GDK_HINT_BASE_SIZE = 1 << 3,
151 GDK_HINT_ASPECT = 1 << 4,
152 GDK_HINT_RESIZE_INC = 1 << 5,
153 GDK_HINT_WIN_GRAVITY = 1 << 6,
154 GDK_HINT_USER_POS = 1 << 7,
155 GDK_HINT_USER_SIZE = 1 << 8
161 * @GDK_WINDOW_TYPE_HINT_NORMAL: Normal toplevel window.
162 * @GDK_WINDOW_TYPE_HINT_DIALOG: Dialog window.
163 * @GDK_WINDOW_TYPE_HINT_MENU: Window used to implement a menu; GTK+ uses
164 * this hint only for torn-off menus, see #GtkTearoffMenuItem.
165 * @GDK_WINDOW_TYPE_HINT_TOOLBAR: Window used to implement toolbars.
166 * @GDK_WINDOW_TYPE_HINT_SPLASHSCREEN: Window used to display a splash
167 * screen during application startup.
168 * @GDK_WINDOW_TYPE_HINT_UTILITY: Utility windows which are not detached
169 * toolbars or dialogs.
170 * @GDK_WINDOW_TYPE_HINT_DOCK: Used for creating dock or panel windows.
171 * @GDK_WINDOW_TYPE_HINT_DESKTOP: Used for creating the desktop background
173 * @GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU: A menu that belongs to a menubar.
174 * @GDK_WINDOW_TYPE_HINT_POPUP_MENU: A menu that does not belong to a menubar,
175 * e.g. a context menu.
176 * @GDK_WINDOW_TYPE_HINT_TOOLTIP: A tooltip.
177 * @GDK_WINDOW_TYPE_HINT_NOTIFICATION: A notification - typically a "bubble"
178 * that belongs to a status icon.
179 * @GDK_WINDOW_TYPE_HINT_COMBO: A popup from a combo box.
180 * @GDK_WINDOW_TYPE_HINT_DND: A window that is used to implement a DND cursor.
182 * These are hints for the window manager that indicate what type of function
183 * the window has. The window manager can use this when determining decoration
184 * and behaviour of the window. The hint must be set before mapping the window.
187 * <ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended
188 * Window Manager Hints</ulink> specification for more details about
193 GDK_WINDOW_TYPE_HINT_NORMAL,
194 GDK_WINDOW_TYPE_HINT_DIALOG,
195 GDK_WINDOW_TYPE_HINT_MENU, /* Torn off menu */
196 GDK_WINDOW_TYPE_HINT_TOOLBAR,
197 GDK_WINDOW_TYPE_HINT_SPLASHSCREEN,
198 GDK_WINDOW_TYPE_HINT_UTILITY,
199 GDK_WINDOW_TYPE_HINT_DOCK,
200 GDK_WINDOW_TYPE_HINT_DESKTOP,
201 GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
202 GDK_WINDOW_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
203 GDK_WINDOW_TYPE_HINT_TOOLTIP,
204 GDK_WINDOW_TYPE_HINT_NOTIFICATION,
205 GDK_WINDOW_TYPE_HINT_COMBO,
206 GDK_WINDOW_TYPE_HINT_DND
209 /* The next two enumeration values current match the
210 * Motif constants. If this is changed, the implementation
211 * of gdk_window_set_decorations/gdk_window_set_functions
212 * will need to change as well.
216 * @GDK_DECOR_ALL: all decorations should be applied.
217 * @GDK_DECOR_BORDER: a frame should be drawn around the window.
218 * @GDK_DECOR_RESIZEH: the frame should have resize handles.
219 * @GDK_DECOR_TITLE: a titlebar should be placed above the window.
220 * @GDK_DECOR_MENU: a button for opening a menu should be included.
221 * @GDK_DECOR_MINIMIZE: a minimize button should be included.
222 * @GDK_DECOR_MAXIMIZE: a maximize button should be included.
224 * These are hints originally defined by the Motif toolkit.
225 * The window manager can use them when determining how to decorate
226 * the window. The hint must be set before mapping the window.
230 GDK_DECOR_ALL = 1 << 0,
231 GDK_DECOR_BORDER = 1 << 1,
232 GDK_DECOR_RESIZEH = 1 << 2,
233 GDK_DECOR_TITLE = 1 << 3,
234 GDK_DECOR_MENU = 1 << 4,
235 GDK_DECOR_MINIMIZE = 1 << 5,
236 GDK_DECOR_MAXIMIZE = 1 << 6
241 * @GDK_FUNC_ALL: all functions should be offered.
242 * @GDK_FUNC_RESIZE: the window should be resizable.
243 * @GDK_FUNC_MOVE: the window should be movable.
244 * @GDK_FUNC_MINIMIZE: the window should be minimizable.
245 * @GDK_FUNC_MAXIMIZE: the window should be maximizable.
246 * @GDK_FUNC_CLOSE: the window should be closable.
248 * These are hints originally defined by the Motif toolkit. The window manager
249 * can use them when determining the functions to offer for the window. The
250 * hint must be set before mapping the window.
254 GDK_FUNC_ALL = 1 << 0,
255 GDK_FUNC_RESIZE = 1 << 1,
256 GDK_FUNC_MOVE = 1 << 2,
257 GDK_FUNC_MINIMIZE = 1 << 3,
258 GDK_FUNC_MAXIMIZE = 1 << 4,
259 GDK_FUNC_CLOSE = 1 << 5
262 /* Currently, these are the same values numerically as in the
263 * X protocol. If you change that, gdkwindow-x11.c/gdk_window_set_geometry_hints()
268 * @GDK_GRAVITY_NORTH_WEST: the reference point is at the top left corner.
269 * @GDK_GRAVITY_NORTH: the reference point is in the middle of the top edge.
270 * @GDK_GRAVITY_NORTH_EAST: the reference point is at the top right corner.
271 * @GDK_GRAVITY_WEST: the reference point is at the middle of the left edge.
272 * @GDK_GRAVITY_CENTER: the reference point is at the center of the window.
273 * @GDK_GRAVITY_EAST: the reference point is at the middle of the right edge.
274 * @GDK_GRAVITY_SOUTH_WEST: the reference point is at the lower left corner.
275 * @GDK_GRAVITY_SOUTH: the reference point is at the middle of the lower edge.
276 * @GDK_GRAVITY_SOUTH_EAST: the reference point is at the lower right corner.
277 * @GDK_GRAVITY_STATIC: the reference point is at the top left corner of the
278 * window itself, ignoring window manager decorations.
280 * Defines the reference point of a window and the meaning of coordinates
281 * passed to gtk_window_move(). See gtk_window_move() and the "implementation
282 * notes" section of the
283 * <ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended
284 * Window Manager Hints</ulink> specification for more details.
288 GDK_GRAVITY_NORTH_WEST = 1,
290 GDK_GRAVITY_NORTH_EAST,
294 GDK_GRAVITY_SOUTH_WEST,
296 GDK_GRAVITY_SOUTH_EAST,
303 * @GDK_WINDOW_EDGE_NORTH_WEST: the top left corner.
304 * @GDK_WINDOW_EDGE_NORTH: the top edge.
305 * @GDK_WINDOW_EDGE_NORTH_EAST: the top right corner.
306 * @GDK_WINDOW_EDGE_WEST: the left edge.
307 * @GDK_WINDOW_EDGE_EAST: the right edge.
308 * @GDK_WINDOW_EDGE_SOUTH_WEST: the lower left corner.
309 * @GDK_WINDOW_EDGE_SOUTH: the lower edge.
310 * @GDK_WINDOW_EDGE_SOUTH_EAST: the lower right corner.
312 * Determines a window edge or corner.
316 GDK_WINDOW_EDGE_NORTH_WEST,
317 GDK_WINDOW_EDGE_NORTH,
318 GDK_WINDOW_EDGE_NORTH_EAST,
319 GDK_WINDOW_EDGE_WEST,
320 GDK_WINDOW_EDGE_EAST,
321 GDK_WINDOW_EDGE_SOUTH_WEST,
322 GDK_WINDOW_EDGE_SOUTH,
323 GDK_WINDOW_EDGE_SOUTH_EAST
328 * @title: title of the window (for toplevel windows)
329 * @event_mask: event mask (see gdk_window_set_events())
330 * @x: X coordinate relative to parent window (see gdk_window_move())
331 * @y: Y coordinate relative to parent window (see gdk_window_move())
332 * @width: width of window
333 * @height: height of window
334 * @wclass: #GDK_INPUT_OUTPUT (normal window) or #GDK_INPUT_ONLY (invisible
335 * window that receives events)
336 * @visual: #GdkVisual for window
337 * @colormap: #GdkColormap for window
338 * @window_type: type of window
339 * @cursor: cursor for the window (see gdk_window_set_cursor())
340 * @wmclass_name: don't use (see gtk_window_set_wmclass())
341 * @wmclass_class: don't use (see gtk_window_set_wmclass())
342 * @override_redirect: %TRUE to bypass the window manager
343 * @type_hint: a hint of the function of the window
345 * Attributes to use for a newly-created window.
347 struct _GdkWindowAttr
354 GdkWindowClass wclass;
356 GdkColormap *colormap;
357 GdkWindowType window_type;
360 gchar *wmclass_class;
361 gboolean override_redirect;
362 GdkWindowTypeHint type_hint;
367 * @min_width: minimum width of window (or -1 to use requisition, with
369 * @min_height: minimum height of window (or -1 to use requisition, with
371 * @max_width: maximum width of window (or -1 to use requisition, with
373 * @max_height: maximum height of window (or -1 to use requisition, with
375 * @base_width: allowed window widths are @base_width + @width_inc * N where N
376 * is any integer (-1 allowed with #GtkWindow)
377 * @base_height: allowed window widths are @base_height + @height_inc * N where
378 * N is any integer (-1 allowed with #GtkWindow)
379 * @width_inc: width resize increment
380 * @height_inc: height resize increment
381 * @min_aspect: minimum width/height ratio
382 * @max_aspect: maximum width/height ratio
383 * @win_gravity: window gravity, see gtk_window_set_gravity()
385 * The #GdkGeometry struct gives the window manager information about
386 * a window's geometry constraints. Normally you would set these on
387 * the GTK+ level using gtk_window_set_geometry_hints(). #GtkWindow
388 * then sets the hints on the #GdkWindow it creates.
390 * gdk_window_set_geometry_hints() expects the hints to be fully valid already
391 * and simply passes them to the window manager; in contrast,
392 * gtk_window_set_geometry_hints() performs some interpretation. For example,
393 * #GtkWindow will apply the hints to the geometry widget instead of the
394 * toplevel window, if you set a geometry widget. Also, the
395 * @min_width/@min_height/@max_width/@max_height fields may be set to -1, and
396 * #GtkWindow will substitute the size request of the window or geometry widget.
397 * If the minimum size hint is not provided, #GtkWindow will use its requisition
398 * as the minimum size. If the minimum size is provided and a geometry widget is
399 * set, #GtkWindow will take the minimum size as the minimum size of the
400 * geometry widget rather than the entire window. The base size is treated
403 * The canonical use-case for gtk_window_set_geometry_hints() is to get a
404 * terminal widget to resize properly. Here, the terminal text area should be
405 * the geometry widget; #GtkWindow will then automatically set the base size to
406 * the size of other widgets in the terminal window, such as the menubar and
407 * scrollbar. Then, the @width_inc and @height_inc fields should be set to the
408 * size of one character in the terminal. Finally, the base size should be set
409 * to the size of one character. The net effect is that the minimum size of the
410 * terminal will have a 1x1 character terminal area, and only terminal sizes on
411 * the "character grid" will be allowed.
413 * Here's an example of how the terminal example would be implemented, assuming
414 * a terminal area widget called "terminal" and a toplevel window "toplevel":
416 * <informalexample><programlisting><![CDATA[
419 * hints.base_width = terminal->char_width;
420 * hints.base_height = terminal->char_height;
421 * hints.min_width = terminal->char_width;
422 * hints.min_height = terminal->char_height;
423 * hints.width_inc = terminal->char_width;
424 * hints.height_inc = terminal->char_height;
426 * gtk_window_set_geometry_hints (GTK_WINDOW (toplevel),
427 * GTK_WIDGET (terminal),
429 * GDK_HINT_RESIZE_INC |
430 * GDK_HINT_MIN_SIZE |
431 * GDK_HINT_BASE_SIZE);
432 * ]]></programlisting></informalexample>
434 * The other useful fields are the @min_aspect and @max_aspect fields; these
435 * contain a width/height ratio as a floating point number. If a geometry widget
436 * is set, the aspect applies to the geometry widget rather than the entire
437 * window. The most common use of these hints is probably to set @min_aspect and
438 * @max_aspect to the same value, thus forcing the window to keep a constant
453 GdkGravity win_gravity;
458 * @get_pointer: Obtains the current pointer position and modifier state.
459 * The position is given in coordinates relative to the window containing
460 * the pointer, which is returned in @window.
461 * @window_at_pointer: Obtains the window underneath the mouse pointer,
462 * returning the location of that window in @win_x, @win_y. Returns %NULL
463 * if the window under the mouse pointer is not known to GDK (for example,
464 * belongs to another application).
466 * A table of pointers to functions for getting quantities related to
467 * the current pointer position. GDK has one global table of this type,
468 * which can be set using gdk_set_pointer_hooks().
470 * This is only useful for such low-level tools as an event recorder.
471 * Applications should never have any reason to use this facility
473 struct _GdkPointerHooks
475 GdkWindow* (*get_pointer) (GdkWindow *window,
478 GdkModifierType *mask);
479 GdkWindow* (*window_at_pointer) (GdkScreen *screen, /* unused */
484 typedef struct _GdkWindowObject GdkWindowObject;
485 typedef struct _GdkWindowObjectClass GdkWindowObjectClass;
487 #define GDK_TYPE_WINDOW (gdk_window_object_get_type ())
488 #define GDK_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WINDOW, GdkWindow))
489 #define GDK_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WINDOW, GdkWindowObjectClass))
490 #define GDK_IS_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WINDOW))
491 #define GDK_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WINDOW))
492 #define GDK_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WINDOW, GdkWindowObjectClass))
494 #ifndef GDK_DISABLE_DEPRECATED
495 #define GDK_WINDOW_OBJECT(object) ((GdkWindowObject *) GDK_WINDOW (object))
497 #ifndef GDK_COMPILATION
499 /* We used to export all of GdkWindowObject, but we don't want to keep doing so.
500 However, there are various parts of it accessed by macros and other code,
501 so we keep the old exported version public, but in reality it is larger. */
503 /**** DON'T CHANGE THIS STRUCT, the real version is in gdkinternals.h ****/
504 struct _GdkWindowObject
506 GdkDrawable parent_instance;
508 GdkDrawable *impl; /* window-system-specific delegate object */
510 GdkWindowObject *parent;
517 gint extension_events;
523 GdkPixmap *bg_pixmap;
527 GdkRegion *update_area;
528 guint update_freeze_count;
534 GdkWindowState state;
536 guint guffaw_gravity : 1;
537 guint input_only : 1;
538 guint modal_hint : 1;
539 guint composited : 1;
543 guint accept_focus : 1;
544 guint focus_on_map : 1;
547 GdkEventMask event_mask;
549 guint update_and_descendants_freeze_count;
551 GdkWindowRedirect *redirect;
556 struct _GdkWindowObjectClass
558 GdkDrawableClass parent_class;
563 GType gdk_window_object_get_type (void) G_GNUC_CONST;
564 GdkWindow* gdk_window_new (GdkWindow *parent,
565 GdkWindowAttr *attributes,
566 gint attributes_mask);
567 void gdk_window_destroy (GdkWindow *window);
568 GdkWindowType gdk_window_get_window_type (GdkWindow *window);
569 gboolean gdk_window_is_destroyed (GdkWindow *window);
570 GdkWindow* gdk_window_at_pointer (gint *win_x,
572 void gdk_window_show (GdkWindow *window);
573 void gdk_window_hide (GdkWindow *window);
574 void gdk_window_withdraw (GdkWindow *window);
575 void gdk_window_show_unraised (GdkWindow *window);
576 void gdk_window_move (GdkWindow *window,
579 void gdk_window_resize (GdkWindow *window,
582 void gdk_window_move_resize (GdkWindow *window,
587 void gdk_window_reparent (GdkWindow *window,
588 GdkWindow *new_parent,
591 void gdk_window_clear (GdkWindow *window);
592 void gdk_window_clear_area (GdkWindow *window,
597 void gdk_window_clear_area_e (GdkWindow *window,
602 void gdk_window_raise (GdkWindow *window);
603 void gdk_window_lower (GdkWindow *window);
604 void gdk_window_restack (GdkWindow *window,
607 void gdk_window_focus (GdkWindow *window,
609 void gdk_window_set_user_data (GdkWindow *window,
611 void gdk_window_set_override_redirect (GdkWindow *window,
612 gboolean override_redirect);
613 void gdk_window_set_accept_focus (GdkWindow *window,
614 gboolean accept_focus);
615 void gdk_window_set_focus_on_map (GdkWindow *window,
616 gboolean focus_on_map);
617 void gdk_window_add_filter (GdkWindow *window,
618 GdkFilterFunc function,
620 void gdk_window_remove_filter (GdkWindow *window,
621 GdkFilterFunc function,
623 void gdk_window_scroll (GdkWindow *window,
626 void gdk_window_move_region (GdkWindow *window,
627 const GdkRegion *region,
630 gboolean gdk_window_ensure_native (GdkWindow *window);
633 * This allows for making shaped (partially transparent) windows
634 * - cool feature, needed for Drag and Drag for example.
635 * The shape_mask can be the mask
636 * from gdk_pixmap_create_from_xpm. Stefan Wille
638 void gdk_window_shape_combine_mask (GdkWindow *window,
642 void gdk_window_shape_combine_region (GdkWindow *window,
643 const GdkRegion *shape_region,
648 * This routine allows you to quickly take the shapes of all the child windows
649 * of a window and use their shapes as the shape mask for this window - useful
650 * for container windows that dont want to look like a big box
654 void gdk_window_set_child_shapes (GdkWindow *window);
656 void gdk_window_set_composited (GdkWindow *window,
657 gboolean composited);
660 * This routine allows you to merge (ie ADD) child shapes to your
661 * own window's shape keeping its current shape and ADDING the child
666 void gdk_window_merge_child_shapes (GdkWindow *window);
668 void gdk_window_input_shape_combine_mask (GdkWindow *window,
672 void gdk_window_input_shape_combine_region (GdkWindow *window,
673 const GdkRegion *shape_region,
676 void gdk_window_set_child_input_shapes (GdkWindow *window);
677 void gdk_window_merge_child_input_shapes (GdkWindow *window);
681 * Check if a window has been shown, and whether all its
682 * parents up to a toplevel have been shown, respectively.
683 * Note that a window that is_viewable below is not necessarily
684 * viewable in the X sense.
686 gboolean gdk_window_is_visible (GdkWindow *window);
687 gboolean gdk_window_is_viewable (GdkWindow *window);
689 GdkWindowState gdk_window_get_state (GdkWindow *window);
691 /* Set static bit gravity on the parent, and static
692 * window gravity on all children.
694 gboolean gdk_window_set_static_gravities (GdkWindow *window,
695 gboolean use_static);
697 /* Functions to create/lookup windows from their native equivalents */
698 #ifndef GDK_MULTIHEAD_SAFE
699 GdkWindow* gdk_window_foreign_new (GdkNativeWindow anid);
700 GdkWindow* gdk_window_lookup (GdkNativeWindow anid);
702 GdkWindow *gdk_window_foreign_new_for_display (GdkDisplay *display,
703 GdkNativeWindow anid);
704 GdkWindow* gdk_window_lookup_for_display (GdkDisplay *display,
705 GdkNativeWindow anid);
710 void gdk_window_set_type_hint (GdkWindow *window,
711 GdkWindowTypeHint hint);
712 GdkWindowTypeHint gdk_window_get_type_hint (GdkWindow *window);
714 void gdk_window_set_modal_hint (GdkWindow *window,
717 void gdk_window_set_skip_taskbar_hint (GdkWindow *window,
718 gboolean skips_taskbar);
719 void gdk_window_set_skip_pager_hint (GdkWindow *window,
720 gboolean skips_pager);
721 void gdk_window_set_urgency_hint (GdkWindow *window,
724 void gdk_window_set_geometry_hints (GdkWindow *window,
725 const GdkGeometry *geometry,
726 GdkWindowHints geom_mask);
727 void gdk_set_sm_client_id (const gchar *sm_client_id);
729 void gdk_window_begin_paint_rect (GdkWindow *window,
730 const GdkRectangle *rectangle);
731 void gdk_window_begin_paint_region (GdkWindow *window,
732 const GdkRegion *region);
733 void gdk_window_end_paint (GdkWindow *window);
734 void gdk_window_flush (GdkWindow *window);
736 void gdk_window_set_title (GdkWindow *window,
738 void gdk_window_set_role (GdkWindow *window,
740 void gdk_window_set_startup_id (GdkWindow *window,
741 const gchar *startup_id);
742 void gdk_window_set_transient_for (GdkWindow *window,
744 void gdk_window_set_background (GdkWindow *window,
745 const GdkColor *color);
746 void gdk_window_set_back_pixmap (GdkWindow *window,
748 gboolean parent_relative);
749 void gdk_window_set_cursor (GdkWindow *window,
751 GdkCursor *gdk_window_get_cursor (GdkWindow *window);
752 void gdk_window_get_user_data (GdkWindow *window,
754 void gdk_window_get_geometry (GdkWindow *window,
760 void gdk_window_get_position (GdkWindow *window,
763 gint gdk_window_get_origin (GdkWindow *window,
766 void gdk_window_get_root_coords (GdkWindow *window,
771 void gdk_window_coords_to_parent (GdkWindow *window,
776 void gdk_window_coords_from_parent (GdkWindow *window,
782 #if !defined (GDK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) || defined (GDK_COMPILATION)
783 /* Used by gtk_handle_box_button_changed () */
784 gboolean gdk_window_get_deskrelative_origin (GdkWindow *window,
789 void gdk_window_get_root_origin (GdkWindow *window,
792 void gdk_window_get_frame_extents (GdkWindow *window,
794 GdkWindow* gdk_window_get_pointer (GdkWindow *window,
797 GdkModifierType *mask);
798 GdkWindow * gdk_window_get_parent (GdkWindow *window);
799 GdkWindow * gdk_window_get_toplevel (GdkWindow *window);
801 GdkWindow * gdk_window_get_effective_parent (GdkWindow *window);
802 GdkWindow * gdk_window_get_effective_toplevel (GdkWindow *window);
804 GList * gdk_window_get_children (GdkWindow *window);
805 GList * gdk_window_peek_children (GdkWindow *window);
806 GdkEventMask gdk_window_get_events (GdkWindow *window);
807 void gdk_window_set_events (GdkWindow *window,
808 GdkEventMask event_mask);
810 void gdk_window_set_icon_list (GdkWindow *window,
812 void gdk_window_set_icon (GdkWindow *window,
813 GdkWindow *icon_window,
816 void gdk_window_set_icon_name (GdkWindow *window,
818 void gdk_window_set_group (GdkWindow *window,
820 GdkWindow* gdk_window_get_group (GdkWindow *window);
821 void gdk_window_set_decorations (GdkWindow *window,
822 GdkWMDecoration decorations);
823 gboolean gdk_window_get_decorations (GdkWindow *window,
824 GdkWMDecoration *decorations);
825 void gdk_window_set_functions (GdkWindow *window,
826 GdkWMFunction functions);
827 #if !defined(GDK_MULTIHEAD_SAFE) && !defined(GDK_DISABLE_DEPRECATED)
828 GList * gdk_window_get_toplevels (void);
831 void gdk_window_beep (GdkWindow *window);
832 void gdk_window_iconify (GdkWindow *window);
833 void gdk_window_deiconify (GdkWindow *window);
834 void gdk_window_stick (GdkWindow *window);
835 void gdk_window_unstick (GdkWindow *window);
836 void gdk_window_maximize (GdkWindow *window);
837 void gdk_window_unmaximize (GdkWindow *window);
838 void gdk_window_fullscreen (GdkWindow *window);
839 void gdk_window_unfullscreen (GdkWindow *window);
840 void gdk_window_set_keep_above (GdkWindow *window,
842 void gdk_window_set_keep_below (GdkWindow *window,
844 void gdk_window_set_opacity (GdkWindow *window,
846 void gdk_window_register_dnd (GdkWindow *window);
848 void gdk_window_begin_resize_drag (GdkWindow *window,
854 void gdk_window_begin_move_drag (GdkWindow *window,
860 /* Interface for dirty-region queueing */
861 void gdk_window_invalidate_rect (GdkWindow *window,
862 const GdkRectangle *rect,
863 gboolean invalidate_children);
864 void gdk_window_invalidate_region (GdkWindow *window,
865 const GdkRegion *region,
866 gboolean invalidate_children);
867 void gdk_window_invalidate_maybe_recurse (GdkWindow *window,
868 const GdkRegion *region,
869 gboolean (*child_func) (GdkWindow *, gpointer),
871 GdkRegion *gdk_window_get_update_area (GdkWindow *window);
873 void gdk_window_freeze_updates (GdkWindow *window);
874 void gdk_window_thaw_updates (GdkWindow *window);
876 void gdk_window_freeze_toplevel_updates_libgtk_only (GdkWindow *window);
877 void gdk_window_thaw_toplevel_updates_libgtk_only (GdkWindow *window);
879 void gdk_window_process_all_updates (void);
880 void gdk_window_process_updates (GdkWindow *window,
881 gboolean update_children);
883 /* Enable/disable flicker, so you can tell if your code is inefficient. */
884 void gdk_window_set_debug_updates (gboolean setting);
886 void gdk_window_constrain_size (GdkGeometry *geometry,
893 void gdk_window_get_internal_paint_info (GdkWindow *window,
894 GdkDrawable **real_drawable,
898 void gdk_window_enable_synchronized_configure (GdkWindow *window);
899 void gdk_window_configure_finished (GdkWindow *window);
901 #ifndef GDK_MULTIHEAD_SAFE
902 GdkPointerHooks *gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks);
903 #endif /* GDK_MULTIHEAD_SAFE */
905 GdkWindow *gdk_get_default_root_window (void);
907 /* Offscreen redirection */
908 GdkPixmap *gdk_offscreen_window_get_pixmap (GdkWindow *window);
909 void gdk_offscreen_window_set_embedder (GdkWindow *window,
910 GdkWindow *embedder);
911 GdkWindow *gdk_offscreen_window_get_embedder (GdkWindow *window);
912 void gdk_window_geometry_changed (GdkWindow *window);
914 void gdk_window_redirect_to_drawable (GdkWindow *window,
915 GdkDrawable *drawable,
922 void gdk_window_remove_redirection (GdkWindow *window);
927 #endif /* __GDK_WINDOW_H__ */