X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3-nagbar%2Fmain.c;h=1dbd77369b28a184a07ccd7973f1e0443dc57e06;hb=6f8b2845863e9071d7d630b270729d46423c1eb5;hp=70ded8d8a0b2250e4c412081b8eb0e371569f3a0;hpb=726f2a1e5a6e6567b3c880277986b9d1d7bca931;p=i3%2Fi3 diff --git a/i3-nagbar/main.c b/i3-nagbar/main.c index 70ded8d8..1dbd7736 100644 --- a/i3-nagbar/main.c +++ b/i3-nagbar/main.c @@ -41,7 +41,7 @@ static xcb_pixmap_t pixmap; static xcb_gcontext_t pixmap_gc; static xcb_rectangle_t rect = { 0, 0, 600, 20 }; static i3Font font; -static char *prompt = "Please do not run this program."; +static char *prompt; static button_t *buttons; static int buttoncnt; @@ -131,17 +131,15 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) { xcb_poly_fill_rectangle(conn, pixmap, pixmap_gc, 1, &rect); /* restore font color */ - uint32_t values[3]; - values[0] = color_text; - values[1] = color_background; - xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, values); - xcb_image_text_8(conn, strlen(prompt), pixmap, pixmap_gc, 4 + 4/* X */, - font.height + 2 + 4 /* Y = baseline of font */, prompt); + set_font_colors(pixmap_gc, color_text, color_background); + draw_text(prompt, strlen(prompt), false, pixmap, pixmap_gc, + 4 + 4, 4 + 4, rect.width - 4 - 4); /* render close button */ int line_width = 4; int w = 20; int y = rect.width; + uint32_t values[3]; values[0] = color_button_background; values[1] = line_width; xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_LINE_WIDTH, values); @@ -159,12 +157,10 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) { }; xcb_poly_line(conn, XCB_COORD_MODE_ORIGIN, pixmap, pixmap_gc, 5, points); - values[0] = color_text; - values[1] = color_button_background; - values[2] = 1; - xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_LINE_WIDTH, values); - xcb_image_text_8(conn, strlen("x"), pixmap, pixmap_gc, y - w - line_width + (w / 2) - 4/* X */, - font.height + 2 + 4 - 1/* Y = baseline of font */, "X"); + values[0] = 1; + set_font_colors(pixmap_gc, color_text, color_button_background); + draw_text("X", 1, false, pixmap, pixmap_gc, y - w - line_width + w / 2 - 4, + 4 + 4 - 1, rect.width - y + w + line_width - w / 2 + 4); y -= w; y -= 20; @@ -193,9 +189,9 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) { values[0] = color_text; values[1] = color_button_background; - xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, values); - xcb_image_text_8(conn, strlen(buttons[c].label), pixmap, pixmap_gc, y - w - line_width + 6/* X */, - font.height + 2 + 3/* Y = baseline of font */, buttons[c].label); + set_font_colors(pixmap_gc, color_text, color_button_background); + draw_text(buttons[c].label, strlen(buttons[c].label), false, pixmap, pixmap_gc, + y - w - line_width + 6, 4 + 3, rect.width - y + w + line_width - 6); y -= w; } @@ -220,7 +216,7 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) { } int main(int argc, char *argv[]) { - char *pattern = "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"; + char *pattern = strdup("-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"); int o, option_index = 0; enum { TYPE_ERROR = 0, TYPE_WARNING = 1 } bar_type = TYPE_ERROR; @@ -236,6 +232,8 @@ int main(int argc, char *argv[]) { char *options_string = "b:f:m:t:vh"; + prompt = strdup("Please do not run this program."); + while ((o = getopt_long(argc, argv, options_string, long_options, &option_index)) != -1) { switch (o) { case 'v': @@ -246,6 +244,7 @@ int main(int argc, char *argv[]) { pattern = strdup(optarg); break; case 'm': + FREE(prompt); prompt = strdup(optarg); break; case 't': @@ -253,7 +252,7 @@ int main(int argc, char *argv[]) { break; case 'h': printf("i3-nagbar " I3_VERSION "\n"); - printf("i3-nagbar [-m ] [-b