seamus

commit b4343d7bd972b7ea6df6563e6c199dc9f9c28a2a

Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>

ui: render a colored indicator for the window tabs

 src/ui.c | 50 +++++++++++++++++++++++++++++++-------------------


diff --git a/src/ui.c b/src/ui.c
index e8e0d2d2ed996a6c185d9d769791d59787edfeb4..9b1d82f21a69a8de65e7849f5f5e3f91649d14ff 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -679,43 +679,55 @@ static int
 render_main_window_tabs(TickitWindow *win, TickitRenderBuffer *render_buffer,
 		struct seamus_frontend *seamus)
 {
-	const char *tab_queue = "[QUEUE \xe2\x97\x8f]";
-	const char *tab_library = "[LIBRARY]";
-	int active_is_queue = 1;
+	int active = seamus->current_window;
+	const char *names[2] = { "QUEUE", "LIBRARY" };
 
-	if (seamus->current_window == WINDOW_LIBRARY) {
-		tab_queue = "[QUEUE]";
-		tab_library = "[LIBRARY \xe2\x97\x8f]";
-		active_is_queue = 0;
+	int total = 0;
+	for (int i = 0; i < 2; i++) {
+		int w = strlen(names[i]) + 2;
+		if (i == active) w += 2;
+		total += w;
 	}
+	total += 1;
 
-	const char *tab[2] = { tab_queue, tab_library };
-	int total = strlen(tab[0]) + 1 + strlen(tab[1]);
 	int cols = tickit_window_cols(win);
 	int pad = (cols - total) / 2;
 	if (pad < 0) pad = 0;
 
 	tickit_renderbuffer_goto(render_buffer, 1, pad);
 
+	TickitPen *bold = tickit_pen_new_attrs(TICKIT_PEN_BOLD, 1, 0);
+	TickitPen *green = tickit_pen_new_attrs(
+		TICKIT_PEN_FG, 2,
+		TICKIT_PEN_BOLD, 1,
+		0);
+
 	for (int i = 0; i < 2; i++) {
-		int active = (i == 0 && active_is_queue) || (i == 1 && !active_is_queue);
+		if (i == active) {
+			tickit_renderbuffer_savepen(render_buffer);
+			tickit_renderbuffer_setpen(render_buffer, bold);
+			tickit_renderbuffer_text(render_buffer, "[");
+			tickit_renderbuffer_text(render_buffer, names[i]);
+			tickit_renderbuffer_text(render_buffer, " ");
+			tickit_renderbuffer_restore(render_buffer);
 
-		if (active) {
 			tickit_renderbuffer_savepen(render_buffer);
-			TickitPen *tab_pen = tickit_pen_new_attrs(
-					TICKIT_PEN_BOLD, 1,
-					0);
+			tickit_renderbuffer_setpen(render_buffer, green);
+			tickit_renderbuffer_text(render_buffer, "\xe2\x97\x8f");
+			tickit_renderbuffer_restore(render_buffer);
 
-			tickit_renderbuffer_setpen(render_buffer, tab_pen);
-			tickit_renderbuffer_text(render_buffer, tab[i]);
+			tickit_renderbuffer_savepen(render_buffer);
+			tickit_renderbuffer_setpen(render_buffer, bold);
+			tickit_renderbuffer_text(render_buffer, "]");
 			tickit_renderbuffer_restore(render_buffer);
 		} else {
-			tickit_renderbuffer_text(render_buffer, tab[i]);
+			tickit_renderbuffer_text(render_buffer, "[");
+			tickit_renderbuffer_text(render_buffer, names[i]);
+			tickit_renderbuffer_text(render_buffer, "]");
 		}
 
-		if (i == 0) {
+		if (i == 0)
 			tickit_renderbuffer_text(render_buffer, " ");
-		}
 	}
 
 	return 0;