From: Havoc Pennington Date: Sat, 19 Jan 2002 18:51:48 +0000 (+0000) Subject: link to new X11 section in a lot of places when mentioning the window X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=31283d57cabdf7de2d46352cd08eac57a23131cc;p=~andy%2Fgtk link to new X11 section in a lot of places when mentioning the window 2002-01-19 Havoc Pennington * gtk/gtkwindow.c: link to new X11 section in a lot of places when mentioning the window manager. * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention window manager since we're portable. 2002-01-19 Havoc Pennington * gtk/x11.sgml: add a mostly-empty X11 section * gtk/framebuffer.sgml: make title consistent with windows section * gtk/tmpl/gtkdrawingarea.sgml: couple of fixes --- diff --git a/ChangeLog b/ChangeLog index a011656fc..ed2352e14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index a011656fc..ed2352e14 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/gtkwindow.c: link to new X11 section in a lot of places when + mentioning the window manager. + + * gtk/gtkwidget.c (gtk_widget_hide_on_delete): don't mention + window manager since we're portable. + Sat Jan 19 08:47:41 2002 Jeff Garzik * gdk/linux-fb/gdkproperty-fb.c (gdk_atom_name): diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index a08e4b4b4..515370a20 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,11 @@ +2002-01-19 Havoc Pennington + + * gtk/x11.sgml: add a mostly-empty X11 section + + * gtk/framebuffer.sgml: make title consistent with windows section + + * gtk/tmpl/gtkdrawingarea.sgml: couple of fixes + 2002-01-17 Matthias Clasen * gtk/resources.sgml: Tiny markup fix. diff --git a/docs/reference/gtk/framebuffer.sgml b/docs/reference/gtk/framebuffer.sgml index 0ff649cd6..17c177838 100644 --- a/docs/reference/gtk/framebuffer.sgml +++ b/docs/reference/gtk/framebuffer.sgml @@ -1,6 +1,6 @@ -Framebuffer +Using GTK+ on the Framebuffer 3 GTK Library @@ -8,7 +8,7 @@ Using GTK+ on the Framebuffer -Using embedded GTK+ on the Linux framebuffer +Linux framebuffer aspects of using GTK+ diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml index 4d02cae7b..4936f1ba4 100644 --- a/docs/reference/gtk/gtk-docs.sgml +++ b/docs/reference/gtk/gtk-docs.sgml @@ -153,6 +153,7 @@ + @@ -249,6 +250,7 @@ that is, GUI components such as #GtkButton or #GtkTextView. >k-Running; >k-Windows; >k-Framebuffer; + >k-X11; >k-Changes-1-2; >k-Changes-2-0; >k-Resources; diff --git a/docs/reference/gtk/tmpl/gtkdrawingarea.sgml b/docs/reference/gtk/tmpl/gtkdrawingarea.sgml index 4c6346e06..9b686dd64 100644 --- a/docs/reference/gtk/tmpl/gtkdrawingarea.sgml +++ b/docs/reference/gtk/tmpl/gtkdrawingarea.sgml @@ -80,17 +80,28 @@ gdk_window_invalidate_rect() are equally good ways to do this. You'll then get an expose event for the invalid region. + +The available routines for drawing are documented on the GDK Drawing Primitives page. +See also gdk_pixbuf_render_to_drawable() for drawing a #GdkPixbuf. + + To receive mouse events on a drawing area, you will need to enable -them with gtk_widget_add_events(). To receive keyboard events, -you will need to set the #GTK_CAN_FOCUS flag on the drawing area, and +them with gtk_widget_add_events(). To receive keyboard events, you +will need to set the #GTK_CAN_FOCUS flag on the drawing area, and should probably draw some user-visible indication that the drawing -area is focused. See gtk_paint_focus() for one way to draw focus. +area is focused. Use the GTK_HAS_FOCUS() macro in your expose event +handler to decide whether to draw the focus indicator. See +gtk_paint_focus() for one way to draw focus. - +Sometimes #GtkImage is a useful alternative to a drawing area. +You can put a #GdkPixmap in the #GtkImage and draw to the #GdkPixmap, +calling gtk_widget_queue_draw() on the #GtkImage when you want to +refresh to the screen. @@ -110,6 +121,7 @@ Creates a new drawing area. +(Use gtk_widget_set_size_request() instead.) Sets the size that the drawing area will request in response to a "size_request" signal. The drawing area may actually be allocated a size diff --git a/docs/reference/gtk/tmpl/gtkmenu.sgml b/docs/reference/gtk/tmpl/gtkmenu.sgml index f0db72f47..c060e31b9 100644 --- a/docs/reference/gtk/tmpl/gtkmenu.sgml +++ b/docs/reference/gtk/tmpl/gtkmenu.sgml @@ -96,9 +96,9 @@ Creates a new #GtkMenu. Adds a new #GtkMenuItem to the end of the menu's item list. - @menu: a #GtkMenu. @child: The #GtkMenuItem to add. + @m: @c: @@ -108,9 +108,9 @@ Adds a new #GtkMenuItem to the end of the menu's item list. Adds a new #GtkMenuItem to the beginning of the menu's item list. - @menu: a #GtkMenu. @child: The #GtkMenuItem to add. + @menu_child: @m: @c: @@ -122,10 +122,10 @@ Adds a new #GtkMenuItem to the menu's item list at the position indicated by @position. - @menu: a #GtkMenu. @child: The #GtkMenuItem to add. @pos: + @position: The position in the item list where @child is added. Positions are numbered from 0 to n-1. diff --git a/docs/reference/gtk/x11.sgml b/docs/reference/gtk/x11.sgml new file mode 100644 index 000000000..9054e42a9 --- /dev/null +++ b/docs/reference/gtk/x11.sgml @@ -0,0 +1,103 @@ + + +Using GTK+ on the X Window System +3 +GTK Library + + + +Using GTK+ on the X Window System + +X11 aspects of using GTK+ + + + + +GTK+ for the X Window System + + +On UNIX, the X backend is the default build for GTK+. So +you don't need to do anything special when compiling it, +and everything should "just work." + + + +To mix low-level Xlib routines into a GTK program, +see GDK X Window +System interaction in the GDK manual. + + + + + +Understanding the X11 architecture + + +People coming from a Windows or MacOS background often find certain +aspects of the X Window System surprising. This section introduces +some basic X concepts at a high level. For more details, the book most +people use is called the Xlib Programming +Manual by Adrian Nye; this book is volume one in the +O'Reilly X Window System series. + + +Standards are another important resource if you're poking in low-level +X11 details, in particular the ICCCM and the Extended Window Manager +Hints specifications. freedesktop.org +has links to many relevant specifications. + + +The GDK manual covers using Xlib in a GTK +program. + + + +Server, client, window manager + + +Other window systems typically put all their functionality in the +application itself. With X, each application involves three different +programs: the X server, the application (called +a client because it's a client of the X +server), and a special client called the window +manager. + + + +The X server is in charge of managing resources, processing drawing +requests, and dispatching events such as keyboard and mouse events to +interested applications. So client applications can ask the X server +to create a window, draw a circle, or move windows around. + + + +The window manager is in charge of rendering the frame or borders +around windows; it also has final say on the size of each window, +and window states such as minimized, maximized, and so forth. +On Windows and MacOS the application handles most of this. +On X11, if you wish to modify the window's state, or +change its frame, you must ask the window manager to do so on your +behalf, using an established convention. + + + +GTK+ has functions for asking the window manager to do various things; +see for example gtk_window_iconify() or gtk_window_maximize() or gtk_window_set_decorated(). +Keep in mind that gtk_window_move() and window sizing +are ultimately controlled by the window manager as well and most +window managers will ignore certain requests from +time to time, in the interests of good user interface. + + + + + + + diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index c2eeae37a..b38814412 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -1726,10 +1726,11 @@ gtk_widget_real_hide (GtkWidget *widget) * * Utility function; intended to be connected to the "delete_event" * signal on a #GtkWindow. The function calls gtk_widget_hide() on its - * argument, then returns %TRUE. If connected to "delete_event", - * the result is that clicking the window manager close button for - * will hide but not destroy the window. By default, GTK+ destroys - * windows when "delete_event" is received. + * argument, then returns %TRUE. If connected to "delete_event", the + * result is that clicking the close button for a window (on the + * window frame, top right corner usually) will hide but not destroy + * the window. By default, GTK+ destroys windows when "delete_event" + * is received. * * Return value: %TRUE **/ diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 224a50129..d3368e15b 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -764,7 +764,8 @@ gtk_window_get_property (GObject *object, * you might use #GTK_WINDOW_POPUP. #GTK_WINDOW_POPUP is not for * dialogs, though in some other toolkits dialogs are called "popups". * In GTK+, #GTK_WINDOW_POPUP means a pop-up menu or pop-up tooltip. - * Popup windows are not controlled by the window manager. + * On X11, popup windows are not controlled by the window manager. * * If you simply want an undecorated window (no window borders), use * gtk_window_set_decorated(), don't use #GTK_WINDOW_POPUP. @@ -790,12 +791,14 @@ gtk_window_new (GtkWindowType type) * @window: a #GtkWindow * @title: title of the window * - * Sets the title of the #GtkWindow. The title of a window will be displayed in - * its title bar; on the X Window System, the title bar is rendered by the - * window manager, so exactly how the title appears to users may vary according - * to a user's exact configuration. The title should help a user distinguish - * this window from other windows they may have open. A good title might - * include the application name and current document filename, for example. + * Sets the title of the #GtkWindow. The title of a window will be + * displayed in its title bar; on the X Window System, the title bar + * is rendered by the window + * manager, so exactly how the title appears to users may vary + * according to a user's exact configuration. The title should help a + * user distinguish this window from other windows they may have + * open. A good title might include the application name and current + * document filename, for example. * **/ void @@ -874,11 +877,14 @@ gtk_window_set_wmclass (GtkWindow *window, * @window: a #GtkWindow * @role: unique identifier for the window to be used when restoring a session * + * This function is only useful on X11, not with other GTK+ targets. + * * In combination with the window title, the window role allows a - * window manager to identify "the same" window when an application is - * restarted. So for example you might set the "toolbox" role on your - * app's toolbox window, so that when the user restarts their session, - * the window manager can put the toolbox back in the same place. + * window manager to identify "the + * same" window when an application is restarted. So for example you + * might set the "toolbox" role on your app's toolbox window, so that + * when the user restarts their session, the window manager can put + * the toolbox back in the same place. * * If a window already has a unique title, you don't need to set the * role, since the WM can use the title to identify the window when @@ -1361,8 +1367,8 @@ gtk_window_activate_default (GtkWindow *window) * with other windows in the same application. To keep modal dialogs * on top of main application windows, use * gtk_window_set_transient_for() to make the dialog transient for the - * parent; most window managers will then disallow lowering the dialog - * below the parent. + * parent; most window managers + * will then disallow lowering the dialog below the parent. * * **/ @@ -1569,11 +1575,16 @@ gtk_window_unset_transient_for (GtkWindow *window) * @parent: parent window * * Dialog windows should be set transient for the main application - * window they were spawned from. This allows window managers to - * e.g. keep the dialog on top of the main window, or center the - * dialog over the main window. gtk_dialog_new_with_buttons() and - * other convenience functions in GTK+ will sometimes call + * window they were spawned from. This allows window managers to e.g. keep the + * dialog on top of the main window, or center the dialog over the + * main window. gtk_dialog_new_with_buttons() and other convenience + * functions in GTK+ will sometimes call * gtk_window_set_transient_for() on your behalf. + * + * On Windows, this function will and put the child window + * on top of the parent, much as the window manager would have + * done on X. * **/ void @@ -1815,10 +1826,14 @@ gtk_window_set_geometry_hints (GtkWindow *window, * @setting: %TRUE to decorate the window * * By default, windows are decorated with a title bar, resize - * controls, etc. Some window managers allow GTK+ to disable these - * decorations, creating a borderless window. If you set the decorated - * property to %FALSE using this function, GTK+ will do its best to - * convince the window manager not to decorate the window. + * controls, etc. Some window + * managers allow GTK+ to disable these decorations, creating a + * borderless window. If you set the decorated property to %FALSE + * using this function, GTK+ will do its best to convince the window + * manager not to decorate the window. + * + * On Windows, this function always works, since there's no window manager + * policy involved. * **/ void @@ -2493,10 +2508,11 @@ gtk_window_resize (GtkWindow *window, * @width: return location for width, or %NULL * @height: return location for height, or %NULL * - * Obtains the current size of @window. If @window is not onscreen, - * it returns the size GTK+ will suggest to the window manager for the - * initial window size (but this is not reliably the same as the size - * the window manager will actually select). The size obtained by + * Obtains the current size of @window. If @window is not onscreen, it + * returns the size GTK+ will suggest to the window manager for the initial window + * size (but this is not reliably the same as the size the window + * manager will actually select). The size obtained by * gtk_window_get_size() is the last size received in a * #GdkEventConfigure, that is, GTK+ uses its locally-stored size, * rather than querying the X server for the size. As a result, if you @@ -2533,9 +2549,9 @@ gtk_window_resize (GtkWindow *window, * application cannot. * * In any case, if you insist on application-specified window - * positioning, there's still a better way than doing it yourself - - * gtk_window_set_position() will frequently handle the details - * for you. + * positioning, there's still a better way than + * doing it yourself - gtk_window_set_position() will frequently + * handle the details for you. * **/ void @@ -2582,11 +2598,11 @@ gtk_window_get_size (GtkWindow *window, * @x: X coordinate to move window to * @y: Y coordinate to move window to * - * Asks the window manager to move @window to the given position. - * Window managers are free to ignore this; most window managers - * ignore requests for initial window positions (instead using a - * user-defined placement algorithm) and honor requests after the - * window has already been shown. + * Asks the window manager to move + * @window to the given position. Window managers are free to ignore + * this; most window managers ignore requests for initial window + * positions (instead using a user-defined placement algorithm) and + * honor requests after the window has already been shown. * * Note: the position is the position of the gravity-determined * reference point for the window. The gravity determines two things: @@ -2704,10 +2720,11 @@ gtk_window_move (GtkWindow *window, * Thus GTK+ is using a "best guess" that works with most * window managers. * - * Moreover, nearly all window managers are broken with respect to - * their handling of window gravity. So moving a window to its current - * position as returned by gtk_window_get_position() tends to - * result in moving the window slightly. + * Moreover, nearly all window managers are historically broken with + * respect to their handling of window gravity. So moving a window to + * its current position as returned by gtk_window_get_position() tends + * to result in moving the window slightly. Window managers are + * slowly getting better over time. * * If a window has gravity #GDK_GRAVITY_STATIC the window manager * frame is not relevant, and thus gtk_window_get_position() will @@ -4847,12 +4864,13 @@ gtk_window_present (GtkWindow *window) * gtk_window_iconify: * @window: a #GtkWindow * - * Asks to iconify (i.e. minimize) the specified @window. Note that you - * shouldn't assume the window is definitely iconified afterward, - * because other entities (e.g. the user or window manager) could - * deiconify it again, or there may not be a window manager in which - * case iconification isn't possible, etc. But normally the window - * will end up iconified. Just don't write code that crashes if not. + * Asks to iconify (i.e. minimize) the specified @window. Note that + * you shouldn't assume the window is definitely iconified afterward, + * because other entities (e.g. the user or window manager) could deiconify it + * again, or there may not be a window manager in which case + * iconification isn't possible, etc. But normally the window will end + * up iconified. Just don't write code that crashes if not. * * It's permitted to call this function before showing a window, * in which case the window will be iconified before it ever appears @@ -4889,9 +4907,9 @@ gtk_window_iconify (GtkWindow *window) * * Asks to deiconify (i.e. unminimize) the specified @window. Note * that you shouldn't assume the window is definitely deiconified - * afterward, because other entities (e.g. the user or window manager) - * could iconify it again before your code which assumes - * deiconification gets to run. + * afterward, because other entities (e.g. the user or window manager) could iconify it + * again before your code which assumes deiconification gets to run. * * You can track iconification via the "window_state_event" signal * on #GtkWidget. @@ -4923,10 +4941,11 @@ gtk_window_deiconify (GtkWindow *window) * * Asks to stick @window, which means that it will appear on all user * desktops. Note that you shouldn't assume the window is definitely - * stuck afterward, because other entities (e.g. the user or window - * manager) could unstick it again, and some window managers do not - * support sticking windows. But normally the window will end up - * stuck. Just don't write code that crashes if not. + * stuck afterward, because other entities (e.g. the user or window manager) could unstick it + * again, and some window managers do not support sticking + * windows. But normally the window will end up stuck. Just don't + * write code that crashes if not. * * It's permitted to call this function before showing a window. * @@ -4962,9 +4981,9 @@ gtk_window_stick (GtkWindow *window) * Asks to unstick @window, which means that it will appear on only * one of the user's desktops. Note that you shouldn't assume the * window is definitely unstuck afterward, because other entities - * (e.g. the user or window manager) could stick it again. But - * normally the window will end up stuck. Just don't write code that - * crashes if not. + * (e.g. the user or window + * manager) could stick it again. But normally the window will + * end up stuck. Just don't write code that crashes if not. * * You can track stickiness via the "window_state_event" signal * on #GtkWidget. @@ -4997,10 +5016,11 @@ gtk_window_unstick (GtkWindow *window) * * Asks to maximize @window, so that it becomes full-screen. Note that * you shouldn't assume the window is definitely maximized afterward, - * because other entities (e.g. the user or window manager) could - * unmaximize it again, and not all window managers support - * maximization. But normally the window will end up maximized. Just - * don't write code that crashes if not. + * because other entities (e.g. the user or window manager) could unmaximize it + * again, and not all window managers support maximization. But + * normally the window will end up maximized. Just don't write code + * that crashes if not. * * It's permitted to call this function before showing a window, * in which case the window will be maximized when it appears onscreen @@ -5037,10 +5057,10 @@ gtk_window_maximize (GtkWindow *window) * * Asks to unmaximize @window. Note that you shouldn't assume the * window is definitely unmaximized afterward, because other entities - * (e.g. the user or window manager) could maximize it again, and not - * all window managers honor requests to unmaximize. But normally the - * window will end up unmaximized. Just don't write code that crashes - * if not. + * (e.g. the user or window + * manager) could maximize it again, and not all window + * managers honor requests to unmaximize. But normally the window will + * end up unmaximized. Just don't write code that crashes if not. * * You can track maximization via the "window_state_event" signal * on #GtkWidget. @@ -5160,9 +5180,10 @@ gtk_window_get_gravity (GtkWindow *window) * * Starts resizing a window. This function is used if an application * has window resizing controls. When GDK can support it, the resize - * will be done using the standard mechanism for the window manager or - * windowing system. Otherwise, GDK will try to emulate window - * resizing, potentially not all that well, depending on the windowing system. + * will be done using the standard mechanism for the window manager or windowing + * system. Otherwise, GDK will try to emulate window resizing, + * potentially not all that well, depending on the windowing system. * **/ void @@ -5202,10 +5223,11 @@ gtk_window_begin_resize_drag (GtkWindow *window, * * (Note: this is a special-purpose function intended for the * framebuffer port; see gtk_window_set_has_frame(). It will not - * return the size of the window border drawn by the window manager, - * which is the normal case when using a windowing system. - * See gdk_window_get_frame_extents() to get the standard - * window border extents.) + * return the size of the window border drawn by the window manager, which is the normal + * case when using a windowing system. See + * gdk_window_get_frame_extents() to get the standard window border + * extents.) * * Retrieves the dimensions of the frame window for this toplevel. * See gtk_window_set_has_frame(), gtk_window_set_frame_dimensions(). @@ -5237,11 +5259,12 @@ gtk_window_get_frame_dimensions (GtkWindow *window, * @root_y: Y position where the user clicked to initiate the drag * @timestamp: timestamp from the click event that initiated the drag * - * Starts moving a window. This function is used if an application - * has window movement grips. When GDK can support it, the window movement - * will be done using the standard mechanism for the window manager or - * windowing system. Otherwise, GDK will try to emulate window - * movement, potentially not all that well, depending on the windowing system. + * Starts moving a window. This function is used if an application has + * window movement grips. When GDK can support it, the window movement + * will be done using the standard mechanism for the window manager or windowing + * system. Otherwise, GDK will try to emulate window movement, + * potentially not all that well, depending on the windowing system. * **/ void