From 405f9758997e6399bb573f4fc1119e493fe9c195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Wed, 10 Nov 2021 20:53:24 +0100 Subject: [PATCH] Use a checkerboard pattern on item background --- fastiv-browser.c | 1 - fastiv.c | 22 ++++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/fastiv-browser.c b/fastiv-browser.c index 7c1dcf5..e4ffa4e 100644 --- a/fastiv-browser.c +++ b/fastiv-browser.c @@ -248,7 +248,6 @@ draw_row(FastivBrowser *self, cairo_t *cr, const Row *row) border.left + extents.width + border.right, border.top + extents.height + border.bottom); - // TODO(p): See if a mild checkerboard pattern would not look nice. gtk_render_background( style, cr, border.left, border.top, extents.width, extents.height); diff --git a/fastiv.c b/fastiv.c index e6804d5..273e63a 100644 --- a/fastiv.c +++ b/fastiv.c @@ -335,10 +335,24 @@ main(int argc, char *argv[]) gtk_window_set_default_icon_name(PROJECT_NAME); - const char *style = "fastiv-view, fastiv-browser { background: #222; }" - "fastiv-browser { padding: 5px; } fastiv-browser.item {" - "border: 1px solid rgba(255, 255, 255, 0.5); " - "margin: 10px; color: #000; background: #444; }"; + // This is incredibly broken https://stackoverflow.com/a/51054396/76313 + // thus resolving the problem using overlaps. + const char *style = "@define-color fastiv-tile #3c3c3c; \ + fastiv-view, fastiv-browser { background: #222; } \ + fastiv-browser { padding: 5px; } \ + fastiv-browser.item { \ + border: 1px solid rgba(255, 255, 255, 0.5); \ + margin: 10px; color: #000; \ + background: #333; \ + background-image: \ + linear-gradient(45deg, @fastiv-tile 26%, transparent 26%), \ + linear-gradient(-45deg, @fastiv-tile 26%, transparent 26%), \ + linear-gradient(45deg, transparent 74%, @fastiv-tile 74%), \ + linear-gradient(-45deg, transparent 74%, @fastiv-tile 74%); \ + background-size: 40px 40px; \ + background-position: 0 0, 0 20px, 20px -20px, -20px 0px; \ + }"; + GtkCssProvider *provider = gtk_css_provider_new(); gtk_css_provider_load_from_data(provider, style, strlen(style), NULL); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),