1#include <gtk/gtk.h>
2
3int main (int argc, char *argv[])
4{
5 GtkWidget *window, *sw, *viewport, *grid;
6 GtkWidget *entry;
7 int i, j;
8 char *text;
9
10 gtk_init ();
11
12 window = gtk_window_new ();
13 sw = gtk_scrolled_window_new ();
14 gtk_window_set_child (GTK_WINDOW (window), child: sw);
15 viewport = gtk_viewport_new (hadjustment: gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (sw)),
16 vadjustment: gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw)));
17 gtk_viewport_set_scroll_to_focus (GTK_VIEWPORT (viewport), TRUE);
18 gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child: viewport);
19 grid = gtk_grid_new ();
20 gtk_widget_set_margin_start (widget: grid, margin: 20);
21 gtk_widget_set_margin_end (widget: grid, margin: 20);
22 gtk_widget_set_margin_top (widget: grid, margin: 20);
23 gtk_widget_set_margin_bottom (widget: grid, margin: 20);
24 gtk_viewport_set_child (GTK_VIEWPORT (viewport), child: grid);
25
26 for (i = 0; i < 20; i++)
27 for (j = 0; j < 20; j++)
28 {
29 entry = gtk_entry_new ();
30 text = g_strdup_printf (format: "(%d, %d)", i, j);
31 gtk_editable_set_text (GTK_EDITABLE (entry), text);
32 g_free (mem: text);
33 gtk_editable_set_width_chars (GTK_EDITABLE (entry), n_chars: 6);
34 gtk_grid_attach (GTK_GRID (grid), child: entry, column: i, row: j, width: 1, height: 1);
35 }
36
37 gtk_window_present (GTK_WINDOW (window));
38
39 while (1)
40 g_main_context_iteration (NULL, FALSE);
41
42 return 0;
43}
44

source code of gtk/tests/testscrolltofocus.c