1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 /*
25  * Conversion parameters:
26  * inFile  = gdk-Windows.html
27  * outPack = gdk
28  * outFile = Window
29  * strct   = GdkWindow
30  * realStrct=
31  * ctorStrct=
32  * clss    = Window
33  * interf  = 
34  * class Code: No
35  * interface Code: No
36  * template for:
37  * extend  = 
38  * implements:
39  * prefixes:
40  * 	- gdk_window_
41  * 	- gdk_
42  * omit structs:
43  * omit prefixes:
44  * 	- gdk_window_invalidate_maybe_recurse
45  * omit code:
46  * omit signals:
47  * imports:
48  * 	- glib.Str
49  * 	- gdk.Region
50  * 	- gdk.Rectangle
51  * 	- gdk.Drawable
52  * 	- gdk.Bitmap
53  * 	- gdk.Color
54  * 	- gdk.Pixmap
55  * 	- gdk.Cursor
56  * 	- gdk.Display
57  * 	- gdk.Screen
58  * 	- gdk.Visual
59  * 	- glib.ListG
60  * 	- cairo.Pattern
61  * structWrap:
62  * 	- GList* -> ListG
63  * 	- GdkBitmap* -> Bitmap
64  * 	- GdkColor* -> Color
65  * 	- GdkCursor* -> Cursor
66  * 	- GdkDisplay* -> Display
67  * 	- GdkDrawable* -> Drawable
68  * 	- GdkPixmap* -> Pixmap
69  * 	- GdkRectangle* -> Rectangle
70  * 	- GdkRegion* -> Region
71  * 	- GdkScreen* -> Screen
72  * 	- GdkVisual* -> Visual
73  * 	- GdkWindow* -> Window
74  * 	- cairo_pattern_t* -> Pattern
75  * module aliases:
76  * local aliases:
77  * overrides:
78  * 	- getDisplay
79  * 	- getScreen
80  * 	- getVisual
81  */
82 
83 module gdk.Window;
84 
85 public  import gtkc.gdktypes;
86 
87 private import gtkc.gdk;
88 private import glib.ConstructionException;
89 private import gobject.ObjectG;
90 
91 private import gobject.Signals;
92 public  import gtkc.gdktypes;
93 
94 private import glib.Str;
95 private import gdk.Region;
96 private import gdk.Rectangle;
97 private import gdk.Drawable;
98 private import gdk.Bitmap;
99 private import gdk.Color;
100 private import gdk.Pixmap;
101 private import gdk.Cursor;
102 private import gdk.Display;
103 private import gdk.Screen;
104 private import gdk.Visual;
105 private import glib.ListG;
106 private import cairo.Pattern;
107 
108 
109 
110 private import gdk.Drawable;
111 
112 /**
113  * Description
114  * A GdkWindow is a rectangular region on the screen. It's a low-level object,
115  * used to implement high-level objects such as GtkWidget and GtkWindow on the
116  * GTK+ level. A GtkWindow is a toplevel window, the thing a user might think of
117  * as a "window" with a titlebar and so on; a GtkWindow may contain many GdkWindow.
118  * For example, each GtkButton has a GdkWindow associated with it.
119  * Composited Windows
120  * Normally, the windowing system takes care of rendering the contents of a child
121  * window onto its parent window. This mechanism can be intercepted by calling
122  * gdk_window_set_composited() on the child window. For a
123  * composited window it is the responsibility of the
124  * application to render the window contents at the right spot.
125  * $(DDOC_COMMENT example)
126  * In the example Example 7, “Composited windows”, a button is
127  * placed inside of an event box inside of a window. The event box is
128  * set as composited and therefore is no longer automatically drawn to
129  * the screen.
130  * When the contents of the event box change, an expose event is
131  * generated on its parent window (which, in this case, belongs to
132  * the toplevel GtkWindow). The expose handler for this widget is
133  * responsible for merging the changes back on the screen in the way
134  * that it wishes.
135  * In our case, we merge the contents with a 50% transparency. We
136  * also set the background colour of the window to red. The effect is
137  * that the background shows through the button.
138  * <hr>
139  * Offscreen Windows
140  * Offscreen windows are more general than composited windows, since they
141  * allow not only to modify the rendering of the child window onto its parent,
142  * but also to apply coordinate transformations.
143  * To integrate an offscreen window into a window hierarchy, one has to call
144  * gdk_offscreen_window_set_embedder() and handle a number of signals. The
145  * "pick-embedded-child" signal on the embedder window is used to
146  * select an offscreen child at given coordinates, and the "to-embedder"
147  * and "from-embedder" signals on the offscreen window are used to
148  * translate coordinates between the embedder and the offscreen window.
149  * For rendering an offscreen window onto its embedder, the contents of the
150  * offscreen window are available as a pixmap, via
151  * gdk_offscreen_window_get_pixmap().
152  */
153 public class Window : Drawable
154 {
155 	
156 	/** the main Gtk struct */
157 	protected GdkWindow* gdkWindow;
158 	
159 	
160 	public GdkWindow* getWindowStruct()
161 	{
162 		return gdkWindow;
163 	}
164 	
165 	
166 	/** the main Gtk struct as a void* */
167 	protected override void* getStruct()
168 	{
169 		return cast(void*)gdkWindow;
170 	}
171 	
172 	/**
173 	 * Sets our main struct and passes it to the parent class
174 	 */
175 	public this (GdkWindow* gdkWindow)
176 	{
177 		super(cast(GdkDrawable*)gdkWindow);
178 		this.gdkWindow = gdkWindow;
179 	}
180 	
181 	protected override void setStruct(GObject* obj)
182 	{
183 		super.setStruct(obj);
184 		gdkWindow = cast(GdkWindow*)obj;
185 	}
186 	
187 	/**
188 	 */
189 	int[string] connectedSignals;
190 	
191 	void delegate(gdouble, gdouble, void*, void*, Window)[] onFromEmbedderListeners;
192 	/**
193 	 * The ::from-embedder signal is emitted to translate coordinates
194 	 * in the embedder of an offscreen window to the offscreen window.
195 	 * See also "to-embedder".
196 	 * Since 2.18
197 	 */
198 	void addOnFromEmbedder(void delegate(gdouble, gdouble, void*, void*, Window) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
199 	{
200 		if ( !("from-embedder" in connectedSignals) )
201 		{
202 			Signals.connectData(
203 			getStruct(),
204 			"from-embedder",
205 			cast(GCallback)&callBackFromEmbedder,
206 			cast(void*)this,
207 			null,
208 			connectFlags);
209 			connectedSignals["from-embedder"] = 1;
210 		}
211 		onFromEmbedderListeners ~= dlg;
212 	}
213 	extern(C) static void callBackFromEmbedder(GdkWindow* windowStruct, gdouble embedder_x, gdouble embedder_y, void* offscreen_x, void* offscreen_y, Window _window)
214 	{
215 		foreach ( void delegate(gdouble, gdouble, void*, void*, Window) dlg ; _window.onFromEmbedderListeners )
216 		{
217 			dlg(embedder_x, embedder_y, offscreen_x, offscreen_y, _window);
218 		}
219 	}
220 	
221 	Window delegate(gdouble, gdouble, Window)[] onPickEmbeddedChildListeners;
222 	/**
223 	 * The ::pick-embedded-child signal is emitted to find an embedded
224 	 * child at the given position.
225 	 * Since 2.18
226 	 */
227 	void addOnPickEmbeddedChild(Window delegate(gdouble, gdouble, Window) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
228 	{
229 		if ( !("pick-embedded-child" in connectedSignals) )
230 		{
231 			Signals.connectData(
232 			getStruct(),
233 			"pick-embedded-child",
234 			cast(GCallback)&callBackPickEmbeddedChild,
235 			cast(void*)this,
236 			null,
237 			connectFlags);
238 			connectedSignals["pick-embedded-child"] = 1;
239 		}
240 		onPickEmbeddedChildListeners ~= dlg;
241 	}
242 	extern(C) static void callBackPickEmbeddedChild(GdkWindow* windowStruct, gdouble x, gdouble y, Window _window)
243 	{
244 		foreach ( Window delegate(gdouble, gdouble, Window) dlg ; _window.onPickEmbeddedChildListeners )
245 		{
246 			dlg(x, y, _window);
247 		}
248 	}
249 	
250 	void delegate(gdouble, gdouble, void*, void*, Window)[] onToEmbedderListeners;
251 	/**
252 	 * The ::to-embedder signal is emitted to translate coordinates
253 	 * in an offscreen window to its embedder.
254 	 * See also "from-embedder".
255 	 * Since 2.18
256 	 */
257 	void addOnToEmbedder(void delegate(gdouble, gdouble, void*, void*, Window) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
258 	{
259 		if ( !("to-embedder" in connectedSignals) )
260 		{
261 			Signals.connectData(
262 			getStruct(),
263 			"to-embedder",
264 			cast(GCallback)&callBackToEmbedder,
265 			cast(void*)this,
266 			null,
267 			connectFlags);
268 			connectedSignals["to-embedder"] = 1;
269 		}
270 		onToEmbedderListeners ~= dlg;
271 	}
272 	extern(C) static void callBackToEmbedder(GdkWindow* windowStruct, gdouble offscreen_x, gdouble offscreen_y, void* embedder_x, void* embedder_y, Window _window)
273 	{
274 		foreach ( void delegate(gdouble, gdouble, void*, void*, Window) dlg ; _window.onToEmbedderListeners )
275 		{
276 			dlg(offscreen_x, offscreen_y, embedder_x, embedder_y, _window);
277 		}
278 	}
279 	
280 	
281 	/**
282 	 * Creates a new GdkWindow using the attributes from
283 	 * attributes. See GdkWindowAttr and GdkWindowAttributesType for
284 	 * more details. Note: to use this on displays other than the default
285 	 * display, parent must be specified.
286 	 * Params:
287 	 * parent = a GdkWindow, or NULL to create the window as a child of
288 	 * the default root window for the default display. [allow-none]
289 	 * attributes = attributes of the new window
290 	 * attributesMask = mask indicating which fields in attributes are valid
291 	 * Throws: ConstructionException GTK+ fails to create the object.
292 	 */
293 	public this (Window parent, GdkWindowAttr* attributes, int attributesMask)
294 	{
295 		// GdkWindow * gdk_window_new (GdkWindow *parent,  GdkWindowAttr *attributes,  gint attributes_mask);
296 		auto p = gdk_window_new((parent is null) ? null : parent.getWindowStruct(), attributes, attributesMask);
297 		if(p is null)
298 		{
299 			throw new ConstructionException("null returned by gdk_window_new((parent is null) ? null : parent.getWindowStruct(), attributes, attributesMask)");
300 		}
301 		this(cast(GdkWindow*) p);
302 	}
303 	
304 	/**
305 	 * Destroys the window system resources associated with window and decrements window's
306 	 * reference count. The window system resources for all children of window are also
307 	 * destroyed, but the children's reference counts are not decremented.
308 	 * Note that a window will not be destroyed automatically when its reference count
309 	 * reaches zero. You must call this function yourself before that happens.
310 	 */
311 	public void destroy()
312 	{
313 		// void gdk_window_destroy (GdkWindow *window);
314 		gdk_window_destroy(gdkWindow);
315 	}
316 	
317 	/**
318 	 * Gets the GdkDisplay associated with a GdkWindow.
319 	 * Since 2.24
320 	 * Returns: the GdkDisplay associated with window
321 	 */
322 	public override Display getDisplay()
323 	{
324 		// GdkDisplay * gdk_window_get_display (GdkWindow *window);
325 		auto p = gdk_window_get_display(gdkWindow);
326 		
327 		if(p is null)
328 		{
329 			return null;
330 		}
331 		
332 		return ObjectG.getDObject!(Display)(cast(GdkDisplay*) p);
333 	}
334 	
335 	/**
336 	 * Gets the GdkScreen associated with a GdkWindow.
337 	 * Returns: the GdkScreen associated with window
338 	 */
339 	public override Screen getScreen()
340 	{
341 		// GdkScreen * gdk_window_get_screen (GdkWindow *window);
342 		auto p = gdk_window_get_screen(gdkWindow);
343 		
344 		if(p is null)
345 		{
346 			return null;
347 		}
348 		
349 		return ObjectG.getDObject!(Screen)(cast(GdkScreen*) p);
350 	}
351 	
352 	/**
353 	 * Gets the GdkVisual describing the pixel format of window.
354 	 * Since 2.24
355 	 * Returns: a GdkVisual
356 	 */
357 	public override Visual getVisual()
358 	{
359 		// GdkVisual * gdk_window_get_visual (GdkWindow *window);
360 		auto p = gdk_window_get_visual(gdkWindow);
361 		
362 		if(p is null)
363 		{
364 			return null;
365 		}
366 		
367 		return ObjectG.getDObject!(Visual)(cast(GdkVisual*) p);
368 	}
369 	
370 	/**
371 	 * Returns the width of the given window.
372 	 * On the X11 platform the returned size is the size reported in the
373 	 * most-recently-processed configure event, rather than the current
374 	 * size on the X server.
375 	 * Since 2.24
376 	 * Returns: The width of window
377 	 */
378 	public int getWidth()
379 	{
380 		// int gdk_window_get_width (GdkWindow *window);
381 		return gdk_window_get_width(gdkWindow);
382 	}
383 	
384 	/**
385 	 * Returns the height of the given window.
386 	 * On the X11 platform the returned size is the size reported in the
387 	 * most-recently-processed configure event, rather than the current
388 	 * size on the X server.
389 	 * Since 2.24
390 	 * Returns: The height of window
391 	 */
392 	public int getHeight()
393 	{
394 		// int gdk_window_get_height (GdkWindow *window);
395 		return gdk_window_get_height(gdkWindow);
396 	}
397 	
398 	/**
399 	 * Gets the type of the window. See GdkWindowType.
400 	 * Returns: type of window
401 	 */
402 	public GdkWindowType getWindowType()
403 	{
404 		// GdkWindowType gdk_window_get_window_type (GdkWindow *window);
405 		return gdk_window_get_window_type(gdkWindow);
406 	}
407 	
408 	/**
409 	 * Obtains the window underneath the mouse pointer, returning the
410 	 * location of that window in win_x, win_y. Returns NULL if the
411 	 * window under the mouse pointer is not known to GDK (if the window
412 	 * belongs to another application and a GdkWindow hasn't been created
413 	 * for it with gdk_window_foreign_new())
414 	 * NOTE: For multihead-aware widgets or applications use
415 	 * gdk_display_get_window_at_pointer() instead.
416 	 * Params:
417 	 * winX = return location for origin of the window under the pointer. [out][allow-none]
418 	 * winY = return location for origin of the window under the pointer. [out][allow-none]
419 	 * Returns: window under the mouse pointer. [transfer none]
420 	 */
421 	public static Window atPointer(out int winX, out int winY)
422 	{
423 		// GdkWindow * gdk_window_at_pointer (gint *win_x,  gint *win_y);
424 		auto p = gdk_window_at_pointer(&winX, &winY);
425 		
426 		if(p is null)
427 		{
428 			return null;
429 		}
430 		
431 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
432 	}
433 	
434 	/**
435 	 * Like gdk_window_show_unraised(), but also raises the window to the
436 	 * top of the window stack (moves the window to the front of the
437 	 * Z-order).
438 	 * This function maps a window so it's visible onscreen. Its opposite
439 	 * is gdk_window_hide().
440 	 * When implementing a GtkWidget, you should call this function on the widget's
441 	 * GdkWindow as part of the "map" method.
442 	 */
443 	public void show()
444 	{
445 		// void gdk_window_show (GdkWindow *window);
446 		gdk_window_show(gdkWindow);
447 	}
448 	
449 	/**
450 	 * Shows a GdkWindow onscreen, but does not modify its stacking
451 	 * order. In contrast, gdk_window_show() will raise the window
452 	 * to the top of the window stack.
453 	 * On the X11 platform, in Xlib terms, this function calls
454 	 * XMapWindow() (it also updates some internal GDK state, which means
455 	 * that you can't really use XMapWindow() directly on a GDK window).
456 	 */
457 	public void showUnraised()
458 	{
459 		// void gdk_window_show_unraised (GdkWindow *window);
460 		gdk_window_show_unraised(gdkWindow);
461 	}
462 	
463 	/**
464 	 * For toplevel windows, withdraws them, so they will no longer be
465 	 * known to the window manager; for all windows, unmaps them, so
466 	 * they won't be displayed. Normally done automatically as
467 	 * part of gtk_widget_hide().
468 	 */
469 	public void hide()
470 	{
471 		// void gdk_window_hide (GdkWindow *window);
472 		gdk_window_hide(gdkWindow);
473 	}
474 	
475 	/**
476 	 * Check to see if a window is destroyed..
477 	 * Since 2.18
478 	 * Returns: TRUE if the window is destroyed
479 	 */
480 	public int isDestroyed()
481 	{
482 		// gboolean gdk_window_is_destroyed (GdkWindow *window);
483 		return gdk_window_is_destroyed(gdkWindow);
484 	}
485 	
486 	/**
487 	 * Checks whether the window has been mapped (with gdk_window_show() or
488 	 * gdk_window_show_unraised()).
489 	 * Returns: TRUE if the window is mapped
490 	 */
491 	public int isVisible()
492 	{
493 		// gboolean gdk_window_is_visible (GdkWindow *window);
494 		return gdk_window_is_visible(gdkWindow);
495 	}
496 	
497 	/**
498 	 * Check if the window and all ancestors of the window are
499 	 * mapped. (This is not necessarily "viewable" in the X sense, since
500 	 * we only check as far as we have GDK window parents, not to the root
501 	 * window.)
502 	 * Returns: TRUE if the window is viewable
503 	 */
504 	public int isViewable()
505 	{
506 		// gboolean gdk_window_is_viewable (GdkWindow *window);
507 		return gdk_window_is_viewable(gdkWindow);
508 	}
509 	
510 	/**
511 	 * Determines whether or not the window is shaped.
512 	 * Since 2.22
513 	 * Returns: TRUE if window is shaped
514 	 */
515 	public int isShaped()
516 	{
517 		// gboolean gdk_window_is_shaped (GdkWindow *window);
518 		return gdk_window_is_shaped(gdkWindow);
519 	}
520 	
521 	/**
522 	 * Determines whether or not the window is an input only window.
523 	 * Since 2.22
524 	 * Returns: TRUE if window is input only
525 	 */
526 	public int isInputOnly()
527 	{
528 		// gboolean gdk_window_is_input_only (GdkWindow *window);
529 		return gdk_window_is_input_only(gdkWindow);
530 	}
531 	
532 	/**
533 	 * Gets the bitwise OR of the currently active window state flags,
534 	 * from the GdkWindowState enumeration.
535 	 * Returns: window state bitfield
536 	 */
537 	public GdkWindowState getState()
538 	{
539 		// GdkWindowState gdk_window_get_state (GdkWindow *window);
540 		return gdk_window_get_state(gdkWindow);
541 	}
542 	
543 	/**
544 	 * Withdraws a window (unmaps it and asks the window manager to forget about it).
545 	 * This function is not really useful as gdk_window_hide() automatically
546 	 * withdraws toplevel windows before hiding them.
547 	 */
548 	public void withdraw()
549 	{
550 		// void gdk_window_withdraw (GdkWindow *window);
551 		gdk_window_withdraw(gdkWindow);
552 	}
553 	
554 	/**
555 	 * Asks to iconify (minimize) window. The window manager may choose
556 	 * to ignore the request, but normally will honor it. Using
557 	 * gtk_window_iconify() is preferred, if you have a GtkWindow widget.
558 	 * This function only makes sense when window is a toplevel window.
559 	 */
560 	public void iconify()
561 	{
562 		// void gdk_window_iconify (GdkWindow *window);
563 		gdk_window_iconify(gdkWindow);
564 	}
565 	
566 	/**
567 	 * Attempt to deiconify (unminimize) window. On X11 the window manager may
568 	 * choose to ignore the request to deiconify. When using GTK+,
569 	 * use gtk_window_deiconify() instead of the GdkWindow variant. Or better yet,
570 	 * you probably want to use gtk_window_present(), which raises the window, focuses it,
571 	 * unminimizes it, and puts it on the current desktop.
572 	 */
573 	public void deiconify()
574 	{
575 		// void gdk_window_deiconify (GdkWindow *window);
576 		gdk_window_deiconify(gdkWindow);
577 	}
578 	
579 	/**
580 	 * "Pins" a window such that it's on all workspaces and does not scroll
581 	 * with viewports, for window managers that have scrollable viewports.
582 	 * (When using GtkWindow, gtk_window_stick() may be more useful.)
583 	 * On the X11 platform, this function depends on window manager
584 	 * support, so may have no effect with many window managers. However,
585 	 * GDK will do the best it can to convince the window manager to stick
586 	 * the window. For window managers that don't support this operation,
587 	 * there's nothing you can do to force it to happen.
588 	 */
589 	public void stick()
590 	{
591 		// void gdk_window_stick (GdkWindow *window);
592 		gdk_window_stick(gdkWindow);
593 	}
594 	
595 	/**
596 	 * Reverse operation for gdk_window_stick(); see gdk_window_stick(),
597 	 * and gtk_window_unstick().
598 	 */
599 	public void unstick()
600 	{
601 		// void gdk_window_unstick (GdkWindow *window);
602 		gdk_window_unstick(gdkWindow);
603 	}
604 	
605 	/**
606 	 * Maximizes the window. If the window was already maximized, then
607 	 * this function does nothing.
608 	 * On X11, asks the window manager to maximize window, if the window
609 	 * manager supports this operation. Not all window managers support
610 	 * this, and some deliberately ignore it or don't have a concept of
611 	 * "maximized"; so you can't rely on the maximization actually
612 	 * happening. But it will happen with most standard window managers,
613 	 * and GDK makes a best effort to get it to happen.
614 	 * On Windows, reliably maximizes the window.
615 	 */
616 	public void maximize()
617 	{
618 		// void gdk_window_maximize (GdkWindow *window);
619 		gdk_window_maximize(gdkWindow);
620 	}
621 	
622 	/**
623 	 * Unmaximizes the window. If the window wasn't maximized, then this
624 	 * function does nothing.
625 	 * On X11, asks the window manager to unmaximize window, if the
626 	 * window manager supports this operation. Not all window managers
627 	 * support this, and some deliberately ignore it or don't have a
628 	 * concept of "maximized"; so you can't rely on the unmaximization
629 	 * actually happening. But it will happen with most standard window
630 	 * managers, and GDK makes a best effort to get it to happen.
631 	 * On Windows, reliably unmaximizes the window.
632 	 */
633 	public void unmaximize()
634 	{
635 		// void gdk_window_unmaximize (GdkWindow *window);
636 		gdk_window_unmaximize(gdkWindow);
637 	}
638 	
639 	/**
640 	 * Moves the window into fullscreen mode. This means the
641 	 * window covers the entire screen and is above any panels
642 	 * or task bars.
643 	 * If the window was already fullscreen, then this function does nothing.
644 	 * On X11, asks the window manager to put window in a fullscreen
645 	 * state, if the window manager supports this operation. Not all
646 	 * window managers support this, and some deliberately ignore it or
647 	 * don't have a concept of "fullscreen"; so you can't rely on the
648 	 * fullscreenification actually happening. But it will happen with
649 	 * most standard window managers, and GDK makes a best effort to get
650 	 * it to happen.
651 	 * Since 2.2
652 	 */
653 	public void fullscreen()
654 	{
655 		// void gdk_window_fullscreen (GdkWindow *window);
656 		gdk_window_fullscreen(gdkWindow);
657 	}
658 	
659 	/**
660 	 * Moves the window out of fullscreen mode. If the window was not
661 	 * fullscreen, does nothing.
662 	 * On X11, asks the window manager to move window out of the fullscreen
663 	 * state, if the window manager supports this operation. Not all
664 	 * window managers support this, and some deliberately ignore it or
665 	 * don't have a concept of "fullscreen"; so you can't rely on the
666 	 * unfullscreenification actually happening. But it will happen with
667 	 * most standard window managers, and GDK makes a best effort to get
668 	 * it to happen.
669 	 * Since 2.2
670 	 */
671 	public void unfullscreen()
672 	{
673 		// void gdk_window_unfullscreen (GdkWindow *window);
674 		gdk_window_unfullscreen(gdkWindow);
675 	}
676 	
677 	/**
678 	 * Set if window must be kept above other windows. If the
679 	 * window was already above, then this function does nothing.
680 	 * On X11, asks the window manager to keep window above, if the window
681 	 * manager supports this operation. Not all window managers support
682 	 * this, and some deliberately ignore it or don't have a concept of
683 	 * "keep above"; so you can't rely on the window being kept above.
684 	 * But it will happen with most standard window managers,
685 	 * and GDK makes a best effort to get it to happen.
686 	 * Since 2.4
687 	 * Params:
688 	 * setting = whether to keep window above other windows
689 	 */
690 	public void setKeepAbove(int setting)
691 	{
692 		// void gdk_window_set_keep_above (GdkWindow *window,  gboolean setting);
693 		gdk_window_set_keep_above(gdkWindow, setting);
694 	}
695 	
696 	/**
697 	 * Set if window must be kept below other windows. If the
698 	 * window was already below, then this function does nothing.
699 	 * On X11, asks the window manager to keep window below, if the window
700 	 * manager supports this operation. Not all window managers support
701 	 * this, and some deliberately ignore it or don't have a concept of
702 	 * "keep below"; so you can't rely on the window being kept below.
703 	 * But it will happen with most standard window managers,
704 	 * and GDK makes a best effort to get it to happen.
705 	 * Since 2.4
706 	 * Params:
707 	 * setting = whether to keep window below other windows
708 	 */
709 	public void setKeepBelow(int setting)
710 	{
711 		// void gdk_window_set_keep_below (GdkWindow *window,  gboolean setting);
712 		gdk_window_set_keep_below(gdkWindow, setting);
713 	}
714 	
715 	/**
716 	 * Request the windowing system to make window partially transparent,
717 	 * with opacity 0 being fully transparent and 1 fully opaque. (Values
718 	 * of the opacity parameter are clamped to the [0,1] range.)
719 	 * On X11, this works only on X screens with a compositing manager
720 	 * running.
721 	 * For setting up per-pixel alpha, see gdk_screen_get_rgba_colormap().
722 	 * For making non-toplevel windows translucent, see
723 	 * gdk_window_set_composited().
724 	 * Since 2.12
725 	 * Params:
726 	 * opacity = opacity
727 	 */
728 	public void setOpacity(double opacity)
729 	{
730 		// void gdk_window_set_opacity (GdkWindow *window,  gdouble opacity);
731 		gdk_window_set_opacity(gdkWindow, opacity);
732 	}
733 	
734 	/**
735 	 * Sets a GdkWindow as composited, or unsets it. Composited
736 	 * windows do not automatically have their contents drawn to
737 	 * the screen. Drawing is redirected to an offscreen buffer
738 	 * and an expose event is emitted on the parent of the composited
739 	 * window. It is the responsibility of the parent's expose handler
740 	 * to manually merge the off-screen content onto the screen in
741 	 * whatever way it sees fit. See Example 7, “Composited windows”
742 	 * for an example.
743 	 * It only makes sense for child windows to be composited; see
744 	 * gdk_window_set_opacity() if you need translucent toplevel
745 	 * windows.
746 	 * An additional effect of this call is that the area of this
747 	 * window is no longer clipped from regions marked for
748 	 * invalidation on its parent. Draws done on the parent
749 	 * window are also no longer clipped by the child.
750 	 * This call is only supported on some systems (currently,
751 	 * only X11 with new enough Xcomposite and Xdamage extensions).
752 	 * You must call gdk_display_supports_composite() to check if
753 	 * setting a window as composited is supported before
754 	 * attempting to do so.
755 	 * Since 2.12
756 	 * Params:
757 	 * composited = TRUE to set the window as composited
758 	 */
759 	public void setComposited(int composited)
760 	{
761 		// void gdk_window_set_composited (GdkWindow *window,  gboolean composited);
762 		gdk_window_set_composited(gdkWindow, composited);
763 	}
764 	
765 	/**
766 	 * Determines whether window is composited.
767 	 * See gdk_window_set_composited().
768 	 * Since 2.22
769 	 * Returns: TRUE if the window is composited.
770 	 */
771 	public int getComposited()
772 	{
773 		// gboolean gdk_window_get_composited (GdkWindow *window);
774 		return gdk_window_get_composited(gdkWindow);
775 	}
776 	
777 	/**
778 	 * Repositions a window relative to its parent window.
779 	 * For toplevel windows, window managers may ignore or modify the move;
780 	 * you should probably use gtk_window_move() on a GtkWindow widget
781 	 * anyway, instead of using GDK functions. For child windows,
782 	 * the move will reliably succeed.
783 	 * If you're also planning to resize the window, use gdk_window_move_resize()
784 	 * to both move and resize simultaneously, for a nicer visual effect.
785 	 * Params:
786 	 * x = X coordinate relative to window's parent
787 	 * y = Y coordinate relative to window's parent
788 	 */
789 	public void move(int x, int y)
790 	{
791 		// void gdk_window_move (GdkWindow *window,  gint x,  gint y);
792 		gdk_window_move(gdkWindow, x, y);
793 	}
794 	
795 	/**
796 	 * Resizes window; for toplevel windows, asks the window manager to resize
797 	 * the window. The window manager may not allow the resize. When using GTK+,
798 	 * use gtk_window_resize() instead of this low-level GDK function.
799 	 * Windows may not be resized below 1x1.
800 	 * If you're also planning to move the window, use gdk_window_move_resize()
801 	 * to both move and resize simultaneously, for a nicer visual effect.
802 	 * Params:
803 	 * width = new width of the window
804 	 * height = new height of the window
805 	 */
806 	public void resize(int width, int height)
807 	{
808 		// void gdk_window_resize (GdkWindow *window,  gint width,  gint height);
809 		gdk_window_resize(gdkWindow, width, height);
810 	}
811 	
812 	/**
813 	 * Equivalent to calling gdk_window_move() and gdk_window_resize(),
814 	 * except that both operations are performed at once, avoiding strange
815 	 * visual effects. (i.e. the user may be able to see the window first
816 	 * move, then resize, if you don't use gdk_window_move_resize().)
817 	 * Params:
818 	 * x = new X position relative to window's parent
819 	 * y = new Y position relative to window's parent
820 	 * width = new width
821 	 * height = new height
822 	 */
823 	public void moveResize(int x, int y, int width, int height)
824 	{
825 		// void gdk_window_move_resize (GdkWindow *window,  gint x,  gint y,  gint width,  gint height);
826 		gdk_window_move_resize(gdkWindow, x, y, width, height);
827 	}
828 	
829 	/**
830 	 * Scroll the contents of its window, both pixels and children, by
831 	 * the given amount. Portions of the window that the scroll operation
832 	 * brings in from offscreen areas are invalidated.
833 	 * Params:
834 	 * dx = Amount to scroll in the X direction
835 	 * dy = Amount to scroll in the Y direction
836 	 */
837 	public void scroll(int dx, int dy)
838 	{
839 		// void gdk_window_scroll (GdkWindow *window,  gint dx,  gint dy);
840 		gdk_window_scroll(gdkWindow, dx, dy);
841 	}
842 	
843 	/**
844 	 * Move the part of window indicated by region by dy pixels in the Y
845 	 * direction and dx pixels in the X direction. The portions of region
846 	 * that not covered by the new position of region are invalidated.
847 	 * Child windows are not moved.
848 	 * Since 2.8
849 	 * Params:
850 	 * region = The GdkRegion to move
851 	 * dx = Amount to move in the X direction
852 	 * dy = Amount to move in the Y direction
853 	 */
854 	public void moveRegion(Region region, int dx, int dy)
855 	{
856 		// void gdk_window_move_region (GdkWindow *window,  const GdkRegion *region,  gint dx,  gint dy);
857 		gdk_window_move_region(gdkWindow, (region is null) ? null : region.getRegionStruct(), dx, dy);
858 	}
859 	
860 	/**
861 	 * Flush all outstanding cached operations on a window, leaving the
862 	 * window in a state which reflects all that has been drawn before.
863 	 * Gdk uses multiple kinds of caching to get better performance and
864 	 * nicer drawing. For instance, during exposes all paints to a window
865 	 * using double buffered rendering are keep on a pixmap until the last
866 	 * window has been exposed. It also delays window moves/scrolls until
867 	 * as long as possible until next update to avoid tearing when moving
868 	 * windows.
869 	 * Normally this should be completely invisible to applications, as
870 	 * we automatically flush the windows when required, but this might
871 	 * be needed if you for instance mix direct native drawing with
872 	 * gdk drawing. For Gtk widgets that don't use double buffering this
873 	 * will be called automatically before sending the expose event.
874 	 * Since 2.18
875 	 */
876 	public void flush()
877 	{
878 		// void gdk_window_flush (GdkWindow *window);
879 		gdk_window_flush(gdkWindow);
880 	}
881 	
882 	/**
883 	 * Checks whether the window has a native window or not. Note that
884 	 * you can use gdk_window_ensure_native() if a native window is needed.
885 	 * Since 2.22
886 	 * Returns: TRUE if the window has a native window, FALSE otherwise.
887 	 */
888 	public int hasNative()
889 	{
890 		// gboolean gdk_window_has_native (GdkWindow *window);
891 		return gdk_window_has_native(gdkWindow);
892 	}
893 	
894 	/**
895 	 * Tries to ensure that there is a window-system native window for this
896 	 * GdkWindow. This may fail in some situations, returning FALSE.
897 	 * Offscreen window and children of them can never have native windows.
898 	 * Some backends may not support native child windows.
899 	 * Since 2.18
900 	 * Returns: TRUE if the window has a native window, FALSE otherwise
901 	 */
902 	public int ensureNative()
903 	{
904 		// gboolean gdk_window_ensure_native (GdkWindow *window);
905 		return gdk_window_ensure_native(gdkWindow);
906 	}
907 	
908 	/**
909 	 * Reparents window into the given new_parent. The window being
910 	 * reparented will be unmapped as a side effect.
911 	 * Params:
912 	 * newParent = new parent to move window into
913 	 * x = X location inside the new parent
914 	 * y = Y location inside the new parent
915 	 */
916 	public void reparent(Window newParent, int x, int y)
917 	{
918 		// void gdk_window_reparent (GdkWindow *window,  GdkWindow *new_parent,  gint x,  gint y);
919 		gdk_window_reparent(gdkWindow, (newParent is null) ? null : newParent.getWindowStruct(), x, y);
920 	}
921 	
922 	/**
923 	 * Clears an entire window to the background color or background pixmap.
924 	 */
925 	public void clear()
926 	{
927 		// void gdk_window_clear (GdkWindow *window);
928 		gdk_window_clear(gdkWindow);
929 	}
930 	
931 	/**
932 	 * Clears an area of window to the background color or background pixmap.
933 	 * Params:
934 	 * x = x coordinate of rectangle to clear
935 	 * y = y coordinate of rectangle to clear
936 	 * width = width of rectangle to clear
937 	 * height = height of rectangle to clear
938 	 */
939 	public void clearArea(int x, int y, int width, int height)
940 	{
941 		// void gdk_window_clear_area (GdkWindow *window,  gint x,  gint y,  gint width,  gint height);
942 		gdk_window_clear_area(gdkWindow, x, y, width, height);
943 	}
944 	
945 	/**
946 	 * Like gdk_window_clear_area(), but also generates an expose event for
947 	 * the cleared area.
948 	 * This function has a stupid name because it dates back to the mists
949 	 * time, pre-GDK-1.0.
950 	 * Params:
951 	 * x = x coordinate of rectangle to clear
952 	 * y = y coordinate of rectangle to clear
953 	 * width = width of rectangle to clear
954 	 * height = height of rectangle to clear
955 	 */
956 	public void clearAreaE(int x, int y, int width, int height)
957 	{
958 		// void gdk_window_clear_area_e (GdkWindow *window,  gint x,  gint y,  gint width,  gint height);
959 		gdk_window_clear_area_e(gdkWindow, x, y, width, height);
960 	}
961 	
962 	/**
963 	 * Raises window to the top of the Z-order (stacking order), so that
964 	 * other windows with the same parent window appear below window.
965 	 * This is true whether or not the windows are visible.
966 	 * If window is a toplevel, the window manager may choose to deny the
967 	 * request to move the window in the Z-order, gdk_window_raise() only
968 	 * requests the restack, does not guarantee it.
969 	 */
970 	public void raise()
971 	{
972 		// void gdk_window_raise (GdkWindow *window);
973 		gdk_window_raise(gdkWindow);
974 	}
975 	
976 	/**
977 	 * Lowers window to the bottom of the Z-order (stacking order), so that
978 	 * other windows with the same parent window appear above window.
979 	 * This is true whether or not the other windows are visible.
980 	 * If window is a toplevel, the window manager may choose to deny the
981 	 * request to move the window in the Z-order, gdk_window_lower() only
982 	 * requests the restack, does not guarantee it.
983 	 * Note that gdk_window_show() raises the window again, so don't call this
984 	 * function before gdk_window_show(). (Try gdk_window_show_unraised().)
985 	 */
986 	public void lower()
987 	{
988 		// void gdk_window_lower (GdkWindow *window);
989 		gdk_window_lower(gdkWindow);
990 	}
991 	
992 	/**
993 	 * Changes the position of window in the Z-order (stacking order), so that
994 	 * it is above sibling (if above is TRUE) or below sibling (if above is
995 	 * FALSE).
996 	 * If sibling is NULL, then this either raises (if above is TRUE) or
997 	 * lowers the window.
998 	 * If window is a toplevel, the window manager may choose to deny the
999 	 * request to move the window in the Z-order, gdk_window_restack() only
1000 	 * requests the restack, does not guarantee it.
1001 	 * Since 2.18
1002 	 * Params:
1003 	 * sibling = a GdkWindow that is a sibling of window, or NULL. [allow-none]
1004 	 * above = a boolean
1005 	 */
1006 	public void restack(Window sibling, int above)
1007 	{
1008 		// void gdk_window_restack (GdkWindow *window,  GdkWindow *sibling,  gboolean above);
1009 		gdk_window_restack(gdkWindow, (sibling is null) ? null : sibling.getWindowStruct(), above);
1010 	}
1011 	
1012 	/**
1013 	 * Sets keyboard focus to window. In most cases, gtk_window_present()
1014 	 * should be used on a GtkWindow, rather than calling this function.
1015 	 * Params:
1016 	 * timestamp = timestamp of the event triggering the window focus
1017 	 */
1018 	public void focus(uint timestamp)
1019 	{
1020 		// void gdk_window_focus (GdkWindow *window,  guint32 timestamp);
1021 		gdk_window_focus(gdkWindow, timestamp);
1022 	}
1023 	
1024 	/**
1025 	 * Registers a window as a potential drop destination.
1026 	 */
1027 	public void registerDnd()
1028 	{
1029 		// void gdk_window_register_dnd (GdkWindow *window);
1030 		gdk_window_register_dnd(gdkWindow);
1031 	}
1032 	
1033 	/**
1034 	 * Begins a window resize operation (for a toplevel window).
1035 	 * You might use this function to implement a "window resize grip," for
1036 	 * example; in fact GtkStatusbar uses it. The function works best
1037 	 * with window managers that support the Extended Window Manager Hints, but has a
1038 	 * fallback implementation for other window managers.
1039 	 * Params:
1040 	 * edge = the edge or corner from which the drag is started
1041 	 * button = the button being used to drag
1042 	 * rootX = root window X coordinate of mouse click that began the drag
1043 	 * rootY = root window Y coordinate of mouse click that began the drag
1044 	 * timestamp = timestamp of mouse click that began the drag (use gdk_event_get_time())
1045 	 */
1046 	public void beginResizeDrag(GdkWindowEdge edge, int button, int rootX, int rootY, uint timestamp)
1047 	{
1048 		// void gdk_window_begin_resize_drag (GdkWindow *window,  GdkWindowEdge edge,  gint button,  gint root_x,  gint root_y,  guint32 timestamp);
1049 		gdk_window_begin_resize_drag(gdkWindow, edge, button, rootX, rootY, timestamp);
1050 	}
1051 	
1052 	/**
1053 	 * Begins a window move operation (for a toplevel window). You might
1054 	 * use this function to implement a "window move grip," for
1055 	 * example. The function works best with window managers that support
1056 	 * the Extended
1057 	 * Window Manager Hints, but has a fallback implementation for
1058 	 * other window managers.
1059 	 * Params:
1060 	 * button = the button being used to drag
1061 	 * rootX = root window X coordinate of mouse click that began the drag
1062 	 * rootY = root window Y coordinate of mouse click that began the drag
1063 	 * timestamp = timestamp of mouse click that began the drag
1064 	 */
1065 	public void beginMoveDrag(int button, int rootX, int rootY, uint timestamp)
1066 	{
1067 		// void gdk_window_begin_move_drag (GdkWindow *window,  gint button,  gint root_x,  gint root_y,  guint32 timestamp);
1068 		gdk_window_begin_move_drag(gdkWindow, button, rootX, rootY, timestamp);
1069 	}
1070 	
1071 	/**
1072 	 * Constrains a desired width and height according to a
1073 	 * set of geometry hints (such as minimum and maximum size).
1074 	 * Params:
1075 	 * geometry = a GdkGeometry structure
1076 	 * flags = a mask indicating what portions of geometry are set
1077 	 * width = desired width of window
1078 	 * height = desired height of the window
1079 	 * newWidth = location to store resulting width. [out]
1080 	 * newHeight = location to store resulting height. [out]
1081 	 */
1082 	public static void constrainSize(GdkGeometry* geometry, uint flags, int width, int height, out int newWidth, out int newHeight)
1083 	{
1084 		// void gdk_window_constrain_size (GdkGeometry *geometry,  guint flags,  gint width,  gint height,  gint *new_width,  gint *new_height);
1085 		gdk_window_constrain_size(geometry, flags, width, height, &newWidth, &newHeight);
1086 	}
1087 	
1088 	/**
1089 	 * Emits a short beep associated to window in the appropriate
1090 	 * display, if supported. Otherwise, emits a short beep on
1091 	 * the display just as gdk_display_beep().
1092 	 * Since 2.12
1093 	 */
1094 	public void beep()
1095 	{
1096 		// void gdk_window_beep (GdkWindow *window);
1097 		gdk_window_beep(gdkWindow);
1098 	}
1099 	
1100 	/**
1101 	 * A convenience wrapper around gdk_window_begin_paint_region() which
1102 	 * creates a rectangular region for you. See
1103 	 * gdk_window_begin_paint_region() for details.
1104 	 * Params:
1105 	 * rectangle = rectangle you intend to draw to
1106 	 */
1107 	public void beginPaintRect(Rectangle rectangle)
1108 	{
1109 		// void gdk_window_begin_paint_rect (GdkWindow *window,  const GdkRectangle *rectangle);
1110 		gdk_window_begin_paint_rect(gdkWindow, (rectangle is null) ? null : rectangle.getRectangleStruct());
1111 	}
1112 	
1113 	/**
1114 	 * Indicates that you are beginning the process of redrawing region.
1115 	 * A backing store (offscreen buffer) large enough to contain region
1116 	 * will be created. The backing store will be initialized with the
1117 	 * background color or background pixmap for window. Then, all
1118 	 * drawing operations performed on window will be diverted to the
1119 	 * backing store. When you call gdk_window_end_paint(), the backing
1120 	 * store will be copied to window, making it visible onscreen. Only
1121 	 * the part of window contained in region will be modified; that is,
1122 	 * drawing operations are clipped to region.
1123 	 * The net result of all this is to remove flicker, because the user
1124 	 * sees the finished product appear all at once when you call
1125 	 * gdk_window_end_paint(). If you draw to window directly without
1126 	 * calling gdk_window_begin_paint_region(), the user may see flicker
1127 	 * as individual drawing operations are performed in sequence. The
1128 	 * clipping and background-initializing features of
1129 	 * gdk_window_begin_paint_region() are conveniences for the
1130 	 * programmer, so you can avoid doing that work yourself.
1131 	 * When using GTK+, the widget system automatically places calls to
1132 	 * gdk_window_begin_paint_region() and gdk_window_end_paint() around
1133 	 * emissions of the expose_event signal. That is, if you're writing an
1134 	 * expose event handler, you can assume that the exposed area in
1135 	 * GdkEventExpose has already been cleared to the window background,
1136 	 * is already set as the clip region, and already has a backing store.
1137 	 * Therefore in most cases, application code need not call
1138 	 * gdk_window_begin_paint_region(). (You can disable the automatic
1139 	 * calls around expose events on a widget-by-widget basis by calling
1140 	 * gtk_widget_set_double_buffered().)
1141 	 * If you call this function multiple times before calling the
1142 	 * matching gdk_window_end_paint(), the backing stores are pushed onto
1143 	 * a stack. gdk_window_end_paint() copies the topmost backing store
1144 	 * onscreen, subtracts the topmost region from all other regions in
1145 	 * the stack, and pops the stack. All drawing operations affect only
1146 	 * the topmost backing store in the stack. One matching call to
1147 	 * gdk_window_end_paint() is required for each call to
1148 	 * gdk_window_begin_paint_region().
1149 	 * Params:
1150 	 * region = region you intend to draw to
1151 	 */
1152 	public void beginPaintRegion(Region region)
1153 	{
1154 		// void gdk_window_begin_paint_region (GdkWindow *window,  const GdkRegion *region);
1155 		gdk_window_begin_paint_region(gdkWindow, (region is null) ? null : region.getRegionStruct());
1156 	}
1157 	
1158 	/**
1159 	 * Indicates that the backing store created by the most recent call to
1160 	 * gdk_window_begin_paint_region() should be copied onscreen and
1161 	 * deleted, leaving the next-most-recent backing store or no backing
1162 	 * store at all as the active paint region. See
1163 	 * gdk_window_begin_paint_region() for full details. It is an error to
1164 	 * call this function without a matching
1165 	 * gdk_window_begin_paint_region() first.
1166 	 */
1167 	public void endPaint()
1168 	{
1169 		// void gdk_window_end_paint (GdkWindow *window);
1170 		gdk_window_end_paint(gdkWindow);
1171 	}
1172 	
1173 	/**
1174 	 * A convenience wrapper around gdk_window_invalidate_region() which
1175 	 * invalidates a rectangular region. See
1176 	 * gdk_window_invalidate_region() for details.
1177 	 * Params:
1178 	 * rect = rectangle to invalidate or NULL to invalidate the whole
1179 	 * window. [allow-none]
1180 	 * invalidateChildren = whether to also invalidate child windows
1181 	 */
1182 	public void invalidateRect(Rectangle rect, int invalidateChildren)
1183 	{
1184 		// void gdk_window_invalidate_rect (GdkWindow *window,  const GdkRectangle *rect,  gboolean invalidate_children);
1185 		gdk_window_invalidate_rect(gdkWindow, (rect is null) ? null : rect.getRectangleStruct(), invalidateChildren);
1186 	}
1187 	
1188 	/**
1189 	 * Adds region to the update area for window. The update area is the
1190 	 * region that needs to be redrawn, or "dirty region." The call
1191 	 * gdk_window_process_updates() sends one or more expose events to the
1192 	 * window, which together cover the entire update area. An
1193 	 * application would normally redraw the contents of window in
1194 	 * response to those expose events.
1195 	 * GDK will call gdk_window_process_all_updates() on your behalf
1196 	 * whenever your program returns to the main loop and becomes idle, so
1197 	 * normally there's no need to do that manually, you just need to
1198 	 * invalidate regions that you know should be redrawn.
1199 	 * The invalidate_children parameter controls whether the region of
1200 	 * each child window that intersects region will also be invalidated.
1201 	 * If FALSE, then the update area for child windows will remain
1202 	 * unaffected. See gdk_window_invalidate_maybe_recurse if you need
1203 	 * fine grained control over which children are invalidated.
1204 	 * Params:
1205 	 * region = a GdkRegion
1206 	 * invalidateChildren = TRUE to also invalidate child windows
1207 	 */
1208 	public void invalidateRegion(Region region, int invalidateChildren)
1209 	{
1210 		// void gdk_window_invalidate_region (GdkWindow *window,  const GdkRegion *region,  gboolean invalidate_children);
1211 		gdk_window_invalidate_region(gdkWindow, (region is null) ? null : region.getRegionStruct(), invalidateChildren);
1212 	}
1213 	
1214 	/**
1215 	 * Transfers ownership of the update area from window to the caller
1216 	 * of the function. That is, after calling this function, window will
1217 	 * no longer have an invalid/dirty region; the update area is removed
1218 	 * from window and handed to you. If a window has no update area,
1219 	 * gdk_window_get_update_area() returns NULL. You are responsible for
1220 	 * calling gdk_region_destroy() on the returned region if it's non-NULL.
1221 	 * Returns: the update area for window
1222 	 */
1223 	public Region getUpdateArea()
1224 	{
1225 		// GdkRegion * gdk_window_get_update_area (GdkWindow *window);
1226 		auto p = gdk_window_get_update_area(gdkWindow);
1227 		
1228 		if(p is null)
1229 		{
1230 			return null;
1231 		}
1232 		
1233 		return ObjectG.getDObject!(Region)(cast(GdkRegion*) p);
1234 	}
1235 	
1236 	/**
1237 	 * Temporarily freezes a window such that it won't receive expose
1238 	 * events. The window will begin receiving expose events again when
1239 	 * gdk_window_thaw_updates() is called. If gdk_window_freeze_updates()
1240 	 * has been called more than once, gdk_window_thaw_updates() must be called
1241 	 * an equal number of times to begin processing exposes.
1242 	 */
1243 	public void freezeUpdates()
1244 	{
1245 		// void gdk_window_freeze_updates (GdkWindow *window);
1246 		gdk_window_freeze_updates(gdkWindow);
1247 	}
1248 	
1249 	/**
1250 	 * Thaws a window frozen with gdk_window_freeze_updates().
1251 	 */
1252 	public void thawUpdates()
1253 	{
1254 		// void gdk_window_thaw_updates (GdkWindow *window);
1255 		gdk_window_thaw_updates(gdkWindow);
1256 	}
1257 	
1258 	/**
1259 	 * Calls gdk_window_process_updates() for all windows (see GdkWindow)
1260 	 * in the application.
1261 	 */
1262 	public static void processAllUpdates()
1263 	{
1264 		// void gdk_window_process_all_updates (void);
1265 		gdk_window_process_all_updates();
1266 	}
1267 	
1268 	/**
1269 	 * Sends one or more expose events to window. The areas in each
1270 	 * expose event will cover the entire update area for the window (see
1271 	 * gdk_window_invalidate_region() for details). Normally GDK calls
1272 	 * gdk_window_process_all_updates() on your behalf, so there's no
1273 	 * need to call this function unless you want to force expose events
1274 	 * to be delivered immediately and synchronously (vs. the usual
1275 	 * case, where GDK delivers them in an idle handler). Occasionally
1276 	 * this is useful to produce nicer scrolling behavior, for example.
1277 	 * Params:
1278 	 * updateChildren = whether to also process updates for child windows
1279 	 */
1280 	public void processUpdates(int updateChildren)
1281 	{
1282 		// void gdk_window_process_updates (GdkWindow *window,  gboolean update_children);
1283 		gdk_window_process_updates(gdkWindow, updateChildren);
1284 	}
1285 	
1286 	/**
1287 	 * With update debugging enabled, calls to
1288 	 * gdk_window_invalidate_region() clear the invalidated region of the
1289 	 * screen to a noticeable color, and GDK pauses for a short time
1290 	 * before sending exposes to windows during
1291 	 * gdk_window_process_updates(). The net effect is that you can see
1292 	 * the invalid region for each window and watch redraws as they
1293 	 * occur. This allows you to diagnose inefficiencies in your application.
1294 	 * In essence, because the GDK rendering model prevents all flicker,
1295 	 * if you are redrawing the same region 400 times you may never
1296 	 * notice, aside from noticing a speed problem. Enabling update
1297 	 * debugging causes GTK to flicker slowly and noticeably, so you can
1298 	 * see exactly what's being redrawn when, in what order.
1299 	 * The --gtk-debug=updates command line option passed to GTK+ programs
1300 	 * enables this debug option at application startup time. That's
1301 	 * usually more useful than calling gdk_window_set_debug_updates()
1302 	 * yourself, though you might want to use this function to enable
1303 	 * updates sometime after application startup time.
1304 	 * Params:
1305 	 * setting = TRUE to turn on update debugging
1306 	 */
1307 	public static void setDebugUpdates(int setting)
1308 	{
1309 		// void gdk_window_set_debug_updates (gboolean setting);
1310 		gdk_window_set_debug_updates(setting);
1311 	}
1312 	
1313 	/**
1314 	 * If you bypass the GDK layer and use windowing system primitives to
1315 	 * draw directly onto a GdkWindow, then you need to deal with two
1316 	 * details: there may be an offset between GDK coordinates and windowing
1317 	 * system coordinates, and GDK may have redirected drawing to a offscreen
1318 	 * pixmap as the result of a gdk_window_begin_paint_region() calls.
1319 	 * This function allows retrieving the information you need to compensate
1320 	 * for these effects.
1321 	 * This function exposes details of the GDK implementation, and is thus
1322 	 * likely to change in future releases of GDK.
1323 	 * Params:
1324 	 * realDrawable = location to store the drawable to which drawing should be
1325 	 * done. [out]
1326 	 * xOffset = location to store the X offset between coordinates in window,
1327 	 * and the underlying window system primitive coordinates for
1328 	 * *real_drawable. [out]
1329 	 * yOffset = location to store the Y offset between coordinates in window,
1330 	 * and the underlying window system primitive coordinates for
1331 	 * *real_drawable. [out]
1332 	 */
1333 	public void getInternalPaintInfo(out Drawable realDrawable, out int xOffset, out int yOffset)
1334 	{
1335 		// void gdk_window_get_internal_paint_info (GdkWindow *window,  GdkDrawable **real_drawable,  gint *x_offset,  gint *y_offset);
1336 		GdkDrawable* outrealDrawable = null;
1337 		
1338 		gdk_window_get_internal_paint_info(gdkWindow, &outrealDrawable, &xOffset, &yOffset);
1339 		
1340 		realDrawable = ObjectG.getDObject!(Drawable)(outrealDrawable);
1341 	}
1342 	
1343 	/**
1344 	 * Indicates that the application will cooperate with the window
1345 	 * system in synchronizing the window repaint with the window
1346 	 * manager during resizing operations. After an application calls
1347 	 * this function, it must call gdk_window_configure_finished() every
1348 	 * time it has finished all processing associated with a set of
1349 	 * Configure events. Toplevel GTK+ windows automatically use this
1350 	 * protocol.
1351 	 * On X, calling this function makes window participate in the
1352 	 * _NET_WM_SYNC_REQUEST window manager protocol.
1353 	 * Since 2.6
1354 	 */
1355 	public void enableSynchronizedConfigure()
1356 	{
1357 		// void gdk_window_enable_synchronized_configure  (GdkWindow *window);
1358 		gdk_window_enable_synchronized_configure(gdkWindow);
1359 	}
1360 	
1361 	/**
1362 	 * Signal to the window system that the application has finished
1363 	 * handling Configure events it has received. Window Managers can
1364 	 * use this to better synchronize the frame repaint with the
1365 	 * application. GTK+ applications will automatically call this
1366 	 * function when appropriate.
1367 	 * This function can only be called if gdk_window_enable_synchronized_configure()
1368 	 * was called previously.
1369 	 * Since 2.6
1370 	 */
1371 	public void configureFinished()
1372 	{
1373 		// void gdk_window_configure_finished (GdkWindow *window);
1374 		gdk_window_configure_finished(gdkWindow);
1375 	}
1376 	
1377 	/**
1378 	 * For most purposes this function is deprecated in favor of
1379 	 * g_object_set_data(). However, for historical reasons GTK+ stores
1380 	 * the GtkWidget that owns a GdkWindow as user data on the
1381 	 * GdkWindow. So, custom widget implementations should use
1382 	 * this function for that. If GTK+ receives an event for a GdkWindow,
1383 	 * and the user data for the window is non-NULL, GTK+ will assume the
1384 	 * user data is a GtkWidget, and forward the event to that widget.
1385 	 * Params:
1386 	 * userData = user data
1387 	 */
1388 	public void setUserData(void* userData)
1389 	{
1390 		// void gdk_window_set_user_data (GdkWindow *window,  gpointer user_data);
1391 		gdk_window_set_user_data(gdkWindow, userData);
1392 	}
1393 	
1394 	/**
1395 	 * An override redirect window is not under the control of the window manager.
1396 	 * This means it won't have a titlebar, won't be minimizable, etc. - it will
1397 	 * be entirely under the control of the application. The window manager
1398 	 * can't see the override redirect window at all.
1399 	 * Override redirect should only be used for short-lived temporary
1400 	 * windows, such as popup menus. GtkMenu uses an override redirect
1401 	 * window in its implementation, for example.
1402 	 * Params:
1403 	 * overrideRedirect = TRUE if window should be override redirect
1404 	 */
1405 	public void setOverrideRedirect(int overrideRedirect)
1406 	{
1407 		// void gdk_window_set_override_redirect (GdkWindow *window,  gboolean override_redirect);
1408 		gdk_window_set_override_redirect(gdkWindow, overrideRedirect);
1409 	}
1410 	
1411 	/**
1412 	 * Setting accept_focus to FALSE hints the desktop environment that the
1413 	 * window doesn't want to receive input focus.
1414 	 * On X, it is the responsibility of the window manager to interpret this
1415 	 * hint. ICCCM-compliant window manager usually respect it.
1416 	 * Since 2.4
1417 	 * Params:
1418 	 * acceptFocus = TRUE if the window should receive input focus
1419 	 */
1420 	public void setAcceptFocus(int acceptFocus)
1421 	{
1422 		// void gdk_window_set_accept_focus (GdkWindow *window,  gboolean accept_focus);
1423 		gdk_window_set_accept_focus(gdkWindow, acceptFocus);
1424 	}
1425 	
1426 	/**
1427 	 * Determines whether or not the desktop environment shuld be hinted that
1428 	 * the window does not want to receive input focus.
1429 	 * Since 2.22
1430 	 * Returns: whether or not the window should receive input focus.
1431 	 */
1432 	public int getAcceptFocus()
1433 	{
1434 		// gboolean gdk_window_get_accept_focus (GdkWindow *window);
1435 		return gdk_window_get_accept_focus(gdkWindow);
1436 	}
1437 	
1438 	/**
1439 	 * Setting focus_on_map to FALSE hints the desktop environment that the
1440 	 * window doesn't want to receive input focus when it is mapped.
1441 	 * focus_on_map should be turned off for windows that aren't triggered
1442 	 * interactively (such as popups from network activity).
1443 	 * On X, it is the responsibility of the window manager to interpret
1444 	 * this hint. Window managers following the freedesktop.org window
1445 	 * manager extension specification should respect it.
1446 	 * Since 2.6
1447 	 * Params:
1448 	 * focusOnMap = TRUE if the window should receive input focus when mapped
1449 	 */
1450 	public void setFocusOnMap(int focusOnMap)
1451 	{
1452 		// void gdk_window_set_focus_on_map (GdkWindow *window,  gboolean focus_on_map);
1453 		gdk_window_set_focus_on_map(gdkWindow, focusOnMap);
1454 	}
1455 	
1456 	/**
1457 	 * Determines whether or not the desktop environment should be hinted that the
1458 	 * window does not want to receive input focus when it is mapped.
1459 	 * Since 2.22
1460 	 * Returns: whether or not the window wants to receive input focus when it is mapped.
1461 	 */
1462 	public int getFocusOnMap()
1463 	{
1464 		// gboolean gdk_window_get_focus_on_map (GdkWindow *window);
1465 		return gdk_window_get_focus_on_map(gdkWindow);
1466 	}
1467 	
1468 	/**
1469 	 * Adds an event filter to window, allowing you to intercept events
1470 	 * before they reach GDK. This is a low-level operation and makes it
1471 	 * easy to break GDK and/or GTK+, so you have to know what you're
1472 	 * doing. Pass NULL for window to get all events for all windows,
1473 	 * instead of events for a specific window.
1474 	 * See gdk_display_add_client_message_filter() if you are interested
1475 	 * in X ClientMessage events.
1476 	 * Params:
1477 	 * data = data to pass to filter callback
1478 	 */
1479 	public void addFilter(GdkFilterFunc funct, void* data)
1480 	{
1481 		// void gdk_window_add_filter (GdkWindow *window,  GdkFilterFunc function,  gpointer data);
1482 		gdk_window_add_filter(gdkWindow, funct, data);
1483 	}
1484 	
1485 	/**
1486 	 * Remove a filter previously added with gdk_window_add_filter().
1487 	 * Params:
1488 	 * data = user data for previously-added filter function
1489 	 */
1490 	public void removeFilter(GdkFilterFunc funct, void* data)
1491 	{
1492 		// void gdk_window_remove_filter (GdkWindow *window,  GdkFilterFunc function,  gpointer data);
1493 		gdk_window_remove_filter(gdkWindow, funct, data);
1494 	}
1495 	
1496 	/**
1497 	 * Applies a shape mask to window. Pixels in window corresponding to
1498 	 * set bits in the mask will be visible; pixels in window
1499 	 * corresponding to unset bits in the mask will be transparent. This
1500 	 * gives a non-rectangular window.
1501 	 * If mask is NULL, the shape mask will be unset, and the x/y
1502 	 * parameters are not used.
1503 	 * On the X11 platform, this uses an X server extension which is
1504 	 * widely available on most common platforms, but not available on
1505 	 * very old X servers, and occasionally the implementation will be
1506 	 * buggy. On servers without the shape extension, this function
1507 	 * will do nothing.
1508 	 * This function works on both toplevel and child windows.
1509 	 * Params:
1510 	 * mask = shape mask
1511 	 * x = X position of shape mask with respect to window
1512 	 * y = Y position of shape mask with respect to window
1513 	 */
1514 	public void shapeCombineMask(Bitmap mask, int x, int y)
1515 	{
1516 		// void gdk_window_shape_combine_mask (GdkWindow *window,  GdkBitmap *mask,  gint x,  gint y);
1517 		gdk_window_shape_combine_mask(gdkWindow, (mask is null) ? null : mask.getBitmapStruct(), x, y);
1518 	}
1519 	
1520 	/**
1521 	 * Makes pixels in window outside shape_region be transparent,
1522 	 * so that the window may be nonrectangular. See also
1523 	 * gdk_window_shape_combine_mask() to use a bitmap as the mask.
1524 	 * If shape_region is NULL, the shape will be unset, so the whole
1525 	 * window will be opaque again. offset_x and offset_y are ignored
1526 	 * if shape_region is NULL.
1527 	 * On the X11 platform, this uses an X server extension which is
1528 	 * widely available on most common platforms, but not available on
1529 	 * very old X servers, and occasionally the implementation will be
1530 	 * buggy. On servers without the shape extension, this function
1531 	 * will do nothing.
1532 	 * This function works on both toplevel and child windows.
1533 	 * Params:
1534 	 * shapeRegion = region of window to be non-transparent
1535 	 * offsetX = X position of shape_region in window coordinates
1536 	 * offsetY = Y position of shape_region in window coordinates
1537 	 */
1538 	public void shapeCombineRegion(Region shapeRegion, int offsetX, int offsetY)
1539 	{
1540 		// void gdk_window_shape_combine_region (GdkWindow *window,  const GdkRegion *shape_region,  gint offset_x,  gint offset_y);
1541 		gdk_window_shape_combine_region(gdkWindow, (shapeRegion is null) ? null : shapeRegion.getRegionStruct(), offsetX, offsetY);
1542 	}
1543 	
1544 	/**
1545 	 * Sets the shape mask of window to the union of shape masks
1546 	 * for all children of window, ignoring the shape mask of window
1547 	 * itself. Contrast with gdk_window_merge_child_shapes() which includes
1548 	 * the shape mask of window in the masks to be merged.
1549 	 */
1550 	public void setChildShapes()
1551 	{
1552 		// void gdk_window_set_child_shapes (GdkWindow *window);
1553 		gdk_window_set_child_shapes(gdkWindow);
1554 	}
1555 	
1556 	/**
1557 	 * Merges the shape masks for any child windows into the
1558 	 * shape mask for window. i.e. the union of all masks
1559 	 * for window and its children will become the new mask
1560 	 * for window. See gdk_window_shape_combine_mask().
1561 	 * This function is distinct from gdk_window_set_child_shapes()
1562 	 * because it includes window's shape mask in the set of shapes to
1563 	 * be merged.
1564 	 */
1565 	public void mergeChildShapes()
1566 	{
1567 		// void gdk_window_merge_child_shapes (GdkWindow *window);
1568 		gdk_window_merge_child_shapes(gdkWindow);
1569 	}
1570 	
1571 	/**
1572 	 * Like gdk_window_shape_combine_mask(), but the shape applies
1573 	 * only to event handling. Mouse events which happen while
1574 	 * the pointer position corresponds to an unset bit in the
1575 	 * mask will be passed on the window below window.
1576 	 * An input shape is typically used with RGBA windows.
1577 	 * The alpha channel of the window defines which pixels are
1578 	 * invisible and allows for nicely antialiased borders,
1579 	 * and the input shape controls where the window is
1580 	 * "clickable".
1581 	 * On the X11 platform, this requires version 1.1 of the
1582 	 * shape extension.
1583 	 * On the Win32 platform, this functionality is not present and the
1584 	 * function does nothing.
1585 	 * Since 2.10
1586 	 * Params:
1587 	 * mask = shape mask, or NULL. [allow-none]
1588 	 * x = X position of shape mask with respect to window
1589 	 * y = Y position of shape mask with respect to window
1590 	 */
1591 	public void inputShapeCombineMask(Bitmap mask, int x, int y)
1592 	{
1593 		// void gdk_window_input_shape_combine_mask (GdkWindow *window,  GdkBitmap *mask,  gint x,  gint y);
1594 		gdk_window_input_shape_combine_mask(gdkWindow, (mask is null) ? null : mask.getBitmapStruct(), x, y);
1595 	}
1596 	
1597 	/**
1598 	 * Like gdk_window_shape_combine_region(), but the shape applies
1599 	 * only to event handling. Mouse events which happen while
1600 	 * the pointer position corresponds to an unset bit in the
1601 	 * mask will be passed on the window below window.
1602 	 * An input shape is typically used with RGBA windows.
1603 	 * The alpha channel of the window defines which pixels are
1604 	 * invisible and allows for nicely antialiased borders,
1605 	 * and the input shape controls where the window is
1606 	 * "clickable".
1607 	 * On the X11 platform, this requires version 1.1 of the
1608 	 * shape extension.
1609 	 * On the Win32 platform, this functionality is not present and the
1610 	 * function does nothing.
1611 	 * Since 2.10
1612 	 * Params:
1613 	 * shapeRegion = region of window to be non-transparent
1614 	 * offsetX = X position of shape_region in window coordinates
1615 	 * offsetY = Y position of shape_region in window coordinates
1616 	 */
1617 	public void inputShapeCombineRegion(Region shapeRegion, int offsetX, int offsetY)
1618 	{
1619 		// void gdk_window_input_shape_combine_region  (GdkWindow *window,  const GdkRegion *shape_region,  gint offset_x,  gint offset_y);
1620 		gdk_window_input_shape_combine_region(gdkWindow, (shapeRegion is null) ? null : shapeRegion.getRegionStruct(), offsetX, offsetY);
1621 	}
1622 	
1623 	/**
1624 	 * Sets the input shape mask of window to the union of input shape masks
1625 	 * for all children of window, ignoring the input shape mask of window
1626 	 * itself. Contrast with gdk_window_merge_child_input_shapes() which includes
1627 	 * the input shape mask of window in the masks to be merged.
1628 	 * Since 2.10
1629 	 */
1630 	public void setChildInputShapes()
1631 	{
1632 		// void gdk_window_set_child_input_shapes (GdkWindow *window);
1633 		gdk_window_set_child_input_shapes(gdkWindow);
1634 	}
1635 	
1636 	/**
1637 	 * Merges the input shape masks for any child windows into the
1638 	 * input shape mask for window. i.e. the union of all input masks
1639 	 * for window and its children will become the new input mask
1640 	 * for window. See gdk_window_input_shape_combine_mask().
1641 	 * This function is distinct from gdk_window_set_child_input_shapes()
1642 	 * because it includes window's input shape mask in the set of
1643 	 * shapes to be merged.
1644 	 * Since 2.10
1645 	 */
1646 	public void mergeChildInputShapes()
1647 	{
1648 		// void gdk_window_merge_child_input_shapes (GdkWindow *window);
1649 		gdk_window_merge_child_input_shapes(gdkWindow);
1650 	}
1651 	
1652 	/**
1653 	 * Set the bit gravity of the given window to static, and flag it so
1654 	 * all children get static subwindow gravity. This is used if you are
1655 	 * implementing scary features that involve deep knowledge of the
1656 	 * windowing system. Don't worry about it unless you have to.
1657 	 * Params:
1658 	 * useStatic = TRUE to turn on static gravity
1659 	 * Returns: TRUE if the server supports static gravity
1660 	 */
1661 	public int setStaticGravities(int useStatic)
1662 	{
1663 		// gboolean gdk_window_set_static_gravities (GdkWindow *window,  gboolean use_static);
1664 		return gdk_window_set_static_gravities(gdkWindow, useStatic);
1665 	}
1666 	
1667 	/**
1668 	 * Warning
1669 	 * gdk_window_set_hints is deprecated and should not be used in newly-written code.
1670 	 * This function is broken and useless and you should ignore it.
1671 	 * If using GTK+, use functions such as gtk_window_resize(), gtk_window_set_size_request(),
1672 	 * gtk_window_move(), gtk_window_parse_geometry(), and gtk_window_set_geometry_hints(),
1673 	 * depending on what you're trying to do.
1674 	 * If using GDK directly, use gdk_window_set_geometry_hints().
1675 	 * Params:
1676 	 * x = ignored field, does not matter
1677 	 * y = ignored field, does not matter
1678 	 * minWidth = minimum width hint
1679 	 * minHeight = minimum height hint
1680 	 * maxWidth = max width hint
1681 	 * maxHeight = max height hint
1682 	 * flags = logical OR of GDK_HINT_POS, GDK_HINT_MIN_SIZE, and/or GDK_HINT_MAX_SIZE
1683 	 */
1684 	public void setHints(int x, int y, int minWidth, int minHeight, int maxWidth, int maxHeight, int flags)
1685 	{
1686 		// void gdk_window_set_hints (GdkWindow *window,  gint x,  gint y,  gint min_width,  gint min_height,  gint max_width,  gint max_height,  gint flags);
1687 		gdk_window_set_hints(gdkWindow, x, y, minWidth, minHeight, maxWidth, maxHeight, flags);
1688 	}
1689 	
1690 	/**
1691 	 * Sets the title of a toplevel window, to be displayed in the titlebar.
1692 	 * If you haven't explicitly set the icon name for the window
1693 	 * (using gdk_window_set_icon_name()), the icon name will be set to
1694 	 * title as well. title must be in UTF-8 encoding (as with all
1695 	 * user-readable strings in GDK/GTK+). title may not be NULL.
1696 	 * Params:
1697 	 * title = title of window
1698 	 */
1699 	public void setTitle(string title)
1700 	{
1701 		// void gdk_window_set_title (GdkWindow *window,  const gchar *title);
1702 		gdk_window_set_title(gdkWindow, Str.toStringz(title));
1703 	}
1704 	
1705 	/**
1706 	 * Sets the background color of window. (However, when using GTK+,
1707 	 * set the background of a widget with gtk_widget_modify_bg() - if
1708 	 * you're an application - or gtk_style_set_background() - if you're
1709 	 * implementing a custom widget.)
1710 	 * The color must be allocated; gdk_rgb_find_color() is the best way
1711 	 * to allocate a color.
1712 	 * See also gdk_window_set_back_pixmap().
1713 	 * Params:
1714 	 * color = an allocated GdkColor
1715 	 */
1716 	public void setBackground(Color color)
1717 	{
1718 		// void gdk_window_set_background (GdkWindow *window,  const GdkColor *color);
1719 		gdk_window_set_background(gdkWindow, (color is null) ? null : color.getColorStruct());
1720 	}
1721 	
1722 	/**
1723 	 * Sets the background pixmap of window. May also be used to set a
1724 	 * background of "None" on window, by setting a background pixmap
1725 	 * of NULL.
1726 	 * A background pixmap will be tiled, positioning the first tile at
1727 	 * the origin of window, or if parent_relative is TRUE, the tiling
1728 	 * will be done based on the origin of the parent window (useful to
1729 	 * align tiles in a parent with tiles in a child).
1730 	 * A background pixmap of NULL means that the window will have no
1731 	 * background. A window with no background will never have its
1732 	 * background filled by the windowing system, instead the window will
1733 	 * contain whatever pixels were already in the corresponding area of
1734 	 * the display.
1735 	 * The windowing system will normally fill a window with its background
1736 	 * when the window is obscured then exposed, and when you call
1737 	 * gdk_window_clear().
1738 	 * Params:
1739 	 * pixmap = a GdkPixmap, or NULL. [allow-none]
1740 	 * parentRelative = whether the tiling origin is at the origin of
1741 	 * window's parent
1742 	 */
1743 	public void setBackPixmap(Pixmap pixmap, int parentRelative)
1744 	{
1745 		// void gdk_window_set_back_pixmap (GdkWindow *window,  GdkPixmap *pixmap,  gboolean parent_relative);
1746 		gdk_window_set_back_pixmap(gdkWindow, (pixmap is null) ? null : pixmap.getPixmapStruct(), parentRelative);
1747 	}
1748 	
1749 	/**
1750 	 * Gets the pattern used to clear the background on window. If window
1751 	 * does not have its own background and reuses the parent's, NULL is
1752 	 * returned and you'll have to query it yourself.
1753 	 * Since 2.22
1754 	 * Returns: The pattern to use for the background or NULL to use the parent's background. [transfer none]
1755 	 */
1756 	public Pattern getBackgroundPattern()
1757 	{
1758 		// cairo_pattern_t * gdk_window_get_background_pattern (GdkWindow *window);
1759 		auto p = gdk_window_get_background_pattern(gdkWindow);
1760 		
1761 		if(p is null)
1762 		{
1763 			return null;
1764 		}
1765 		
1766 		return ObjectG.getDObject!(Pattern)(cast(cairo_pattern_t*) p);
1767 	}
1768 	
1769 	/**
1770 	 * Sets the mouse pointer for a GdkWindow. Use gdk_cursor_new_for_display()
1771 	 * or gdk_cursor_new_from_pixmap() to create the cursor. To make the cursor
1772 	 * invisible, use GDK_BLANK_CURSOR. Passing NULL for the cursor argument
1773 	 * to gdk_window_set_cursor() means that window will use the cursor of its
1774 	 * parent window. Most windows should use this default.
1775 	 * Params:
1776 	 * cursor = a cursor. [allow-none]
1777 	 */
1778 	public void setCursor(Cursor cursor)
1779 	{
1780 		// void gdk_window_set_cursor (GdkWindow *window,  GdkCursor *cursor);
1781 		gdk_window_set_cursor(gdkWindow, (cursor is null) ? null : cursor.getCursorStruct());
1782 	}
1783 	
1784 	/**
1785 	 * Retrieves a GdkCursor pointer for the cursor currently set on the
1786 	 * specified GdkWindow, or NULL. If the return value is NULL then
1787 	 * there is no custom cursor set on the specified window, and it is
1788 	 * using the cursor for its parent window.
1789 	 * Since 2.18
1790 	 * Returns: a GdkCursor, or NULL. The returned object is owned by the GdkWindow and should not be unreferenced directly. Use gdk_window_set_cursor() to unset the cursor of the window. [transfer none]
1791 	 */
1792 	public Cursor getCursor()
1793 	{
1794 		// GdkCursor * gdk_window_get_cursor (GdkWindow *window);
1795 		auto p = gdk_window_get_cursor(gdkWindow);
1796 		
1797 		if(p is null)
1798 		{
1799 			return null;
1800 		}
1801 		
1802 		return ObjectG.getDObject!(Cursor)(cast(GdkCursor*) p);
1803 	}
1804 	
1805 	/**
1806 	 * Retrieves the user data for window, which is normally the widget
1807 	 * that window belongs to. See gdk_window_set_user_data().
1808 	 * Params:
1809 	 * data = return location for user data. [out]
1810 	 */
1811 	public void getUserData(void** data)
1812 	{
1813 		// void gdk_window_get_user_data (GdkWindow *window,  gpointer *data);
1814 		gdk_window_get_user_data(gdkWindow, data);
1815 	}
1816 	
1817 	/**
1818 	 * Any of the return location arguments to this function may be NULL,
1819 	 * if you aren't interested in getting the value of that field.
1820 	 * The X and Y coordinates returned are relative to the parent window
1821 	 * of window, which for toplevels usually means relative to the
1822 	 * window decorations (titlebar, etc.) rather than relative to the
1823 	 * root window (screen-size background window).
1824 	 * On the X11 platform, the geometry is obtained from the X server,
1825 	 * so reflects the latest position of window; this may be out-of-sync
1826 	 * with the position of window delivered in the most-recently-processed
1827 	 * GdkEventConfigure. gdk_window_get_position() in contrast gets the
1828 	 * position from the most recent configure event.
1829 	 * Note
1830 	 * If window is not a toplevel, it is much better
1831 	 * to call gdk_window_get_position() and gdk_drawable_get_size() instead,
1832 	 * because it avoids the roundtrip to the X server and because
1833 	 * gdk_drawable_get_size() supports the full 32-bit coordinate space,
1834 	 * whereas gdk_window_get_geometry() is restricted to the 16-bit
1835 	 * coordinates of X11.
1836 	 * Params:
1837 	 * x = return location for X coordinate of window (relative to its parent)
1838 	 * y = return location for Y coordinate of window (relative to its parent)
1839 	 * width = return location for width of window
1840 	 * height = return location for height of window
1841 	 * depth = return location for bit depth of window
1842 	 */
1843 	public void getGeometry(out int x, out int y, out int width, out int height, out int depth)
1844 	{
1845 		// void gdk_window_get_geometry (GdkWindow *window,  gint *x,  gint *y,  gint *width,  gint *height,  gint *depth);
1846 		gdk_window_get_geometry(gdkWindow, &x, &y, &width, &height, &depth);
1847 	}
1848 	
1849 	/**
1850 	 * Sets the geometry hints for window. Hints flagged in geom_mask
1851 	 * are set, hints not flagged in geom_mask are unset.
1852 	 * To unset all hints, use a geom_mask of 0 and a geometry of NULL.
1853 	 * This function provides hints to the windowing system about
1854 	 * acceptable sizes for a toplevel window. The purpose of
1855 	 * this is to constrain user resizing, but the windowing system
1856 	 * will typically (but is not required to) also constrain the
1857 	 * current size of the window to the provided values and
1858 	 * constrain programatic resizing via gdk_window_resize() or
1859 	 * gdk_window_move_resize().
1860 	 * Note that on X11, this effect has no effect on windows
1861 	 * of type GDK_WINDOW_TEMP or windows where override redirect
1862 	 * has been turned on via gdk_window_set_override_redirect()
1863 	 * since these windows are not resizable by the user.
1864 	 * Since you can't count on the windowing system doing the
1865 	 * constraints for programmatic resizes, you should generally
1866 	 * call gdk_window_constrain_size() yourself to determine
1867 	 * appropriate sizes.
1868 	 * Params:
1869 	 * geometry = geometry hints
1870 	 * geomMask = bitmask indicating fields of geometry to pay attention to
1871 	 */
1872 	public void setGeometryHints(GdkGeometry* geometry, GdkWindowHints geomMask)
1873 	{
1874 		// void gdk_window_set_geometry_hints (GdkWindow *window,  const GdkGeometry *geometry,  GdkWindowHints geom_mask);
1875 		gdk_window_set_geometry_hints(gdkWindow, geometry, geomMask);
1876 	}
1877 	
1878 	/**
1879 	 * Sets a list of icons for the window. One of these will be used
1880 	 * to represent the window when it has been iconified. The icon is
1881 	 * usually shown in an icon box or some sort of task bar. Which icon
1882 	 * size is shown depends on the window manager. The window manager
1883 	 * can scale the icon but setting several size icons can give better
1884 	 * image quality since the window manager may only need to scale the
1885 	 * icon by a small amount or not at all.
1886 	 * Params:
1887 	 * pixbufs = A list of pixbufs, of different sizes. [transfer none][element-type GdkPixbuf]
1888 	 */
1889 	public void setIconList(ListG pixbufs)
1890 	{
1891 		// void gdk_window_set_icon_list (GdkWindow *window,  GList *pixbufs);
1892 		gdk_window_set_icon_list(gdkWindow, (pixbufs is null) ? null : pixbufs.getListGStruct());
1893 	}
1894 	
1895 	/**
1896 	 * The application can use this hint to tell the window manager
1897 	 * that a certain window has modal behaviour. The window manager
1898 	 * can use this information to handle modal windows in a special
1899 	 * way.
1900 	 * You should only use this on windows for which you have
1901 	 * previously called gdk_window_set_transient_for()
1902 	 * Params:
1903 	 * modal = TRUE if the window is modal, FALSE otherwise.
1904 	 */
1905 	public void setModalHint(int modal)
1906 	{
1907 		// void gdk_window_set_modal_hint (GdkWindow *window,  gboolean modal);
1908 		gdk_window_set_modal_hint(gdkWindow, modal);
1909 	}
1910 	
1911 	/**
1912 	 * Determines whether or not the window manager is hinted that window
1913 	 * has modal behaviour.
1914 	 * Since 2.22
1915 	 * Returns: whether or not the window has the modal hint set.
1916 	 */
1917 	public int getModalHint()
1918 	{
1919 		// gboolean gdk_window_get_modal_hint (GdkWindow *window);
1920 		return gdk_window_get_modal_hint(gdkWindow);
1921 	}
1922 	
1923 	/**
1924 	 * The application can use this call to provide a hint to the window
1925 	 * manager about the functionality of a window. The window manager
1926 	 * can use this information when determining the decoration and behaviour
1927 	 * of the window.
1928 	 * The hint must be set before the window is mapped.
1929 	 * Params:
1930 	 * hint = A hint of the function this window will have
1931 	 */
1932 	public void setTypeHint(GdkWindowTypeHint hint)
1933 	{
1934 		// void gdk_window_set_type_hint (GdkWindow *window,  GdkWindowTypeHint hint);
1935 		gdk_window_set_type_hint(gdkWindow, hint);
1936 	}
1937 	
1938 	/**
1939 	 * This function returns the type hint set for a window.
1940 	 * Since 2.10
1941 	 * Returns: The type hint set for window
1942 	 */
1943 	public GdkWindowTypeHint getTypeHint()
1944 	{
1945 		// GdkWindowTypeHint gdk_window_get_type_hint (GdkWindow *window);
1946 		return gdk_window_get_type_hint(gdkWindow);
1947 	}
1948 	
1949 	/**
1950 	 * Toggles whether a window should appear in a task list or window
1951 	 * list. If a window's semantic type as specified with
1952 	 * gdk_window_set_type_hint() already fully describes the window, this
1953 	 * function should not be called in addition,
1954 	 * instead you should allow the window to be treated according to
1955 	 * standard policy for its semantic type.
1956 	 * Since 2.2
1957 	 * Params:
1958 	 * skipsTaskbar = TRUE to skip the taskbar
1959 	 */
1960 	public void setSkipTaskbarHint(int skipsTaskbar)
1961 	{
1962 		// void gdk_window_set_skip_taskbar_hint (GdkWindow *window,  gboolean skips_taskbar);
1963 		gdk_window_set_skip_taskbar_hint(gdkWindow, skipsTaskbar);
1964 	}
1965 	
1966 	/**
1967 	 * Toggles whether a window should appear in a pager (workspace
1968 	 * switcher, or other desktop utility program that displays a small
1969 	 * thumbnail representation of the windows on the desktop). If a
1970 	 * window's semantic type as specified with gdk_window_set_type_hint()
1971 	 * already fully describes the window, this function should
1972 	 * not be called in addition, instead you should
1973 	 * allow the window to be treated according to standard policy for
1974 	 * its semantic type.
1975 	 * Since 2.2
1976 	 * Params:
1977 	 * skipsPager = TRUE to skip the pager
1978 	 */
1979 	public void setSkipPagerHint(int skipsPager)
1980 	{
1981 		// void gdk_window_set_skip_pager_hint (GdkWindow *window,  gboolean skips_pager);
1982 		gdk_window_set_skip_pager_hint(gdkWindow, skipsPager);
1983 	}
1984 	
1985 	/**
1986 	 * Toggles whether a window needs the user's
1987 	 * urgent attention.
1988 	 * Since 2.8
1989 	 * Params:
1990 	 * urgent = TRUE if the window is urgent
1991 	 */
1992 	public void setUrgencyHint(int urgent)
1993 	{
1994 		// void gdk_window_set_urgency_hint (GdkWindow *window,  gboolean urgent);
1995 		gdk_window_set_urgency_hint(gdkWindow, urgent);
1996 	}
1997 	
1998 	/**
1999 	 * Obtains the position of the window as reported in the
2000 	 * most-recently-processed GdkEventConfigure. Contrast with
2001 	 * gdk_window_get_geometry() which queries the X server for the
2002 	 * current window position, regardless of which events have been
2003 	 * received or processed.
2004 	 * The position coordinates are relative to the window's parent window.
2005 	 * Params:
2006 	 * x = X coordinate of window. [out][allow-none]
2007 	 * y = Y coordinate of window. [out][allow-none]
2008 	 */
2009 	public void getPosition(out int x, out int y)
2010 	{
2011 		// void gdk_window_get_position (GdkWindow *window,  gint *x,  gint *y);
2012 		gdk_window_get_position(gdkWindow, &x, &y);
2013 	}
2014 	
2015 	/**
2016 	 * Obtains the top-left corner of the window manager frame in root
2017 	 * window coordinates.
2018 	 * Params:
2019 	 * x = return location for X position of window frame
2020 	 * y = return location for Y position of window frame
2021 	 */
2022 	public void getRootOrigin(out int x, out int y)
2023 	{
2024 		// void gdk_window_get_root_origin (GdkWindow *window,  gint *x,  gint *y);
2025 		gdk_window_get_root_origin(gdkWindow, &x, &y);
2026 	}
2027 	
2028 	/**
2029 	 * Obtains the bounding box of the window, including window manager
2030 	 * titlebar/borders if any. The frame position is given in root window
2031 	 * coordinates. To get the position of the window itself (rather than
2032 	 * the frame) in root window coordinates, use gdk_window_get_origin().
2033 	 * Params:
2034 	 * rect = rectangle to fill with bounding box of the window frame
2035 	 */
2036 	public void getFrameExtents(Rectangle rect)
2037 	{
2038 		// void gdk_window_get_frame_extents (GdkWindow *window,  GdkRectangle *rect);
2039 		gdk_window_get_frame_extents(gdkWindow, (rect is null) ? null : rect.getRectangleStruct());
2040 	}
2041 	
2042 	/**
2043 	 * Obtains the position of a window in root window coordinates.
2044 	 * (Compare with gdk_window_get_position() and
2045 	 * gdk_window_get_geometry() which return the position of a window
2046 	 * relative to its parent window.)
2047 	 * Params:
2048 	 * x = return location for X coordinate
2049 	 * y = return location for Y coordinate
2050 	 * Returns: not meaningful, ignore
2051 	 */
2052 	public int getOrigin(out int x, out int y)
2053 	{
2054 		// gint gdk_window_get_origin (GdkWindow *window,  gint *x,  gint *y);
2055 		return gdk_window_get_origin(gdkWindow, &x, &y);
2056 	}
2057 	
2058 	/**
2059 	 * Warning
2060 	 * gdk_window_get_deskrelative_origin is deprecated and should not be used in newly-written code.
2061 	 * This gets the origin of a GdkWindow relative to
2062 	 * an Enlightenment-window-manager desktop. As long as you don't
2063 	 * assume that the user's desktop/workspace covers the entire
2064 	 * root window (i.e. you don't assume that the desktop begins
2065 	 * at root window coordinate 0,0) this function is not necessary.
2066 	 * It's deprecated for that reason.
2067 	 * Params:
2068 	 * x = return location for X coordinate
2069 	 * y = return location for Y coordinate
2070 	 * Returns: not meaningful
2071 	 */
2072 	public int getDeskrelativeOrigin(out int x, out int y)
2073 	{
2074 		// gboolean gdk_window_get_deskrelative_origin (GdkWindow *window,  gint *x,  gint *y);
2075 		return gdk_window_get_deskrelative_origin(gdkWindow, &x, &y);
2076 	}
2077 	
2078 	/**
2079 	 * Obtains the position of a window position in root
2080 	 * window coordinates. This is similar to
2081 	 * gdk_window_get_origin() but allows you go pass
2082 	 * in any position in the window, not just the origin.
2083 	 * Since 2.18
2084 	 * Params:
2085 	 * x = X coordinate in window
2086 	 * y = Y coordinate in window
2087 	 * rootX = return location for X coordinate. [out]
2088 	 * rootY = return location for Y coordinate. [out]
2089 	 */
2090 	public void getRootCoords(int x, int y, out int rootX, out int rootY)
2091 	{
2092 		// void gdk_window_get_root_coords (GdkWindow *window,  gint x,  gint y,  gint *root_x,  gint *root_y);
2093 		gdk_window_get_root_coords(gdkWindow, x, y, &rootX, &rootY);
2094 	}
2095 	
2096 	/**
2097 	 * Transforms window coordinates from a parent window to a child
2098 	 * window, where the parent window is the normal parent as returned by
2099 	 * gdk_window_get_parent() for normal windows, and the window's
2100 	 * embedder as returned by gdk_offscreen_window_get_embedder() for
2101 	 * offscreen windows.
2102 	 * For normal windows, calling this function is equivalent to subtracting
2103 	 * the return values of gdk_window_get_position() from the parent coordinates.
2104 	 * For offscreen windows however (which can be arbitrarily transformed),
2105 	 * this function calls the GdkWindow::from-embedder: signal to translate
2106 	 * the coordinates.
2107 	 * You should always use this function when writing generic code that
2108 	 * walks down a window hierarchy.
2109 	 * See also: gdk_window_coords_to_parent()
2110 	 * Since 2.22
2111 	 * Params:
2112 	 * parentX = X coordinate in parent's coordinate system
2113 	 * parentY = Y coordinate in parent's coordinate system
2114 	 * x = return location for X coordinate in child's coordinate system. [out][allow-none]
2115 	 * y = return location for Y coordinate in child's coordinate system. [out][allow-none]
2116 	 */
2117 	public void coordsFromParent(double parentX, double parentY, out double x, out double y)
2118 	{
2119 		// void gdk_window_coords_from_parent (GdkWindow *window,  gdouble parent_x,  gdouble parent_y,  gdouble *x,  gdouble *y);
2120 		gdk_window_coords_from_parent(gdkWindow, parentX, parentY, &x, &y);
2121 	}
2122 	
2123 	/**
2124 	 * Transforms window coordinates from a child window to its parent
2125 	 * window, where the parent window is the normal parent as returned by
2126 	 * gdk_window_get_parent() for normal windows, and the window's
2127 	 * embedder as returned by gdk_offscreen_window_get_embedder() for
2128 	 * offscreen windows.
2129 	 * For normal windows, calling this function is equivalent to adding
2130 	 * the return values of gdk_window_get_position() to the child coordinates.
2131 	 * For offscreen windows however (which can be arbitrarily transformed),
2132 	 * this function calls the GdkWindow::to-embedder: signal to translate
2133 	 * the coordinates.
2134 	 * You should always use this function when writing generic code that
2135 	 * walks up a window hierarchy.
2136 	 * See also: gdk_window_coords_from_parent()
2137 	 * Since 2.22
2138 	 * Params:
2139 	 * x = X coordinate in child's coordinate system
2140 	 * y = Y coordinate in child's coordinate system
2141 	 * parentX = return location for X coordinate
2142 	 * in parent's coordinate system, or NULL. [out][allow-none]
2143 	 * parentY = return location for Y coordinate
2144 	 * in parent's coordinate system, or NULL. [out][allow-none]
2145 	 */
2146 	public void coordsToParent(double x, double y, out double parentX, out double parentY)
2147 	{
2148 		// void gdk_window_coords_to_parent (GdkWindow *window,  gdouble x,  gdouble y,  gdouble *parent_x,  gdouble *parent_y);
2149 		gdk_window_coords_to_parent(gdkWindow, x, y, &parentX, &parentY);
2150 	}
2151 	
2152 	/**
2153 	 * Obtains the current pointer position and modifier state.
2154 	 * The position is given in coordinates relative to the upper left
2155 	 * corner of window.
2156 	 * Params:
2157 	 * x = return location for X coordinate of pointer or NULL to not
2158 	 * return the X coordinate. [out][allow-none]
2159 	 * y = return location for Y coordinate of pointer or NULL to not
2160 	 * return the Y coordinate. [out][allow-none]
2161 	 * mask = return location for modifier mask or NULL to not return the
2162 	 * modifier mask. [out][allow-none]
2163 	 * Returns: the window containing the pointer (as with gdk_window_at_pointer()), or NULL if the window containing the pointer isn't known to GDK. [transfer none]
2164 	 */
2165 	public Window getPointer(out int x, out int y, out GdkModifierType mask)
2166 	{
2167 		// GdkWindow * gdk_window_get_pointer (GdkWindow *window,  gint *x,  gint *y,  GdkModifierType *mask);
2168 		auto p = gdk_window_get_pointer(gdkWindow, &x, &y, &mask);
2169 		
2170 		if(p is null)
2171 		{
2172 			return null;
2173 		}
2174 		
2175 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2176 	}
2177 	
2178 	/**
2179 	 * Obtains the parent of window, as known to GDK. Does not query the
2180 	 * X server; thus this returns the parent as passed to gdk_window_new(),
2181 	 * not the actual parent. This should never matter unless you're using
2182 	 * Xlib calls mixed with GDK calls on the X11 platform. It may also
2183 	 * matter for toplevel windows, because the window manager may choose
2184 	 * to reparent them.
2185 	 * Note that you should use gdk_window_get_effective_parent() when
2186 	 * writing generic code that walks up a window hierarchy, because
2187 	 * gdk_window_get_parent() will most likely not do what you expect if
2188 	 * there are offscreen windows in the hierarchy.
2189 	 * Returns: parent of window
2190 	 */
2191 	public Window getParent()
2192 	{
2193 		// GdkWindow * gdk_window_get_parent (GdkWindow *window);
2194 		auto p = gdk_window_get_parent(gdkWindow);
2195 		
2196 		if(p is null)
2197 		{
2198 			return null;
2199 		}
2200 		
2201 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2202 	}
2203 	
2204 	/**
2205 	 * Obtains the parent of window, as known to GDK. Works like
2206 	 * gdk_window_get_parent() for normal windows, but returns the
2207 	 * window's embedder for offscreen windows.
2208 	 * See also: gdk_offscreen_window_get_embedder()
2209 	 * Since 2.22
2210 	 * Returns: effective parent of window
2211 	 */
2212 	public Window getEffectiveParent()
2213 	{
2214 		// GdkWindow * gdk_window_get_effective_parent (GdkWindow *window);
2215 		auto p = gdk_window_get_effective_parent(gdkWindow);
2216 		
2217 		if(p is null)
2218 		{
2219 			return null;
2220 		}
2221 		
2222 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2223 	}
2224 	
2225 	/**
2226 	 * Gets the toplevel window that's an ancestor of window.
2227 	 * Any window type but GDK_WINDOW_CHILD is considered a
2228 	 * toplevel window, as is a GDK_WINDOW_CHILD window that
2229 	 * has a root window as parent.
2230 	 * Note that you should use gdk_window_get_effective_toplevel() when
2231 	 * you want to get to a window's toplevel as seen on screen, because
2232 	 * gdk_window_get_toplevel() will most likely not do what you expect
2233 	 * if there are offscreen windows in the hierarchy.
2234 	 * Returns: the toplevel window containing window
2235 	 */
2236 	public Window getToplevel()
2237 	{
2238 		// GdkWindow * gdk_window_get_toplevel (GdkWindow *window);
2239 		auto p = gdk_window_get_toplevel(gdkWindow);
2240 		
2241 		if(p is null)
2242 		{
2243 			return null;
2244 		}
2245 		
2246 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2247 	}
2248 	
2249 	/**
2250 	 * Gets the toplevel window that's an ancestor of window.
2251 	 * Works like gdk_window_get_toplevel(), but treats an offscreen window's
2252 	 * embedder as its parent, using gdk_window_get_effective_parent().
2253 	 * See also: gdk_offscreen_window_get_embedder()
2254 	 * Since 2.22
2255 	 * Returns: the effective toplevel window containing window
2256 	 */
2257 	public Window getEffectiveToplevel()
2258 	{
2259 		// GdkWindow * gdk_window_get_effective_toplevel (GdkWindow *window);
2260 		auto p = gdk_window_get_effective_toplevel(gdkWindow);
2261 		
2262 		if(p is null)
2263 		{
2264 			return null;
2265 		}
2266 		
2267 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2268 	}
2269 	
2270 	/**
2271 	 * Gets the list of children of window known to GDK.
2272 	 * This function only returns children created via GDK,
2273 	 * so for example it's useless when used with the root window;
2274 	 * it only returns windows an application created itself.
2275 	 * The returned list must be freed, but the elements in the
2276 	 * list need not be.
2277 	 * Returns: list of child windows inside window. [transfer container][element-type GdkWindow]
2278 	 */
2279 	public ListG getChildren()
2280 	{
2281 		// GList * gdk_window_get_children (GdkWindow *window);
2282 		auto p = gdk_window_get_children(gdkWindow);
2283 		
2284 		if(p is null)
2285 		{
2286 			return null;
2287 		}
2288 		
2289 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
2290 	}
2291 	
2292 	/**
2293 	 * Like gdk_window_get_children(), but does not copy the list of
2294 	 * children, so the list does not need to be freed.
2295 	 * Returns: a reference to the list of child windows in window. [transfer none][element-type GdkWindow]
2296 	 */
2297 	public ListG peekChildren()
2298 	{
2299 		// GList * gdk_window_peek_children (GdkWindow *window);
2300 		auto p = gdk_window_peek_children(gdkWindow);
2301 		
2302 		if(p is null)
2303 		{
2304 			return null;
2305 		}
2306 		
2307 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
2308 	}
2309 	
2310 	/**
2311 	 * Gets the event mask for window. See gdk_window_set_events().
2312 	 * Returns: event mask for window
2313 	 */
2314 	public GdkEventMask getEvents()
2315 	{
2316 		// GdkEventMask gdk_window_get_events (GdkWindow *window);
2317 		return gdk_window_get_events(gdkWindow);
2318 	}
2319 	
2320 	/**
2321 	 * The event mask for a window determines which events will be reported
2322 	 * for that window. For example, an event mask including GDK_BUTTON_PRESS_MASK
2323 	 * means the window should report button press events. The event mask
2324 	 * is the bitwise OR of values from the GdkEventMask enumeration.
2325 	 * Params:
2326 	 * eventMask = event mask for window
2327 	 */
2328 	public void setEvents(GdkEventMask eventMask)
2329 	{
2330 		// void gdk_window_set_events (GdkWindow *window,  GdkEventMask event_mask);
2331 		gdk_window_set_events(gdkWindow, eventMask);
2332 	}
2333 	
2334 	/**
2335 	 * Sets the icon of window as a pixmap or window. If using GTK+, investigate
2336 	 * gtk_window_set_default_icon_list() first, and then gtk_window_set_icon_list()
2337 	 * and gtk_window_set_icon(). If those don't meet your needs, look at
2338 	 * gdk_window_set_icon_list(). Only if all those are too high-level do you
2339 	 * want to fall back to gdk_window_set_icon().
2340 	 * Params:
2341 	 * iconWindow = a GdkWindow to use for the icon, or NULL to unset
2342 	 * pixmap = a GdkPixmap to use as the icon, or NULL to unset
2343 	 * mask = a 1-bit pixmap (GdkBitmap) to use as mask for pixmap, or NULL to have none
2344 	 */
2345 	public void setIcon(Window iconWindow, Pixmap pixmap, Bitmap mask)
2346 	{
2347 		// void gdk_window_set_icon (GdkWindow *window,  GdkWindow *icon_window,  GdkPixmap *pixmap,  GdkBitmap *mask);
2348 		gdk_window_set_icon(gdkWindow, (iconWindow is null) ? null : iconWindow.getWindowStruct(), (pixmap is null) ? null : pixmap.getPixmapStruct(), (mask is null) ? null : mask.getBitmapStruct());
2349 	}
2350 	
2351 	/**
2352 	 * Windows may have a name used while minimized, distinct from the
2353 	 * name they display in their titlebar. Most of the time this is a bad
2354 	 * idea from a user interface standpoint. But you can set such a name
2355 	 * with this function, if you like.
2356 	 * After calling this with a non-NULL name, calls to gdk_window_set_title()
2357 	 * will not update the icon title.
2358 	 * Using NULL for name unsets the icon title; further calls to
2359 	 * gdk_window_set_title() will again update the icon title as well.
2360 	 * Params:
2361 	 * name = name of window while iconified (minimized)
2362 	 */
2363 	public void setIconName(string name)
2364 	{
2365 		// void gdk_window_set_icon_name (GdkWindow *window,  const gchar *name);
2366 		gdk_window_set_icon_name(gdkWindow, Str.toStringz(name));
2367 	}
2368 	
2369 	/**
2370 	 * Indicates to the window manager that window is a transient dialog
2371 	 * associated with the application window parent. This allows the
2372 	 * window manager to do things like center window on parent and
2373 	 * keep window above parent.
2374 	 * See gtk_window_set_transient_for() if you're using GtkWindow or
2375 	 * GtkDialog.
2376 	 * Params:
2377 	 * parent = another toplevel GdkWindow
2378 	 */
2379 	public void setTransientFor(Window parent)
2380 	{
2381 		// void gdk_window_set_transient_for (GdkWindow *window,  GdkWindow *parent);
2382 		gdk_window_set_transient_for(gdkWindow, (parent is null) ? null : parent.getWindowStruct());
2383 	}
2384 	
2385 	/**
2386 	 * When using GTK+, typically you should use gtk_window_set_role() instead
2387 	 * of this low-level function.
2388 	 * The window manager and session manager use a window's role to
2389 	 * distinguish it from other kinds of window in the same application.
2390 	 * When an application is restarted after being saved in a previous
2391 	 * session, all windows with the same title and role are treated as
2392 	 * interchangeable. So if you have two windows with the same title
2393 	 * that should be distinguished for session management purposes, you
2394 	 * should set the role on those windows. It doesn't matter what string
2395 	 * you use for the role, as long as you have a different role for each
2396 	 * non-interchangeable kind of window.
2397 	 * Params:
2398 	 * role = a string indicating its role
2399 	 */
2400 	public void setRole(string role)
2401 	{
2402 		// void gdk_window_set_role (GdkWindow *window,  const gchar *role);
2403 		gdk_window_set_role(gdkWindow, Str.toStringz(role));
2404 	}
2405 	
2406 	/**
2407 	 * When using GTK+, typically you should use gtk_window_set_startup_id()
2408 	 * instead of this low-level function.
2409 	 * Since 2.12
2410 	 * Params:
2411 	 * startupId = a string with startup-notification identifier
2412 	 */
2413 	public void setStartupId(string startupId)
2414 	{
2415 		// void gdk_window_set_startup_id (GdkWindow *window,  const gchar *startup_id);
2416 		gdk_window_set_startup_id(gdkWindow, Str.toStringz(startupId));
2417 	}
2418 	
2419 	/**
2420 	 * Sets the group leader window for window. By default,
2421 	 * GDK sets the group leader for all toplevel windows
2422 	 * to a global window implicitly created by GDK. With this function
2423 	 * you can override this default.
2424 	 * The group leader window allows the window manager to distinguish
2425 	 * all windows that belong to a single application. It may for example
2426 	 * allow users to minimize/unminimize all windows belonging to an
2427 	 * application at once. You should only set a non-default group window
2428 	 * if your application pretends to be multiple applications.
2429 	 * Params:
2430 	 * leader = group leader window, or NULL to restore the default group leader window
2431 	 */
2432 	public void setGroup(Window leader)
2433 	{
2434 		// void gdk_window_set_group (GdkWindow *window,  GdkWindow *leader);
2435 		gdk_window_set_group(gdkWindow, (leader is null) ? null : leader.getWindowStruct());
2436 	}
2437 	
2438 	/**
2439 	 * Returns the group leader window for window. See gdk_window_set_group().
2440 	 * Since 2.4
2441 	 * Returns: the group leader window for window
2442 	 */
2443 	public Window getGroup()
2444 	{
2445 		// GdkWindow * gdk_window_get_group (GdkWindow *window);
2446 		auto p = gdk_window_get_group(gdkWindow);
2447 		
2448 		if(p is null)
2449 		{
2450 			return null;
2451 		}
2452 		
2453 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2454 	}
2455 	
2456 	/**
2457 	 * "Decorations" are the features the window manager adds to a toplevel GdkWindow.
2458 	 * This function sets the traditional Motif window manager hints that tell the
2459 	 * window manager which decorations you would like your window to have.
2460 	 * Usually you should use gtk_window_set_decorated() on a GtkWindow instead of
2461 	 * using the GDK function directly.
2462 	 * The decorations argument is the logical OR of the fields in
2463 	 * the GdkWMDecoration enumeration. If GDK_DECOR_ALL is included in the
2464 	 * mask, the other bits indicate which decorations should be turned off.
2465 	 * If GDK_DECOR_ALL is not included, then the other bits indicate
2466 	 * which decorations should be turned on.
2467 	 * Most window managers honor a decorations hint of 0 to disable all decorations,
2468 	 * but very few honor all possible combinations of bits.
2469 	 * Params:
2470 	 * decorations = decoration hint mask
2471 	 */
2472 	public void setDecorations(GdkWMDecoration decorations)
2473 	{
2474 		// void gdk_window_set_decorations (GdkWindow *window,  GdkWMDecoration decorations);
2475 		gdk_window_set_decorations(gdkWindow, decorations);
2476 	}
2477 	
2478 	/**
2479 	 * Returns the decorations set on the GdkWindow with gdk_window_set_decorations
2480 	 * Params:
2481 	 * decorations = The window decorations will be written here
2482 	 * Returns: TRUE if the window has decorations set, FALSE otherwise.
2483 	 */
2484 	public int getDecorations(out GdkWMDecoration decorations)
2485 	{
2486 		// gboolean gdk_window_get_decorations (GdkWindow *window,  GdkWMDecoration *decorations);
2487 		return gdk_window_get_decorations(gdkWindow, &decorations);
2488 	}
2489 	
2490 	/**
2491 	 * Sets hints about the window management functions to make available
2492 	 * via buttons on the window frame.
2493 	 * On the X backend, this function sets the traditional Motif window
2494 	 * manager hint for this purpose. However, few window managers do
2495 	 * anything reliable or interesting with this hint. Many ignore it
2496 	 * entirely.
2497 	 * The functions argument is the logical OR of values from the
2498 	 * GdkWMFunction enumeration. If the bitmask includes GDK_FUNC_ALL,
2499 	 * then the other bits indicate which functions to disable; if
2500 	 * it doesn't include GDK_FUNC_ALL, it indicates which functions to
2501 	 * enable.
2502 	 * Params:
2503 	 * functions = bitmask of operations to allow on window
2504 	 */
2505 	public void setFunctions(GdkWMFunction functions)
2506 	{
2507 		// void gdk_window_set_functions (GdkWindow *window,  GdkWMFunction functions);
2508 		gdk_window_set_functions(gdkWindow, functions);
2509 	}
2510 	
2511 	/**
2512 	 * Warning
2513 	 * gdk_window_get_toplevels has been deprecated since version 2.16 and should not be used in newly-written code. Use gdk_screen_get_toplevel_windows() instead.
2514 	 * Obtains a list of all toplevel windows known to GDK on the default
2515 	 * screen (see gdk_screen_get_toplevel_windows()).
2516 	 * A toplevel window is a child of the root window (see
2517 	 * gdk_get_default_root_window()).
2518 	 * The returned list should be freed with g_list_free(), but
2519 	 * its elements need not be freed.
2520 	 * Returns: list of toplevel windows, free with g_list_free()
2521 	 */
2522 	public static ListG getToplevels()
2523 	{
2524 		// GList * gdk_window_get_toplevels (void);
2525 		auto p = gdk_window_get_toplevels();
2526 		
2527 		if(p is null)
2528 		{
2529 			return null;
2530 		}
2531 		
2532 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
2533 	}
2534 	
2535 	/**
2536 	 * Obtains the root window (parent all other windows are inside)
2537 	 * for the default display and screen.
2538 	 * Returns: the default root window
2539 	 */
2540 	public static Window getDefaultRootWindow()
2541 	{
2542 		// GdkWindow * gdk_get_default_root_window (void);
2543 		auto p = gdk_get_default_root_window();
2544 		
2545 		if(p is null)
2546 		{
2547 			return null;
2548 		}
2549 		
2550 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2551 	}
2552 	
2553 	/**
2554 	 * Warning
2555 	 * gdk_set_pointer_hooks has been deprecated since version 2.24 and should not be used in newly-written code. This function will go away in GTK 3 for lack of use cases.
2556 	 * This function allows for hooking into the operation
2557 	 * of getting the current location of the pointer. This
2558 	 * is only useful for such low-level tools as an
2559 	 * event recorder. Applications should never have any
2560 	 * reason to use this facility.
2561 	 * This function is not multihead safe. For multihead operation,
2562 	 * see gdk_display_set_pointer_hooks().
2563 	 * Params:
2564 	 * newHooks = a table of pointers to functions for getting
2565 	 * quantities related to the current pointer position,
2566 	 * or NULL to restore the default table.
2567 	 * Returns: the previous pointer hook table
2568 	 */
2569 	public static GdkPointerHooks* setPointerHooks(GdkPointerHooks* newHooks)
2570 	{
2571 		// GdkPointerHooks * gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks);
2572 		return gdk_set_pointer_hooks(newHooks);
2573 	}
2574 	
2575 	/**
2576 	 * Gets the offscreen pixmap that an offscreen window renders into.
2577 	 * If you need to keep this around over window resizes, you need to
2578 	 * add a reference to it.
2579 	 * Since 2.18
2580 	 * Returns: The offscreen pixmap, or NULL if not offscreen
2581 	 */
2582 	public Pixmap offscreenWindowGetPixmap()
2583 	{
2584 		// GdkPixmap * gdk_offscreen_window_get_pixmap (GdkWindow *window);
2585 		auto p = gdk_offscreen_window_get_pixmap(gdkWindow);
2586 		
2587 		if(p is null)
2588 		{
2589 			return null;
2590 		}
2591 		
2592 		return ObjectG.getDObject!(Pixmap)(cast(GdkPixmap*) p);
2593 	}
2594 	
2595 	/**
2596 	 * Sets window to be embedded in embedder.
2597 	 * To fully embed an offscreen window, in addition to calling this
2598 	 * function, it is also necessary to handle the "pick-embedded-child"
2599 	 * signal on the embedder and the "to-embedder" and
2600 	 * "from-embedder" signals on window.
2601 	 * Since 2.18
2602 	 * Params:
2603 	 * embedder = the GdkWindow that window gets embedded in
2604 	 */
2605 	public void offscreenWindowSetEmbedder(Window embedder)
2606 	{
2607 		// void gdk_offscreen_window_set_embedder (GdkWindow *window,  GdkWindow *embedder);
2608 		gdk_offscreen_window_set_embedder(gdkWindow, (embedder is null) ? null : embedder.getWindowStruct());
2609 	}
2610 	
2611 	/**
2612 	 * Gets the window that window is embedded in.
2613 	 * Since 2.18
2614 	 * Returns: the embedding GdkWindow, or NULL if window is not an embedded offscreen window
2615 	 */
2616 	public Window offscreenWindowGetEmbedder()
2617 	{
2618 		// GdkWindow * gdk_offscreen_window_get_embedder (GdkWindow *window);
2619 		auto p = gdk_offscreen_window_get_embedder(gdkWindow);
2620 		
2621 		if(p is null)
2622 		{
2623 			return null;
2624 		}
2625 		
2626 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
2627 	}
2628 	
2629 	/**
2630 	 * This function informs GDK that the geometry of an embedded
2631 	 * offscreen window has changed. This is necessary for GDK to keep
2632 	 * track of which offscreen window the pointer is in.
2633 	 * Since 2.18
2634 	 */
2635 	public void geometryChanged()
2636 	{
2637 		// void gdk_window_geometry_changed (GdkWindow *window);
2638 		gdk_window_geometry_changed(gdkWindow);
2639 	}
2640 	
2641 	/**
2642 	 * Redirects drawing into window so that drawing to the
2643 	 * window in the rectangle specified by src_x, src_y,
2644 	 * width and height is also drawn into drawable at
2645 	 * dest_x, dest_y.
2646 	 * Only drawing between gdk_window_begin_paint_region() or
2647 	 * gdk_window_begin_paint_rect() and gdk_window_end_paint() is
2648 	 * redirected.
2649 	 * Redirection is active until gdk_window_remove_redirection()
2650 	 * is called.
2651 	 * Since 2.14
2652 	 * Params:
2653 	 * drawable = a GdkDrawable
2654 	 * srcX = x position in window
2655 	 * srcY = y position in window
2656 	 * destX = x position in drawable
2657 	 * destY = y position in drawable
2658 	 * width = width of redirection, or -1 to use the width of window
2659 	 * height = height of redirection or -1 to use the height of window
2660 	 */
2661 	public void redirectToDrawable(Drawable drawable, int srcX, int srcY, int destX, int destY, int width, int height)
2662 	{
2663 		// void gdk_window_redirect_to_drawable (GdkWindow *window,  GdkDrawable *drawable,  gint src_x,  gint src_y,  gint dest_x,  gint dest_y,  gint width,  gint height);
2664 		gdk_window_redirect_to_drawable(gdkWindow, (drawable is null) ? null : drawable.getDrawableStruct(), srcX, srcY, destX, destY, width, height);
2665 	}
2666 	
2667 	/**
2668 	 * Removes any active redirection started by
2669 	 * gdk_window_redirect_to_drawable().
2670 	 * Since 2.14
2671 	 */
2672 	public void removeRedirection()
2673 	{
2674 		// void gdk_window_remove_redirection (GdkWindow *window);
2675 		gdk_window_remove_redirection(gdkWindow);
2676 	}
2677 }