From 5100257c186d52ffb61fe26e302ec7205f291599 Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 7 Sep 2023 22:14:59 -0400 Subject: fix issue where selector detail is cut off --- main.c | 1 - node.c | 2 +- ted.cfg | 2 ++ text.c | 18 ++++++++---------- ui.c | 6 +++--- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/main.c b/main.c index 5791ad2..595d4c5 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,5 @@ /* TODO: -- LSP diagnostics - gdscript syntax highlighting FUTURE FEATURES: - autodetect indentation (tabs vs spaces) diff --git a/node.c b/node.c index aaa730f..8f4e6ae 100644 --- a/node.c +++ b/node.c @@ -404,7 +404,7 @@ void node_frame(Ted *ted, Node *node, Rect r) { float title_xpos = tab_rect.pos.x; if (title_width > tab_rect.size.x) { // full tab title doesn't fit in tab -- only show the right end of it - title_xpos = tab_rect.pos.x + tab_rect.size.x - title_width; + title_xpos = floorf(tab_rect.pos.x + tab_rect.size.x - title_width); } text_state.min_x = rect_x1(tab_rect); text_state.max_x = rect_x2(tab_rect); diff --git a/ted.cfg b/ted.cfg index fc71207..b639182 100644 --- a/ted.cfg +++ b/ted.cfg @@ -81,6 +81,8 @@ highlight-enabled = yes highlight-key = F2 # don't require F2 key for highlighting highlight-auto = no +# whether or not to show LSP diagnostics (warnings and errors) +show-diagnostics = yes # maximum editable file size. # ted will set the buffer to view-only if a file larger than this is loaded. # NOTE: ted is not really meant for absolutely massive files. diff --git a/text.c b/text.c index 8b4e38f..b913eb1 100644 --- a/text.c +++ b/text.c @@ -436,20 +436,20 @@ top:; s0 = (min_x-x0) / (x1-x0) * (s1-s0) + s0; x0 = min_x; } - if (x1 >= max_x) { + if (x1 > max_x) { // right side of character is clipped - s1 = (max_x-1-x0) / (x1-x0) * (s1-s0) + s0; - x1 = max_x-1; + s1 = (max_x-x0) / (x1-x0) * (s1-s0) + s0; + x1 = max_x; } if (y0 < min_y) { // top side of character is clipped t0 = (min_y-y0) / (y1-y0) * (t1-t0) + t0; y0 = min_y; } - if (y1 >= max_y) { + if (y1 > max_y) { // bottom side of character is clipped - t1 = (max_y-1-y0) / (y1-y0) * (t1-t0) + t0; - y1 = max_y-1; + t1 = (max_y-y0) / (y1-y0) * (t1-t0) + t0; + y1 = max_y; } if (state->render) { float r = state->color[0], g = state->color[1], b = state->color[2], a = state->color[3]; @@ -463,10 +463,8 @@ top:; arr_add(font->textures[info.texture].triangles, triangle2); } ret: - if (state->x > state->x_largest) - state->x_largest = state->x; - if (state->y > state->y_largest) - state->y_largest = state->y; + state->x_largest = maxd(state->x, state->x_largest); + state->y_largest = maxd(state->y, state->y_largest); state->prev_glyph = info.glyph_index; } diff --git a/ui.c b/ui.c index 3dd7875..21ba7ab 100644 --- a/ui.c +++ b/ui.c @@ -310,7 +310,6 @@ void selector_render(Ted *ted, Selector *s) { text_state.max_x = x2; text_state.min_y = selector_entries_start_y(ted, s); text_state.max_y = y2; - text_state.render = true; // render entries themselves u32 i_display = 0; @@ -336,11 +335,12 @@ void selector_render(Ted *ted, Selector *s) { if (entry->detail) { // draw detail - float detail_size = text_get_size_vec2(font, entry->detail).x; + const float detail_size = text_get_size_vec2(font, entry->detail).x; TextRenderState detail_state = text_state; - detail_state.x = maxd(text_state.x + 2 * padding, x2 - detail_size); + detail_state.x = floor(maxd(text_state.x + 2 * padding, detail_state.max_x - detail_size)); settings_color_floats(settings, COLOR_COMMENT, detail_state.color); + text_state_break_kerning(&detail_state); text_utf8_with_state(font, &detail_state, entry->detail); } } -- cgit v1.2.3