3 * Stack widgets in static positions over a main widget
9 do_overlay (GtkWidget *do_widget)
11 static GtkWidget *window = NULL;
21 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
22 gtk_window_set_screen (GTK_WINDOW (window),
23 gtk_widget_get_screen (do_widget));
24 gtk_window_set_default_size (GTK_WINDOW (window),
27 g_signal_connect (window, "destroy",
28 G_CALLBACK (gtk_widget_destroyed), &window);
30 gtk_window_set_title (GTK_WINDOW (window), "Overlay");
31 gtk_container_set_border_width (GTK_CONTAINER (window), 0);
33 view = gtk_text_view_new ();
35 sw = gtk_scrolled_window_new (NULL, NULL);
36 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
38 GTK_POLICY_AUTOMATIC);
39 gtk_container_add (GTK_CONTAINER (sw), view);
41 overlay = gtk_overlay_new ();
42 gtk_container_add (GTK_CONTAINER (overlay), sw);
43 gtk_container_add (GTK_CONTAINER (window), overlay);
45 entry = gtk_entry_new ();
46 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
47 gtk_widget_set_halign (entry, GTK_ALIGN_END);
48 gtk_widget_set_valign (entry, GTK_ALIGN_END);
50 label = gtk_label_new ("Hello world");
51 gtk_widget_set_halign (label, GTK_ALIGN_END);
52 gtk_widget_set_valign (label, GTK_ALIGN_END);
53 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
54 gtk_widget_set_margin_left (label, 20);
55 gtk_widget_set_margin_right (label, 20);
56 gtk_widget_set_margin_top (label, 5);
57 gtk_widget_set_margin_bottom (label, 5);
59 entry = gtk_entry_new ();
60 gtk_widget_set_halign (entry, GTK_ALIGN_START);
61 gtk_widget_set_valign (entry, GTK_ALIGN_END);
62 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
64 label = gtk_label_new ("Hello world");
65 gtk_widget_set_halign (label, GTK_ALIGN_START);
66 gtk_widget_set_valign (label, GTK_ALIGN_END);
67 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
68 gtk_widget_set_margin_left (label, 20);
69 gtk_widget_set_margin_right (label, 20);
70 gtk_widget_set_margin_top (label, 5);
71 gtk_widget_set_margin_bottom (label, 5);
73 entry = gtk_entry_new ();
74 gtk_widget_set_halign (entry, GTK_ALIGN_END);
75 gtk_widget_set_valign (entry, GTK_ALIGN_START);
76 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
78 label = gtk_label_new ("Hello world");
79 gtk_widget_set_halign (label, GTK_ALIGN_END);
80 gtk_widget_set_valign (label, GTK_ALIGN_START);
81 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
82 gtk_widget_set_margin_left (label, 20);
83 gtk_widget_set_margin_right (label, 20);
84 gtk_widget_set_margin_top (label, 5);
85 gtk_widget_set_margin_bottom (label, 5);
87 entry = gtk_entry_new ();
88 gtk_widget_set_halign (entry, GTK_ALIGN_START);
89 gtk_widget_set_valign (entry, GTK_ALIGN_START);
90 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
92 label = gtk_label_new ("Hello world");
93 gtk_widget_set_halign (label, GTK_ALIGN_START);
94 gtk_widget_set_valign (label, GTK_ALIGN_START);
95 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
96 gtk_widget_set_margin_left (label, 20);
97 gtk_widget_set_margin_right (label, 20);
98 gtk_widget_set_margin_top (label, 5);
99 gtk_widget_set_margin_bottom (label, 5);
101 entry = gtk_entry_new ();
102 gtk_widget_set_halign (entry, GTK_ALIGN_END);
103 gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
104 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
106 label = gtk_label_new ("Hello world");
107 gtk_widget_set_halign (label, GTK_ALIGN_END);
108 gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
109 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
110 gtk_widget_set_margin_left (label, 20);
111 gtk_widget_set_margin_right (label, 20);
112 gtk_widget_set_margin_top (label, 5);
113 gtk_widget_set_margin_bottom (label, 5);
115 entry = gtk_entry_new ();
116 gtk_widget_set_halign (entry, GTK_ALIGN_START);
117 gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
118 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
120 label = gtk_label_new ("Hello world");
121 gtk_widget_set_halign (label, GTK_ALIGN_START);
122 gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
123 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
124 gtk_widget_set_margin_left (label, 20);
125 gtk_widget_set_margin_right (label, 20);
126 gtk_widget_set_margin_top (label, 5);
127 gtk_widget_set_margin_bottom (label, 5);
129 entry = gtk_entry_new ();
130 gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
131 gtk_widget_set_valign (entry, GTK_ALIGN_START);
132 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
134 label = gtk_label_new ("Hello world");
135 gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
136 gtk_widget_set_valign (label, GTK_ALIGN_START);
137 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
138 gtk_widget_set_margin_left (label, 20);
139 gtk_widget_set_margin_right (label, 20);
140 gtk_widget_set_margin_top (label, 5);
141 gtk_widget_set_margin_bottom (label, 5);
143 entry = gtk_entry_new ();
144 gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
145 gtk_widget_set_valign (entry, GTK_ALIGN_END);
146 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
148 label = gtk_label_new ("Hello world");
149 gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
150 gtk_widget_set_valign (label, GTK_ALIGN_END);
151 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
152 gtk_widget_set_margin_left (label, 10);
153 gtk_widget_set_margin_right (label, 10);
154 gtk_widget_set_margin_top (label, 5);
155 gtk_widget_set_margin_bottom (label, 5);
157 entry = gtk_entry_new ();
158 gtk_widget_set_halign (entry, GTK_ALIGN_CENTER);
159 gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
160 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), entry);
162 label = gtk_label_new ("Hello world");
163 gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
164 gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
165 gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
167 gtk_widget_show_all (overlay);
170 if (!gtk_widget_get_visible (window))
172 gtk_widget_show (window);
176 gtk_widget_destroy (window);