From: nerdopolis Date: Wed, 13 Dec 2023 00:58:59 +0000 (-0500) Subject: ply-console-viewer: Reorder the labels. X-Git-Tag: 23.51.283~3^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df86c73414456afb6aee1bebd8bd9bfa3b33cc57;p=thirdparty%2Fplymouth.git 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 --- diff --git a/src/libply-splash-graphics/ply-console-viewer.c b/src/libply-splash-graphics/ply-console-viewer.c index 07de4b48..86c99598 100644 --- a/src/libply-splash-graphics/ply-console-viewer.c +++ b/src/libply-splash-graphics/ply-console-viewer.c @@ -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++;