summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk-overlay-client.c35
-rw-r--r--overlay.css9
2 files changed, 43 insertions, 1 deletions
diff --git a/gtk-overlay-client.c b/gtk-overlay-client.c
index 2ccac84..68d3cae 100644
--- a/gtk-overlay-client.c
+++ b/gtk-overlay-client.c
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
+#include <fcntl.h>
#include <wayland-client.h>
#include <gtk/gtk.h>
@@ -58,6 +59,30 @@ dismiss(GtkWidget *widget, gpointer data)
}
static void
+apply_css (GtkWidget *widget, GtkStyleProvider *provider)
+{
+ gtk_style_context_add_provider(gtk_widget_get_style_context(widget),
+ provider, G_MAXUINT);
+ if (GTK_IS_CONTAINER(widget))
+ gtk_container_forall(GTK_CONTAINER(widget),
+ (GtkCallback) apply_css, provider);
+}
+
+static char *
+load_css(const char *filename)
+{
+ int fd, len;
+ static char buffer[4096];
+
+ fd = open(filename, O_RDONLY);
+ len = read(fd, buffer, sizeof buffer - 1);
+ buffer[len] = '\0';
+ close(fd);
+
+ return buffer;
+}
+
+static void
widget_realize_cb (GtkWidget *widget, void *data)
{
GdkWindow *window;
@@ -78,6 +103,8 @@ overlay_activate(void *data, struct overlay *overlay)
{
struct overlay_client *client = data;
GtkWidget *vbox, *label, *bbox, *button;
+ GtkStyleProvider *provider;
+ char *css;
if (client->window) {
printf("overlay already active\n");
@@ -89,7 +116,7 @@ overlay_activate(void *data, struct overlay *overlay)
client->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(client->window), "Hello");
gtk_window_set_decorated(GTK_WINDOW(client->window), FALSE);
- gtk_window_set_default_size(GTK_WINDOW(client->window), 400, 200);
+ gtk_window_set_default_size(GTK_WINDOW(client->window), 600, 300);
g_signal_connect (client->window, "realize",
G_CALLBACK (widget_realize_cb), client);
@@ -115,6 +142,12 @@ overlay_activate(void *data, struct overlay *overlay)
g_signal_connect(button, "clicked", G_CALLBACK(dismiss), client);
gtk_container_add(GTK_CONTAINER(bbox), button);
+ provider = GTK_STYLE_PROVIDER(gtk_css_provider_new ());
+ css = load_css("overlay.css");
+ gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider),
+ css, -1, NULL);
+ apply_css(client->window, provider);
+
gtk_widget_show_all(client->window);
}
diff --git a/overlay.css b/overlay.css
new file mode 100644
index 0000000..ff7b33a
--- /dev/null
+++ b/overlay.css
@@ -0,0 +1,9 @@
+.background {
+ background-color: alpha(#4870bc, 0.6);
+}
+
+
+
+GtkLabel { color: white; font-size: 14pt; }
+
+GtkButton GtkLabel { color: black; font-size: 12pt; } \ No newline at end of file