Warning: parse_geometry is deprecated since 3.20.
Parses a standard X Window System geometry string - see the manual page for X (type “man X”) for details on this.
Geometry handling in GTK is deprecated.
parse_geometry does work on all GTK+ ports including Win32 but is primarily intended for an X environment.
If either a size or a position can be extracted from the geometry string, parse_geometry returns true and calls set_default_size and/or move to resize/move the window.
If parse_geometry returns true, it will also set the USER_POS and/or 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 parse_geometry to work as expected, it has to be called when the window has its “final” size, i.e. after calling show_all on the contents and set_geometry_hints on the window.
#include <gtk/gtk.h>
static void
fill_with_content (GtkWidget *vbox)
{
// fill with content...
}
int
main (int argc, char *argv[])
{
GtkWidget *window, *vbox;
GdkGeometry size_hints = {
100, 50, 0, 0, 100, 50, 10,
10, 0.0, 0.0, GDK_GRAVITY_NORTH_WEST
};
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
fill_with_content (vbox);
gtk_widget_show_all (vbox);
gtk_window_set_geometry_hints (GTK_WINDOW (window),
NULL,
&size_hints,
GDK_HINT_MIN_SIZE |
GDK_HINT_BASE_SIZE |
GDK_HINT_RESIZE_INC);
if (argc > 1)
{
gboolean res;
res = gtk_window_parse_geometry (GTK_WINDOW (window),
argv[1]);
if (! res)
fprintf (stderr,
"Failed to parse “%s”\n",
argv[1]);
}
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
this |
a Window |
geometry |
geometry string |
true if string was parsed successfully |