1#include <gtk/gtk.h>
2
3static void
4fill_text_view (GtkWidget *tv, const char *text)
5{
6 int i;
7 GString *s;
8
9 s = g_string_new (init: "");
10 for (i = 0; i < 200; i++)
11 g_string_append_printf (string: s, format: "%s %d\n", text, i);
12
13 gtk_text_buffer_set_text (buffer: gtk_text_view_get_buffer (GTK_TEXT_VIEW (tv)),
14 text: g_string_free (string: s, FALSE), len: -1);
15}
16
17int
18main (int argc, char *argv[])
19{
20 GtkWidget *win, *box, *tv, *sw, *sb;
21 GtkAdjustment *adj;
22
23 gtk_init ();
24
25 win = gtk_window_new ();
26 gtk_window_set_default_size (GTK_WINDOW (win), width: 640, height: 480);
27
28 box = gtk_box_new (orientation: GTK_ORIENTATION_HORIZONTAL, spacing: 5);
29 gtk_window_set_child (GTK_WINDOW (win), child: box);
30
31 sw = gtk_scrolled_window_new ();
32 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
33 hscrollbar_policy: GTK_POLICY_NEVER,
34 vscrollbar_policy: GTK_POLICY_EXTERNAL);
35 gtk_widget_set_hexpand (widget: sw, TRUE);
36 gtk_box_append (GTK_BOX (box), child: sw);
37 tv = gtk_text_view_new ();
38 fill_text_view (tv, text: "Left");
39 gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child: tv);
40
41 adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw));
42
43 sw = gtk_scrolled_window_new ();
44 gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (sw), vadjustment: adj);
45 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
46 hscrollbar_policy: GTK_POLICY_NEVER,
47 vscrollbar_policy: GTK_POLICY_EXTERNAL);
48 gtk_widget_set_hexpand (widget: sw, TRUE);
49 gtk_box_append (GTK_BOX (box), child: sw);
50 tv = gtk_text_view_new ();
51 fill_text_view (tv, text: "Middle");
52 gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child: tv);
53
54 sw = gtk_scrolled_window_new ();
55 gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (sw), vadjustment: adj);
56 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
57 hscrollbar_policy: GTK_POLICY_NEVER,
58 vscrollbar_policy: GTK_POLICY_EXTERNAL);
59 gtk_widget_set_hexpand (widget: sw, TRUE);
60 gtk_box_append (GTK_BOX (box), child: sw);
61 tv = gtk_text_view_new ();
62 fill_text_view (tv, text: "Right");
63 gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child: tv);
64
65 sb = gtk_scrollbar_new (orientation: GTK_ORIENTATION_VERTICAL, adjustment: adj);
66
67 gtk_box_append (GTK_BOX (box), child: sb);
68
69 gtk_widget_show (widget: win);
70
71 while (TRUE)
72 g_main_context_iteration (NULL, TRUE);
73
74 return 0;
75}
76

source code of gtk/tests/syncscroll.c