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 }