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