uint32_t wa[3];
XRenderColor color;
- if (bar_font) {
- XftColorFree(display, DefaultVisual(display, r->s->idx),
- DefaultColormap(display, r->s->idx), &bar_font_color);
- XftFontClose(display, bar_font);
- bar_font = NULL;
- }
+ if (r->bar != NULL)
+ return;
if ((r->bar = calloc(1, sizeof(struct swm_bar))) == NULL)
err(1, "bar_setup: calloc: failed to allocate memory.");
- while ((font = strsep(&bar_fonts, " ,")) != NULL) {
- if (*font == '\0')
- continue;
+ if (bar_font == NULL) {
+ while ((font = strsep(&bar_fonts, ",")) != NULL) {
+ if (*font == '\0')
+ continue;
- DNPRINTF(SWM_D_INIT, "bar_setup: try font %s\n", font);
- bar_font = XftFontOpenName(display, r->s->idx, font);
- if (!bar_font) {
- warnx("unable to load font %s", font);
- continue;
- } else {
- DNPRINTF(SWM_D_INIT, "successfully opened font %s\n",
- font);
- break;
+ DNPRINTF(SWM_D_INIT, "bar_setup: try font %s\n", font);
+ bar_font = XftFontOpenName(display, r->s->idx, font);
+ if (!bar_font) {
+ warnx("unable to load font %s", font);
+ continue;
+ } else {
+ DNPRINTF(SWM_D_INIT, "successfully opened "
+ "font %s\n", font);
+ break;
+ }
}
}
+
if (bar_font == NULL)
errx(1, "unable to open a font");
wa[0] = r->s->c[SWM_S_COLOR_BAR].pixel;
wa[1] = r->s->c[SWM_S_COLOR_BAR_BORDER].pixel;
wa[2] = XCB_EVENT_MASK_EXPOSURE;
- DNPRINTF(SWM_D_BAR, "bar_setup: create_window: (x,y) w x h: (%d,%d) "
- "%d x %d\n", X(r->bar), Y(r->bar), WIDTH(r->bar), HEIGHT(r->bar));
+
xcb_create_window(conn, XCB_COPY_FROM_PARENT, r->bar->id, r->s->root,
X(r->bar), Y(r->bar), WIDTH(r->bar), HEIGHT(r->bar),
bar_border_width, XCB_WINDOW_CLASS_INPUT_OUTPUT,