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 | |
10 | GtkWidget * |
11 | do_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 | |