| @@ -52,7 +52,6 @@ void win_open(win_t *win) { |
| 52 | 52 | | win_env_t *e; |
| 53 | 53 | | XClassHint classhint; |
| 54 | 54 | | XColor col; |
| 55 | | − | XGCValues gcval; |
| 56 | 55 | | char none_data[] = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 57 | 56 | | Pixmap none; |
| 58 | 57 | | int gmask; |
| @@ -71,6 +70,9 @@ void win_open(win_t *win) { |
| 71 | 70 | | e->cmap = DefaultColormap(e->dpy, e->scr); |
| 72 | 71 | | e->depth = DefaultDepth(e->dpy, e->scr); |
| 73 | 72 | | |
| 73 | + | win->black = BlackPixel(e->dpy, e->scr); |
| 74 | + | win->white = WhitePixel(e->dpy, e->scr); |
| 75 | + | |
| 74 | 76 | | if (XAllocNamedColor(e->dpy, DefaultColormap(e->dpy, e->scr), BG_COLOR, |
| 75 | 77 | | &col, &col)) |
| 76 | 78 | | win->bgcol = col.pixel; |
| @@ -127,8 +129,7 @@ void win_open(win_t *win) { |
| 127 | 129 | | none = XCreateBitmapFromData(e->dpy, win->xwin, none_data, 8, 8); |
| 128 | 130 | | cnone = XCreatePixmapCursor(e->dpy, none, none, &col, &col, 0, 0); |
| 129 | 131 | | |
| 130 | | − | gcval.line_width = 2; |
| 131 | | − | gc = XCreateGC(e->dpy, win->xwin, GCLineWidth, &gcval); |
| 132 | + | gc = XCreateGC(e->dpy, win->xwin, 0, None); |
| 132 | 133 | | |
| 133 | 134 | | win_set_title(win, "sxiv"); |
| 134 | 135 | | |
| @@ -251,8 +252,8 @@ void win_clear(win_t *win) { |
| 251 | 252 | | return; |
| 252 | 253 | | |
| 253 | 254 | | e = &win->env; |
| 254 | | − | gcval.foreground = win->fullscreen ? BlackPixel(e->dpy, e->scr) : |
| 255 | | − | win->bgcol; |
| 255 | + | gcval.foreground = win->fullscreen ? win->black : win->bgcol; |
| 256 | + | |
| 256 | 257 | | if (win->pm) |
| 257 | 258 | | XFreePixmap(e->dpy, win->pm); |
| 258 | 259 | | win->pm = XCreatePixmap(e->dpy, win->xwin, e->scrw, e->scrh, e->depth); |
| @@ -266,22 +267,21 @@ void win_draw_pixmap(win_t *win, Pixmap pm, int x, int y, int w, int h) { |
| 266 | 267 | | XCopyArea(win->env.dpy, pm, win->pm, gc, 0, 0, w, h, x, y); |
| 267 | 268 | | } |
| 268 | 269 | | |
| 269 | | − | void win_draw_rect(win_t *win, int x, int y, int w, int h, Bool sel) { |
| 270 | | − | win_env_t *e; |
| 270 | + | void win_draw_rect(win_t *win, Pixmap pm, int x, int y, int w, int h, |
| 271 | + | Bool fill, int lw, unsigned long col) { |
| 271 | 272 | | XGCValues gcval; |
| 272 | 273 | | |
| 273 | | − | if (!win) |
| 274 | + | if (!win || !pm) |
| 274 | 275 | | return; |
| 275 | 276 | | |
| 276 | | − | e = &win->env; |
| 277 | + | gcval.line_width = lw; |
| 278 | + | gcval.foreground = col; |
| 279 | + | XChangeGC(win->env.dpy, gc, GCForeground | GCLineWidth, &gcval); |
| 277 | 280 | | |
| 278 | | − | if (sel) |
| 279 | | − | gcval.foreground = win->selcol; |
| 281 | + | if (fill) |
| 282 | + | XFillRectangle(win->env.dpy, pm, gc, x, y, w, h); |
| 280 | 283 | | else |
| 281 | | − | gcval.foreground = win->fullscreen ? BlackPixel(e->dpy, e->scr) : |
| 282 | | − | win->bgcol; |
| 283 | | − | XChangeGC(e->dpy, gc, GCForeground, &gcval); |
| 284 | | − | XDrawRectangle(e->dpy, win->pm, gc, x, y, w, h); |
| 284 | + | XDrawRectangle(win->env.dpy, pm, gc, x, y, w, h); |
| 285 | 285 | | } |
| 286 | 286 | | |
| 287 | 287 | | void win_draw(win_t *win) { |