ply-console-viewer: Reorder the labels.

When there is less than 1 screenful of lines, the first line now appears at the top, more similar to a terminal emulator
This commit is contained in:
nerdopolis 2023-12-12 19:58:59 -05:00 committed by n3rdopolis
parent d0738917dd
commit df86c73414

View file

@ -132,7 +132,7 @@ update_console_messages (ply_console_viewer_t *console_viewer)
{
ply_list_node_t *node;
ply_label_t *console_message_label;
size_t message_number;
size_t message_number, number_of_messages, visible_line_count;
ssize_t characters_left;
ply_rich_text_span_t span;
@ -144,9 +144,18 @@ update_console_messages (ply_console_viewer_t *console_viewer)
if (console_viewer->display == NULL)
return;
message_number = ply_terminal_emulator_get_line_count (console_viewer->terminal_emulator) - 1;
visible_line_count = ply_list_get_length (console_viewer->message_labels);
if (message_number < 0)
number_of_messages = ply_terminal_emulator_get_line_count (console_viewer->terminal_emulator);
message_number = ply_terminal_emulator_get_line_count (console_viewer->terminal_emulator);
if (message_number < visible_line_count) {
message_number = 0;
} else {
message_number = number_of_messages - visible_line_count;
}
if (number_of_messages < 0)
return;
ply_pixel_display_pause_updates (console_viewer->display);
@ -193,10 +202,10 @@ update_console_messages (ply_console_viewer_t *console_viewer)
if (line != NULL)
ply_rich_text_drop_reference (line);
if (message_number <= 0)
break;
message_number++;
message_number--;
if (message_number >= number_of_messages)
break;
}
console_viewer->needs_redraw = true;
ply_pixel_display_draw_area (console_viewer->display, 0, 0,
@ -226,7 +235,7 @@ ply_console_viewer_show (ply_console_viewer_t *console_viewer,
console_message_label = ply_list_node_get_data (node);
ply_label_show (console_message_label, console_viewer->display,
console_viewer->font_width / 2,
(ply_pixel_display_get_height (console_viewer->display) - (console_viewer->font_height * label_index) - console_viewer->font_height));
console_viewer->font_height * label_index);
ply_label_set_hex_color (console_message_label, label_color);
label_index++;
}
@ -257,7 +266,7 @@ ply_console_viewer_draw_area (ply_console_viewer_t *console_viewer,
console_message_label = ply_list_node_get_data (node);
ply_label_draw_area (console_message_label, buffer,
MAX (x, console_viewer->font_width / 2),
MAX (y, (ply_pixel_display_get_height (console_viewer->display) - (console_viewer->font_height * label_index) - console_viewer->font_height)),
MAX (y, console_viewer->font_height * label_index),
MIN (ply_label_get_width (console_message_label), width),
MIN (height, console_viewer->font_height));
label_index++;