Single text draw call

This commit is contained in:
Willy-JL
2025-01-17 00:39:37 +00:00
parent 9f464e4a29
commit 3bbe30449b

View File

@@ -64,9 +64,13 @@ static void archive_update_formatted_path(ArchiveBrowserViewModel* model) {
return;
}
ArchiveTabEnum tab = archive_get_tab(browser);
if(momentum_settings.browser_path_mode == BrowserPathOff || archive_is_home(browser)) {
furi_string_set(browser->formatted_path, ArchiveTabNames[tab]);
if(model->tab_idx == ArchiveTabSearch &&
scene_manager_get_scene_state(model->archive->scene_manager, ArchiveAppSceneSearch)) {
furi_string_set(browser->formatted_path, "Searching");
} else if(momentum_settings.browser_path_mode == BrowserPathOff || archive_is_home(browser)) {
furi_string_set(browser->formatted_path, ArchiveTabNames[model->tab_idx]);
} else {
const char* path = furi_string_get_cstr(browser->path);
switch(momentum_settings.browser_path_mode) {
@@ -328,14 +332,7 @@ static void draw_list(Canvas* canvas, ArchiveBrowserViewModel* model) {
static void archive_render_status_bar(Canvas* canvas, ArchiveBrowserViewModel* model) {
furi_assert(model);
const char* tab_name = ArchiveTabNames[model->tab_idx];
if(model->tab_idx == ArchiveTabSearch &&
scene_manager_get_scene_state(model->archive->scene_manager, ArchiveAppSceneSearch)) {
tab_name = "Searching";
} else {
archive_update_formatted_path(model);
tab_name = furi_string_get_cstr(model->archive->browser->formatted_path);
}
archive_update_formatted_path(model);
bool clip = model->clipboard != NULL;
canvas_draw_icon(canvas, 0, 0, &I_Background_128x11);
@@ -349,20 +346,15 @@ static void archive_render_status_bar(Canvas* canvas, ArchiveBrowserViewModel* m
canvas_draw_rframe(canvas, 0, 0, 51, 13, 1); // frame
canvas_draw_line(canvas, 49, 1, 49, 11); // shadow right
canvas_draw_line(canvas, 1, 11, 49, 11); // shadow bottom
size_t text_width = canvas_string_width(canvas, tab_name);
if(text_width > 45) {
elements_scrollable_text_line(
canvas,
3,
9,
45,
model->archive->browser->formatted_path,
model->scroll_counter,
false);
} else {
canvas_draw_str_aligned(canvas, 25, 9, AlignCenter, AlignBottom, tab_name);
}
elements_scrollable_text_line_centered(
canvas,
25,
9,
45,
model->archive->browser->formatted_path,
model->scroll_counter,
false,
true);
if(clip) {
canvas_draw_rframe(canvas, 69, 0, 25, 13, 1);