fix: Disks app UI elements, file manager list view rendering
This commit is contained in:
@@ -353,8 +353,31 @@ void filemanager_on_draw(Window* win, Framebuffer& fb) {
|
||||
int cx = tx + text_width(prefix);
|
||||
c.vline(cx, ty, fm_sfh, colors::ACCENT);
|
||||
} else {
|
||||
if (ty >= list_y && ty + fm_sfh <= c.h)
|
||||
c.text(tx, ty, fm->entry_names[i], colors::TEXT_COLOR);
|
||||
if (ty >= list_y && ty + fm_sfh <= c.h) {
|
||||
// Truncate name to fit the name column width
|
||||
const char* name = fm->entry_names[i];
|
||||
int name_max_w = size_col_x - tx - 8;
|
||||
if (name_max_w < 20) name_max_w = c.w - FM_SCROLLBAR_W - tx - 8;
|
||||
char label[64];
|
||||
montauk::strncpy(label, name, 63);
|
||||
|
||||
if (text_width(label) > name_max_w && montauk::slen(name) > 3) {
|
||||
int ellipsis_w = text_width("...");
|
||||
int final_len = montauk::slen(name);
|
||||
while (final_len > 1) {
|
||||
label[final_len] = '\0';
|
||||
int w = text_width(label);
|
||||
if (w + ellipsis_w <= name_max_w) break;
|
||||
final_len--;
|
||||
}
|
||||
if (final_len > 60) final_len = 60;
|
||||
label[final_len] = '.';
|
||||
label[final_len + 1] = '.';
|
||||
label[final_len + 2] = '.';
|
||||
label[final_len + 3] = '\0';
|
||||
}
|
||||
c.text(tx, ty, label, colors::TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
|
||||
// Size
|
||||
|
||||
Reference in New Issue
Block a user