diff --git a/limine-pxe.bin b/limine-pxe.bin index 396e2d4c..1fbde1fe 100644 Binary files a/limine-pxe.bin and b/limine-pxe.bin differ diff --git a/limine.bin b/limine.bin index fc6c3d94..098bef8b 100644 Binary files a/limine.bin and b/limine.bin differ diff --git a/stage2.map b/stage2.map index b5f4804a..5882c063 100644 Binary files a/stage2.map and b/stage2.map differ diff --git a/stage2/menu.c b/stage2/menu.c index b39520b8..c21a2d81 100644 --- a/stage2/menu.c +++ b/stage2/menu.c @@ -23,12 +23,27 @@ static int print_tree(int level, int base_index, int selected_entry, for (;;) { if (current_entry == NULL) break; - for (int i = 0; i < level; i++) - print(" "); + if (level) { + for (int i = level - 1; i > 0; i--) { + struct menu_entry *actual_parent = current_entry; + for (int j = 0; j < i; j++) + actual_parent = actual_parent->parent; + if (actual_parent->next != NULL) + print(" | "); + else + print(" "); + } + if (current_entry->next == NULL) + print(" `-"); + else + print(" |-"); + } if (current_entry->sub) - print(current_entry->expanded ? "[-] " : "[+] "); + print(current_entry->expanded ? "[-]" : "[+]"); + else if (level) + print("-> "); else - print(" "); + print(" "); if (base_index + max_entries == selected_entry) { *selected_menu_entry = current_entry; print("\e[47m\e[30m");