diff options
author | miseran <miseran@users.noreply.github.com> | 2021-10-12 01:46:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-11 23:46:35 +0000 |
commit | cd710f583f5ab8650fa2e41c08dc9a6332a5680f (patch) | |
tree | a9374a9dcfcc21500bdaf6dc4765ec5339243275 /thumbs.c | |
parent | 1449bfc5e960a61438c60a67c28da6d7c5bf2c7f (diff) |
Fix behaviour when TrueColor / 24 bit depth is not available (#114)
* Fix regression introduced in c7ca547 which made nsxiv not start in
non-TrueColor X server.
* Introduce a new fix for embedding into tabbed-alpha.
* Fixes a visual glitch from original sxiv when drawing transparent images in 8
bit depth. In 8 bit PseudoColor, `.pixel` is just an index into the 256
defined colors and thus trying to extract rgb bits from it would result in
visual glitch. The values `.color.red` on the other hand and so on are always
integers between 0 and 0xFFFF representing the color as expected.
* Use XColor for win_bg/fg and mrk_fg
Co-authored-by: NRK <nrk@disroot.org>
Diffstat (limited to 'thumbs.c')
-rw-r--r-- | thumbs.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -44,7 +44,7 @@ char* tns_cache_filepath(const char *filepath) if (*filepath != '/') return NULL; - + if (strncmp(filepath, cache_dir, strlen(cache_dir)) != 0) { /* don't cache images inside the cache directory! */ len = strlen(cache_dir) + strlen(filepath) + 2; @@ -469,14 +469,14 @@ void tns_mark(tns_t *tns, int n, bool mark) if (n >= 0 && n < *tns->cnt && tns->thumbs[n].im != NULL) { win_t *win = tns->win; thumb_t *t = &tns->thumbs[n]; - unsigned long col = win->win_bg; + unsigned long col = win->win_bg.pixel; int x = t->x + t->w, y = t->y + t->h; win_draw_rect(win, x - 1, y + 1, 1, tns->bw, true, 1, col); win_draw_rect(win, x + 1, y - 1, tns->bw, 1, true, 1, col); if (mark) - col = win->mrk_fg; + col = win->mrk_fg.pixel; win_draw_rect(win, x, y, tns->bw + 2, tns->bw + 2, true, 1, col); @@ -490,7 +490,7 @@ void tns_highlight(tns_t *tns, int n, bool hl) if (n >= 0 && n < *tns->cnt && tns->thumbs[n].im != NULL) { win_t *win = tns->win; thumb_t *t = &tns->thumbs[n]; - unsigned long col = hl ? win->win_fg : win->win_bg; + unsigned long col = hl ? win->win_fg.pixel : win->win_bg.pixel; int oxy = (tns->bw + 1) / 2 + 1, owh = tns->bw + 2; win_draw_rect(win, t->x - oxy, t->y - oxy, t->w + owh, t->h + owh, |