diff --git a/docs/changelog.rst b/docs/changelog.rst index 436ac3025..1179c7c70 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -73,6 +73,8 @@ Changelog - Linux: Fix fonts not being correctly read from TrueType Collection (.ttc) files (:iss:`577`) +- Fix :opt:`inactive_text_alpha` also applying to the tab bar (:iss:`612`) + - :doc:`hints kitten `: Fix a regression that caused some blank lines to be not be displayed. diff --git a/kitty/child-monitor.c b/kitty/child-monitor.c index de027f5a2..c2aa04e89 100644 --- a/kitty/child-monitor.c +++ b/kitty/child-monitor.c @@ -604,12 +604,12 @@ render_os_window(OSWindow *os_window, double now, unsigned int active_window_id, Tab *tab = os_window->tabs + os_window->active_tab; BorderRects *br = &tab->border_rects; draw_borders(br->vao_idx, br->num_border_rects, br->rect_buf, br->is_dirty, os_window->viewport_width, os_window->viewport_height, active_window_bg, num_visible_windows, os_window); - if (TD.screen && os_window->num_tabs > 1) draw_cells(TD.vao_idx, 0, TD.xstart, TD.ystart, TD.dx, TD.dy, TD.screen, os_window, true); + if (TD.screen && os_window->num_tabs > 1) draw_cells(TD.vao_idx, 0, TD.xstart, TD.ystart, TD.dx, TD.dy, TD.screen, os_window, true, false); for (unsigned int i = 0; i < tab->num_windows; i++) { Window *w = tab->windows + i; if (w->visible && WD.screen) { bool is_active_window = i == tab->active_window; - draw_cells(WD.vao_idx, WD.gvao_idx, WD.xstart, WD.ystart, WD.dx, WD.dy, WD.screen, os_window, is_active_window); + draw_cells(WD.vao_idx, WD.gvao_idx, WD.xstart, WD.ystart, WD.dx, WD.dy, WD.screen, os_window, is_active_window, true); if (is_active_window && WD.screen->cursor_render_info.is_visible && (!WD.screen->cursor_render_info.is_focused || WD.screen->cursor_render_info.shape != CURSOR_BLOCK)) { draw_cursor(&WD.screen->cursor_render_info, os_window->is_focused); } diff --git a/kitty/shaders.c b/kitty/shaders.c index 874c70717..ded8ddef2 100644 --- a/kitty/shaders.c +++ b/kitty/shaders.c @@ -435,7 +435,7 @@ send_cell_data_to_gpu(ssize_t vao_idx, ssize_t gvao_idx, GLfloat xstart, GLfloat } void -draw_cells(ssize_t vao_idx, ssize_t gvao_idx, GLfloat xstart, GLfloat ystart, GLfloat dx, GLfloat dy, Screen *screen, OSWindow *os_window, bool is_active_window) { +draw_cells(ssize_t vao_idx, ssize_t gvao_idx, GLfloat xstart, GLfloat ystart, GLfloat dx, GLfloat dy, Screen *screen, OSWindow *os_window, bool is_active_window, bool can_be_focused) { CELL_BUFFERS; bool inverted = screen_invert_colors(screen); @@ -444,7 +444,7 @@ draw_cells(ssize_t vao_idx, ssize_t gvao_idx, GLfloat xstart, GLfloat ystart, GL bind_vao_uniform_buffer(vao_idx, uniform_buffer, cell_program_layouts[CELL_PROGRAM].render_data.index); bind_vertex_array(vao_idx); - float current_inactive_text_alpha = screen->cursor_render_info.is_focused && is_active_window ? 1.0 : OPT(inactive_text_alpha); + float current_inactive_text_alpha = (!can_be_focused || screen->cursor_render_info.is_focused) && is_active_window ? 1.0 : OPT(inactive_text_alpha); set_cell_uniforms(current_inactive_text_alpha); GLfloat w = (GLfloat)screen->columns * dx, h = (GLfloat)screen->lines * dy; #define SCALE(w, x) ((GLfloat)(os_window->viewport_##w) * (GLfloat)(x)) diff --git a/kitty/state.h b/kitty/state.h index 1f538f808..ae77cdcb8 100644 --- a/kitty/state.h +++ b/kitty/state.h @@ -179,7 +179,7 @@ ssize_t create_cell_vao(); ssize_t create_graphics_vao(); ssize_t create_border_vao(); bool send_cell_data_to_gpu(ssize_t, ssize_t, float, float, float, float, Screen *, OSWindow *); -void draw_cells(ssize_t, ssize_t, float, float, float, float, Screen *, OSWindow *, bool); +void draw_cells(ssize_t, ssize_t, float, float, float, float, Screen *, OSWindow *, bool, bool); void draw_cursor(CursorRenderInfo *, bool); void update_surface_size(int, int, uint32_t); void free_texture(uint32_t*);