1/* Overlay/Transparency
2 * #Keywords: GtkOverlay, GtkSnapshot
3 *
4 * Blur the background behind an overlay.
5 */
6
7#include <gtk/gtk.h>
8#include "bluroverlay.h"
9
10GtkWidget *
11do_transparent (GtkWidget *do_widget)
12{
13 static GtkWidget *window = NULL;
14
15 if (!window)
16 {
17 GtkWidget *overlay;
18 GtkWidget *button;
19 GtkWidget *label;
20 GtkWidget *picture;
21
22 window = gtk_window_new ();
23 gtk_window_set_display (GTK_WINDOW (window),
24 display: gtk_widget_get_display (widget: do_widget));
25 gtk_window_set_default_size (GTK_WINDOW (window), width: 450, height: 450);
26 g_object_add_weak_pointer (G_OBJECT (window), weak_pointer_location: (gpointer *)&window);
27
28 gtk_window_set_title (GTK_WINDOW (window), title: "Transparency");
29
30 overlay = blur_overlay_new ();
31 gtk_window_set_child (GTK_WINDOW (window), child: overlay);
32
33 button = gtk_button_new_with_label (label: "Don't click this button!");
34 label = gtk_button_get_child (GTK_BUTTON (button));
35 gtk_widget_set_margin_start (widget: label, margin: 50);
36 gtk_widget_set_margin_end (widget: label, margin: 50);
37 gtk_widget_set_margin_top (widget: label, margin: 50);
38 gtk_widget_set_margin_bottom (widget: label, margin: 50);
39
40 gtk_widget_set_opacity (widget: button, opacity: 0.7);
41 gtk_widget_set_halign (widget: button, align: GTK_ALIGN_FILL);
42 gtk_widget_set_valign (widget: button, align: GTK_ALIGN_START);
43
44 blur_overlay_add_overlay (BLUR_OVERLAY (overlay), widget: button, blur: 5.0);
45
46 button = gtk_button_new_with_label (label: "Maybe this one?");
47 label = gtk_button_get_child (GTK_BUTTON (button));
48 gtk_widget_set_margin_start (widget: label, margin: 50);
49 gtk_widget_set_margin_end (widget: label, margin: 50);
50 gtk_widget_set_margin_top (widget: label, margin: 50);
51 gtk_widget_set_margin_bottom (widget: label, margin: 50);
52
53 gtk_widget_set_opacity (widget: button, opacity: 0.7);
54 gtk_widget_set_halign (widget: button, align: GTK_ALIGN_FILL);
55 gtk_widget_set_valign (widget: button, align: GTK_ALIGN_END);
56
57 blur_overlay_add_overlay (BLUR_OVERLAY (overlay), widget: button, blur: 5.0);
58
59 picture = gtk_picture_new_for_resource (resource_path: "/transparent/portland-rose.jpg");
60 blur_overlay_set_child (BLUR_OVERLAY (overlay), widget: picture);
61 }
62
63 if (!gtk_widget_get_visible (widget: window))
64 gtk_widget_show (widget: window);
65 else
66 gtk_window_destroy (GTK_WINDOW (window));
67
68 return window;
69}
70

source code of gtk/demos/gtk-demo/transparent.c