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