<ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <linklocation="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
The widgets in the list are not individually referenced. If you want to iterate through the list and perform actions involving callbacks that might destroy the widgets, you must call g_list_foreach (result, (GFunc)g_object_ref, <seelangword="null"/>) first, and then unref all the widgets afterwards.
This method 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.
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 <seecref="M:Gdk.Window.GetFrameExtents"/> to get the standard window border extents.) See also <seecref="P:Gtk.Window.HasFrame"/>, <seecref="M:Gtk.Window.SetFrameDimensions"/>.
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 do not write code that crashes if not.
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 do not write code that crashes if not.
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.
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 <seecref="M:Gtk.Window.GetSize"/> 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 call <seecref="M:Gtk.Window.Resize"/> then immediately call <seecref="M:Gtk.Window.GetSize"/>, the size would not have taken effect yet. After the window manager processes the resize request, GTK# receives notification that the size has changed via a configure event, and the size of the window gets updated.
Note 1: Nearly any use of this method creates a race condition, because the size of the window may change between the time that you get the size and the time that you perform some action assuming that size is the current size. To avoid race conditions, connect to <seecref="F:Gtk.Widget.ConfigureEvent"/> on the window and adjust your size-dependent state to match the size delivered in the GdkEventConfigure.
A value of -1 for the width or height indicates that a default size has not been explicitly set for that dimension, so the "natural" size of the window will be used.
The default geometry constraint is that windows may not be smaller than their size request; to override this constraint, call <seecref="M:Gtk.Widget.SetSizeRequest"/> to set the window's request to a smaller value.
If <seecref="M:Gtk.Window.Resize"/> is called before showing a window for the first time, it overrides any default size set with <seecref="M:Gtk.Window.SetDefaultSize"/>. Windows may not be resized smaller than 1 by 1 pixels.
If either a size or a position can be extracted from the geometry string, <seecref="M:Gtk.Window.ParseGeometry"/> returns <seelangword="true"/> and calls <seecref="M:Gtk.Window.SetDefaultSize"/> and/or <seecref="M:Gtk.Window.Move"/> to resize/move the window.
If <seecref="M:Gtk.Window.ParseGeometry"/> returns <seelangword="true"/>, it will also set the GDK_HINT_USER_POS and/or GDK_HINT_USER_SIZE hints indicating to the window manager that the size/position of the window was user-specified. This causes most window managers to honor the geometry.
Note that for <seecref="M:Gtk.Window.ParseGeometry"/> to work as expected, it has to be called when the window has its "final" size, i.e. after calling <seecref="M:Gtk.Widget.ShowAll"/> on the contents and <seecref="M:Gtk.Window.SetGeometryHints"/> on the window.
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.
You can track stickiness via the <seecref="F:Gtk.Widget.WindowStateEvent"/> event on GtkWidget. It's permitted to call this method before showing a window.
Note: this is a special-purpose method intended for the framebuffer port; see <seecref="P:Gtk.Window.HasFrame"/>. It will have no effect on the window border drawn by the window manager, which is the normal case when using the X Window system.
This method 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.
<summary>This method returns the position you need to pass to <seecref="M:Gtk.Window.Move"/> to keep <paramrefname="window"/> in its current position.</summary>
If you haven't changed the window gravity, its gravity will be GDK_GRAVITY_NORTH_WEST. This means that <seecref="M:Gtk.Window.GetPosition"/> gets the position of the top-left corner of the window manager frame for the window. <seecref="M:Gtk.Window.Move"/> sets the position of this same top-left corner.
<seecref="M:Gtk.Window.GetPosition"/> is not 100% reliable because the X Window System does not specify a way to obtain the geometry of the decorations placed on a window by the window manager. Thus GTK# is using a "best guess" that works with most window managers.
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 <seecref="M:Gtk.Window.GetPostion"/> 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 <seecref="M:Gtk.Window.GetPosition"/> will always produce accurate results. However you can't use static gravity to do things like place a window in a corner of the screen, because static gravity ignores the window manager decorations.
If you are saving and restoring your application's window positions, you should know that it's impossible for applications to do this without getting it somewhat wrong because applications do not have sufficient knowledge of window manager state. The Correct Mechanism is to support the session management protocol (see the "GnomeClient" object in the GNOME libraries for example) and allow the window manager to save your window sizes and positions.
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.
That is unless the current focused <paramrefname="widget"/> has been configured to receive the default (see <seecref="F:Gtk.WidgetFlags.ReceivesDefault"/>) action in which case the case the focused <paramrefname="widget"/> is activated.
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.
You can track maximization via the <seecref="F:Gtk.Widget.WindowStateEvent"/> event on GtkWidget. It's permitted to call this method before showing a window, in which case the window will be maximized when it appears onscreen initially.
According to the ICCCM, you should always set these to the same value for all windows in an application, and GTK# sets them to that value by default, so calling this method is sort of pointless. However, you may want to call <seecref="P:Gtk.Window.Role"/> on each window in your application, for the benefit of the session manager. Setting the role allows the window manager to restore window positions when loading a saved session.
If the window's "natural" size (its size request) is larger than the default, the default will be ignored. More generally, if the default size does not obey the geometry hints for the window (<seecref="M:Gtk.Window.SetGeometryHints"/> can be used to set these explicitly), the default size will be clamped to the nearest permitted size.
Unlike <seecref="M:Gtk.Widget.SetSizeRequest"/> which sets a size request for a <paramrefname="widget"/> and thus would keep users from shrinking the window, this method only sets the initial size, just as if the user had resized the window themselves. Users can still shrink the window again as they normally would. Setting a default size of -1 means to use the "natural" default size (the size request of the window).
For some uses, <seecref="M:Gtk.Window.Resize"/> is a more appropriate method. <seecref="M:Gtk.Window.Resize"/> changes the current size of the window, rather than the size to be used on initial display. <seecref="M:Gtk.Window.Resize"/> always affects the window itself, not the geometry widget.
The default size of a window only affects the first time a window is shown; if a window is hidden and re-shown, it will remember the size it had prior to hiding, rather than using the default size.
This may mean raising the window in the stacking order, deiconifying it, moving it to the current desktop, and/or giving it the keyboard focus, possibly dependent on the user's platform, window manager, and preferences. If window is hidden, this method calls <seecref="M:Gtk.Widget.Show"/> as well.
This method should be used when the user tries to open a window that's already open. Say for example the preferences dialog is currently open, and the user chooses Preferences from the menu a second time; use <seecref="M:Gtk.Window.Present"/> to move the already-open dialog where the user can see it.
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: first, the location of the reference point in root window coordinates; and second, which point on the window is positioned at the reference point.
By default the gravity is GDK_GRAVITY_NORTH_WEST, so the reference point is simply the x, y supplied to <seecref="M:Gtk.Window.Move"/>. The top-left corner of the window decorations (aka window frame or border) will be placed at <paramrefname="x"/>, <paramrefname="y"/>. Therefore, to position a window at the top left of the screen, you want to use the default gravity (which is GDK_GRAVITY_NORTH_WEST) and move the window to 0,0.
To position a window at the bottom right corner of the screen, you would set GDK_GRAVITY_SOUTH_EAST, which means that the reference point is at x + the window width and y + the window height, and the bottom-right corner of the window border will be placed at that reference point.
You can set a minimum and maximum size; allowed resize increments (e.g. for xterm, you can only resize by the size of a character); aspect ratios; and more. See <seecref="T:Gdk.Geometry"/>.
Creates a new Window object, wich can be of type TopLevel ( most of the cases ) or PopUp. Take care with the use of PopUp type, since it is not controlled by the window manager.
Creates a new TopLevel Window object, using <paramrefname="string"/> as the title. You get the same if you use the public Window ( Gtk.WindowType type ) constructor and later set the string Title property.
<summary>Sets or obtains the icon list to be used as fallback for windows that haven't had <seecref="M:Gtk.Window.IconList"/> called on them to set up a window-specific icon list.</summary>
<paramname="value">A list of <seecref="T:Gdk.Pixbuf"/>.</param>
The default <paramrefname="widget"/> is the widget that's activated when the user presses Enter in a dialog (for example). When setting (rather than unsetting) the default <paramrefname="widget"/> it's generally easier to call <seecref="M:Gtk.Widget.GrabFocus"/> on the <paramrefname="widget"/>. Before making a default <paramrefname="widget"/>, you must set the <seecref="F:Gtk.WidgetFlags.CanDefault"/> flag on the <paramrefname="widget"/> you'd like to make the default.
<summary>If this function is called on a window with setting of <seelangword="true"/>, before it is realized or showed, it will have a "frame" window around widget->window, accessible in window->frame. Or it access the "frame" window exterior to widget->window.</summary>
<returns><seelangword="true"/> if a frame has been added to the window via <seecref="P:Gtk.Window.HasFrame"/>.</returns>
<remarks>
<para>
Using the event <seecref="F:Gtk.WIndow.FrameEvent"/> you can receive all events targeted at the frame. This method is used by the linux-fb port to implement managed windows, but it could concievably be used by X-programs that want to do their own window decorations.
</para>
<para>
Note: This is a special-purpose method for the framebuffer port, this caues to GTK# to draw its own window border. For most applications you want <seecref="P:Gtk.Window.Decorated"/> instead, which tells the window manager whether to draw the window border.
<summary>Sets or obtains the meaning of coordinates passed to <seecref="M:Gtk.Window.Move"/>.</summary>
<paramname="value">A window gravity.</param>
<returns>A window gravity.</returns>
<remarks>
<para>
The default window gravity is <seecref="F:Gdk.Gravity.NorthWest"/> which is typically "do what you mean". See <seecref="M:Gtk.Window.Move"/> and <seecref="T:Gdk.Gravity"/>.
<summary>Sets or obtains the type hint for <paramrefname="window"/>.</summary>
<paramname="value">The window type.</param>
<returns>The ttype hint for <paramrefname="window"/>.</returns>
<remarks>
<para>
By setting the type hint for the window, you allow the window manager to decorate and handle the window in a way which is suitable to the function of the window in your application. This property should be called before the window becomes visible.
<summary>Sets ot obtains the transient parent.</summary>
<paramname="value">Parent window.</param>
<returns></returns>
<remarks>
<para>
Dialog windows should be transient for the main window they were spawned from, this allows windows managers to e.g. keep the dialog on top of the main window, or center the dialog over the main window.
</para>
<para>
On Windows(tm), this function will and put the child window on top of the parent, much as the window would have done in X.
<summary>Sets a <paramrefname="widget"/> to be the focus widget for the window if it is not the current focus widget, and its focusable, or retrieves the current focused <paramrefname="widget"/> within the window.</summary>
<paramname="value"><paramrefname="Widget"/> to be the new focus widget, or <seelangword="null"/> to unset any focus widget for the toplevel window.</param>
<returns>The currently focused <paramrefname="widget"/>, or <seelangword="null"/> if there is none.</returns>
<remarks>
<para>
To set the focus to a particular <paramrefname="widget"/> in the toplevel, it is usually more convenient to use <seecref="M:Gtk.Widget.GrabFocus"/>.
</para>
<para>
Note: when retrieving the current focused <paramrefname="widget"/> is the <paramrefname="widget"/> that would have the focus if the toplevel focused; if the toplevel window is not focused then <seecref="P:Gtk.Widget.HasFocus"/> will not be <seelangword="true"/> for the <paramrefname="widget"/>.
<summary>Sets or obtains the list of icons representing a <seecref="T:Gtk.Window"/>.</summary>
<paramname="value">A list of <seecref="T:Gdk.Pixbuf"/>.</param>
<returns>Copy of window's icon list.</returns>
<remarks>
<para>
The icon is used when window is minimized (also known as iconified). Some window managers or desktop environments may also place it in the window framw, or display it in other contexts.
</para>
<para>
<seecref="M:Gtk.Window.IconList"/> allows you to pass the same icon in several hand-drawn sizes. The list should contain the natural sizes your icon is available in; that is, don't scale the image before passing it to GTK#. Scaling is postponed unitl the last minute, when the desired final size is known, to allow best quality. By passing several sizes, you may improve the final image quality of the icon, by reducing or eliminating automatic image scaling.
</para>
<para>
Recommended sizes to provide: 16x16, 32x32, 48x48 at minimum, and larger images (64x64, 128x128) if you have them).
</para>
<para>
Note that transient windows (those who have been set transient for another window using <seecref="P:Gtk.Window.TransientFor"/> will inherit their icon from their transient parent. So there's no need to explicity set the icon on transient windows.
</para>
<para>
When retrieving the list is copied, but the reference count on each won't be incremented.
<summary>Sets or obtains the role of the window.</summary>
<paramname="value">Unique identifier for the window to be used when restoring a session.</param>
<returns>The role of the window if set, or <seelangword="null"/>. The returned is owned by the widget and must not be modified or freed.</returns>
<remarks>
<para>
This property is only useful on X11, not with other GTK# targets.
</para>
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 session manager can put the toolbox back in the same place.
<para>
If a window already has a unique title, you don't need to set the role, since the WM can use the title to identigy the window when restoring the session.
By default, windows are decorated with a title bar and resize controls. Some window managers allow to disable these decorations, creating a borderless Window. If you set this property as false, Gtk# will try to convince the window manager not to decorate the window.
By default, windows are resizable, so you can change the size of them. But if you set this property to false, the user won't be able to change the size of them.
This property will alow you to define where a Window must be displayed on the screen. It work with the Gtk.WindowPosition enum, so maybe you should check it before use it.
This property will allow you to define the default height for your Window. It only define the default one, so if the Window is resized, it won't be able to do anything.
<summary>Sets or obtains the modal status of <paramrefname="window"/>.</summary>
<paramname="value">Whether the window is modal.</param>
<returns><seelangword="true"/> if the window is set to be modal and establishes a grab when shown.</returns>
<remarks>
<para>
Modal windows prevent interaction with other windows in the same application. To keep modal dialogs on top of main application windows, use <seecref="P:Gtk.Window.TransientFor"/> to make the dialog transient for the parent; most window managers will then disallow lowering the dialog below the parent.
</para>
<para>
There are two status: modal (<seelangword="true"/>) and non-modal (<seelangword="false"/>).
<summary>Property used for setting the window title.</summary>
<paramname="value">Title of the <paramrefname="window"/>.</param>
<returns>The title of the <paramrefname="window"/>, or <seelangword="null"/> if none has been set explicitely. The returned string is owned by the <paramrefname="widget"/> and must not be modified or freed.</returns>
This property will allow you to set the window title. The title of a <paramrefname="window"/> will be displayed in its title bar. Since the title bar is rendered by the window managers on X Window System, the way it appears will depend on the user preferences. This title should help the users to distinguish a window from others opened. A good title will have the application name an the actual document, for example.
This is a constructor used by derivative types of <seecref="T:Gtk.Window"/> that would have their own GLib type assigned to it. This is not typically used by C# code.
<summary>Sets an icon to be used as fallback for windows that haven't had <seecref="P:Gtk.Window.IconList"/> called on them from a file on disk.</summary>
<paramname="filename">Location of icon file.</param>
Note that you shouldn't assume the window is definitely full screen afterward, because other entities (e.g. the user or window manager) could unfullscreen it again, and not all window managers honor requests to fullscreen windows. But normally the window will end up restored to its normal state. Just don't write code that crashes if not.
Note that you shouldn't assume the window is definitely not full screen afterward, because other entities (e.g. the user or window manager) could fullscreen it again, and not all window managers honor requests to unfullscreen windows. But normally the window will end up restored to its normal state. Just don't write code that crashes if not.