gui: add fill type and parent params to fill nodes
What changed, and why it matters
This commit is a straightforward internal cleanup of the user-interface drawing code for the Blockstream Jade hardware wallet. It changes how solid-color background boxes (called 'fill nodes') are created so callers can specify a fill style and parent container in one function call instead of two. There is no indication this fixes or introduces any security issue.
No security action required. Treat as a normal code-quality / maintainability refactor.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch refactors gui_make_fill() to accept two additional parameters: an enum fill_node_kind (FILL_PLAIN, FILL_HIGHLIGHT, FILL_QR) and an optional parent gui_view_node_t. The new parent parameter lets callers combine node creation and gui_set_parent() into one call, which is applied consistently across the codebase. A fill_type field is added to struct view_node_fill_data. All existing call sites are updated to pass FILL_PLAIN (or FILL_HIGHLIGHT/FILL_QR where semantically appropriate) and the intended parent. No logic handling secrets, cryptography, memory bounds, or user input is changed.
Changed components
main/gui.cmain/gui.hmain/smoketest.cmain/ui/dashboard.cmain/ui/dialogs.cmain/ui/keyboard.cmain/ui/mnemonic.cmain/ui/otpauth.cmain/ui/pin.cmain/ui/qrmode.cInspect captured patch +66 / −108
diff --git a/main/gui.c b/main/gui.c
index de167db..888718d 100644
--- a/main/gui.c
+++ b/main/gui.c
@@ -128,11 +128,11 @@ static void make_status_bar(void)
enum gui_horizontal_align name_alignment = GUI_ALIGN_CENTER;
// Black fill background as the root node
- gui_make_fill(&status_bar.root, TFT_BLACK);
+ gui_make_fill(&status_bar.root, TFT_BLACK, FILL_PLAIN, NULL);
status_bar.root->parent = NULL;
gui_view_node_t* name_parent;
- gui_make_fill(&name_parent, TFT_BLACK);
+ gui_make_fill(&name_parent, TFT_BLACK, FILL_PLAIN, NULL);
// Status bar logo image (size appropriate)
const Picture* const logopic = get_picture(statusbar_logo_start, statusbar_logo_end);
@@ -686,7 +686,7 @@ void gui_make_activity_ex(gui_activity_t** ppact, const bool has_status_bar, con
}
gui_view_node_t* bg;
- gui_make_fill(&bg, TFT_BLACK);
+ gui_make_fill(&bg, TFT_BLACK, FILL_PLAIN, NULL);
activity->root_node = bg;
activity->root_node->activity = activity;
#ifdef CONFIG_UI_WRAP_ALL_MENUS
@@ -1070,7 +1070,7 @@ void gui_make_button(
make_view_node(ptr, BUTTON, data, NULL);
}
-void gui_make_fill(gui_view_node_t** ptr, color_t color)
+void gui_make_fill(gui_view_node_t** ptr, color_t color, enum fill_node_kind fill_type, gui_view_node_t* parent)
{
JADE_INIT_OUT_PPTR(ptr);
@@ -1079,8 +1079,12 @@ void gui_make_fill(gui_view_node_t** ptr, color_t color)
// by default same color
data->color = color;
data->selected_color = color;
+ data->fill_type = fill_type;
make_view_node(ptr, FILL, data, NULL);
+ if (parent) {
+ gui_set_parent(*ptr, parent);
+ }
}
void gui_make_text(gui_view_node_t** ptr, const char* text, color_t color)
diff --git a/main/gui.h b/main/gui.h
index 359e755..481e3e0 100644
--- a/main/gui.h
+++ b/main/gui.h
@@ -200,10 +200,13 @@ struct view_node_split_data {
uint8_t parts;
};
+enum __attribute__((__packed__)) fill_node_kind { FILL_PLAIN, FILL_HIGHLIGHT, FILL_QR };
+
// Data for a "fill" node
struct view_node_fill_data {
color_t color;
color_t selected_color;
+ enum fill_node_kind fill_type;
};
// Data appended to a text node when it's scrolling
@@ -422,7 +425,7 @@ void gui_chain_activities(const link_activity_t* link_act, linked_activities_inf
void gui_make_hsplit(gui_view_node_t** ptr, enum gui_split_type kind, uint8_t parts, ...);
void gui_make_vsplit(gui_view_node_t** ptr, enum gui_split_type kind, uint8_t parts, ...);
void gui_make_button(gui_view_node_t** ptr, color_t color, color_t selected_color, uint32_t event_id, void* args);
-void gui_make_fill(gui_view_node_t** ptr, color_t color);
+void gui_make_fill(gui_view_node_t** ptr, color_t color, enum fill_node_kind fill_type, gui_view_node_t* parent);
void gui_make_text(gui_view_node_t** ptr, const char* text, color_t color);
void gui_make_text_font(gui_view_node_t** ptr, const char* text, color_t color, uint32_t font);
void gui_make_icon(gui_view_node_t** ptr, const Icon* icon, color_t color, const color_t* bg_color);
diff --git a/main/smoketest.c b/main/smoketest.c
index 51872db..abc186a 100644
--- a/main/smoketest.c
+++ b/main/smoketest.c
@@ -29,9 +29,8 @@ static void check_template(gui_activity_t** act, const char* title, const char*
// Main area, scrolling horizontal menu
gui_view_node_t* node;
- gui_make_fill(&node, color);
+ gui_make_fill(&node, color, FILL_PLAIN, vsplit);
gui_set_padding(node, GUI_MARGIN_ALL_DIFFERENT, 20, 0, 20, 0);
- gui_set_parent(node, vsplit);
// l-arrow, item-txt, r-arrow
gui_view_node_t* hsplit;
@@ -43,8 +42,7 @@ static void check_template(gui_activity_t** act, const char* title, const char*
gui_set_parent(node, hsplit);
gui_view_node_t* item_text;
- gui_make_fill(&node, color);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, color, FILL_PLAIN, hsplit);
gui_make_text_font(&item_text, message, TFT_WHITE, GUI_DEFAULT_FONT);
gui_set_align(item_text, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
gui_set_parent(item_text, node);
@@ -58,22 +56,19 @@ static void check_template(gui_activity_t** act, const char* title, const char*
gui_set_parent(hsplit, vsplit);
gui_view_node_t* status_light;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&status_light, "M", TFT_DARKGREY, JADE_SYMBOLS_16x16_FONT);
gui_set_align(status_light, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_padding(status_light, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 2);
gui_set_parent(status_light, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_text, "", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*status_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(*status_text, node);
gui_view_node_t* label;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&label, "TEST", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(label, GUI_ALIGN_RIGHT, GUI_ALIGN_MIDDLE);
gui_set_padding(label, GUI_MARGIN_ALL_DIFFERENT, 0, 2, 0, 0);
@@ -94,15 +89,13 @@ static void check_template_display(gui_activity_t** act, const char* title, gui_
// Main area, line one
gui_view_node_t* node;
- gui_make_fill(&node, color);
+ gui_make_fill(&node, color, FILL_PLAIN, vsplit);
gui_set_padding(node, GUI_MARGIN_ALL_DIFFERENT, 5, 0, 5, 0);
- gui_set_parent(node, vsplit);
// Main area, line two
gui_view_node_t* node2;
- gui_make_fill(&node2, color);
+ gui_make_fill(&node2, color, FILL_PLAIN, vsplit);
gui_set_padding(node2, GUI_MARGIN_ALL_DIFFERENT, 5, 0, 5, 0);
- gui_set_parent(node2, vsplit);
// just one line
gui_make_text_font(item_text, "", TFT_WHITE, GUI_TITLE_FONT);
@@ -120,22 +113,19 @@ static void check_template_display(gui_activity_t** act, const char* title, gui_
gui_set_parent(hsplit, vsplit);
gui_view_node_t* status_light;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&status_light, "M", TFT_DARKGREY, JADE_SYMBOLS_16x16_FONT);
gui_set_align(status_light, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_padding(status_light, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 2);
gui_set_parent(status_light, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_text, "", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*status_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(*status_text, node);
gui_view_node_t* label;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&label, "TEST", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(label, GUI_ALIGN_RIGHT, GUI_ALIGN_MIDDLE);
gui_set_padding(label, GUI_MARGIN_ALL_DIFFERENT, 0, 2, 0, 0);
@@ -156,15 +146,13 @@ static void check_template_two(gui_activity_t** act, const char* title, const ch
// Main area, line one
gui_view_node_t* node;
- gui_make_fill(&node, color);
+ gui_make_fill(&node, color, FILL_PLAIN, vsplit);
gui_set_padding(node, GUI_MARGIN_ALL_DIFFERENT, 5, 0, 5, 0);
- gui_set_parent(node, vsplit);
// Main area, line two
gui_view_node_t* node2;
- gui_make_fill(&node2, color);
+ gui_make_fill(&node2, color, FILL_PLAIN, vsplit);
gui_set_padding(node2, GUI_MARGIN_ALL_DIFFERENT, 5, 0, 5, 0);
- gui_set_parent(node2, vsplit);
// just one line
gui_view_node_t* item_text;
@@ -184,22 +172,19 @@ static void check_template_two(gui_activity_t** act, const char* title, const ch
gui_set_parent(hsplit, vsplit);
gui_view_node_t* status_light;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&status_light, "M", TFT_DARKGREY, JADE_SYMBOLS_16x16_FONT);
gui_set_align(status_light, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_padding(status_light, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 2);
gui_set_parent(status_light, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_text, "", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*status_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(*status_text, node);
gui_view_node_t* label;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&label, "TEST", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(label, GUI_ALIGN_RIGHT, GUI_ALIGN_MIDDLE);
gui_set_padding(label, GUI_MARGIN_ALL_DIFFERENT, 0, 2, 0, 0);
@@ -220,21 +205,18 @@ static void check_template_three(gui_activity_t** act, const char* title, const
// Main area, line one
gui_view_node_t* node;
- gui_make_fill(&node, color);
+ gui_make_fill(&node, color, FILL_PLAIN, vsplit);
gui_set_padding(node, GUI_MARGIN_ALL_DIFFERENT, 2, 0, 2, 0);
- gui_set_parent(node, vsplit);
// Main area, line two
gui_view_node_t* node2;
- gui_make_fill(&node2, color);
+ gui_make_fill(&node2, color, FILL_PLAIN, vsplit);
gui_set_padding(node2, GUI_MARGIN_ALL_DIFFERENT, 2, 0, 2, 0);
- gui_set_parent(node2, vsplit);
// Main area, line threee
gui_view_node_t* node3;
- gui_make_fill(&node3, color);
+ gui_make_fill(&node3, color, FILL_PLAIN, vsplit);
gui_set_padding(node3, GUI_MARGIN_ALL_DIFFERENT, 2, 0, 2, 0);
- gui_set_parent(node3, vsplit);
// just one line
gui_view_node_t* item_text;
@@ -260,22 +242,19 @@ static void check_template_three(gui_activity_t** act, const char* title, const
gui_set_parent(hsplit, vsplit);
gui_view_node_t* status_light;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&status_light, "M", TFT_DARKGREY, JADE_SYMBOLS_16x16_FONT);
gui_set_align(status_light, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_padding(status_light, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 2);
gui_set_parent(status_light, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_text, "", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*status_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(*status_text, node);
gui_view_node_t* label;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(&label, "TEST", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(label, GUI_ALIGN_RIGHT, GUI_ALIGN_MIDDLE);
gui_set_padding(label, GUI_MARGIN_ALL_DIFFERENT, 0, 2, 0, 0);
diff --git a/main/ui/dashboard.c b/main/ui/dashboard.c
index 9d19aed..01feea2 100644
--- a/main/ui/dashboard.c
+++ b/main/ui/dashboard.c
@@ -32,16 +32,14 @@ static gui_view_node_t* make_home_screen_panel_item(const color_t color, home_me
gui_make_vsplit(&item, GUI_SPLIT_RELATIVE, 2, HOME_SCREEN_DEEP_STATUS_BAR ? 55 : 65, GUI_SPLIT_FILL_REMAINING);
// Top row, the symbol and label text
- gui_make_fill(&fill, color);
- gui_set_parent(fill, item);
+ gui_make_fill(&fill, color, FILL_PLAIN, item);
gui_make_text_font(&entry->symbol, "", TFT_WHITE, JADE_SYMBOLS_24x24_FONT);
gui_set_padding(entry->symbol, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 8);
gui_set_align(entry->symbol, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(entry->symbol, fill);
// Second row, label text
- gui_make_fill(&fill, color);
- gui_set_parent(fill, item);
+ gui_make_fill(&fill, color, FILL_PLAIN, item);
gui_make_text_font(&entry->text, "", TFT_WHITE, HOME_SCREEN_DEEP_STATUS_BAR ? DEJAVU24_FONT : GUI_DEFAULT_FONT);
gui_set_padding(entry->text, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 8);
gui_set_align(entry->text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
@@ -96,21 +94,18 @@ gui_activity_t* make_home_screen_activity(const char* device_name, const char* f
gui_make_hsplit(&hsplit, GUI_SPLIT_RELATIVE, 3, 9, 44, 47);
gui_set_parent(hsplit, vsplit);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_light, "M", TFT_DARKGREY, JADE_SYMBOLS_16x16_FONT);
gui_set_align(*status_light, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_padding(*status_light, GUI_MARGIN_ALL_DIFFERENT, 0, 0, 0, 2);
gui_set_parent(*status_light, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(status_text, "", TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*status_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
gui_set_parent(*status_text, node);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(label, firmware_version, TFT_WHITE, GUI_TITLE_FONT);
gui_set_align(*label, GUI_ALIGN_RIGHT, GUI_ALIGN_MIDDLE);
gui_set_padding(*label, GUI_MARGIN_ALL_DIFFERENT, 0, 2, 0, 0);
diff --git a/main/ui/dialogs.c b/main/ui/dialogs.c
index 701063a..e9d437b 100644
--- a/main/ui/dialogs.c
+++ b/main/ui/dialogs.c
@@ -154,12 +154,12 @@ void populate_title_bar(
if (title_node) {
*title_node = titlenode;
- gui_make_fill(&titlenode, TFT_BLACK);
+ gui_make_fill(&titlenode, TFT_BLACK, FILL_PLAIN, NULL);
gui_set_parent(*title_node, titlenode);
}
} else {
// No title, just a blank space
- gui_make_fill(&titlenode, TFT_BLACK);
+ gui_make_fill(&titlenode, TFT_BLACK, FILL_PLAIN, NULL);
}
if (!num_btns) {
@@ -575,8 +575,7 @@ gui_activity_t* make_carousel_activity(const char* title, gui_view_node_t** labe
gui_set_parent(vsplit, parent);
// Updateable label
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, vsplit);
gui_make_text(label, "", TFT_WHITE);
gui_set_padding(*label, GUI_MARGIN_ALL_DIFFERENT, 0, 8, 0, 0);
@@ -586,13 +585,11 @@ gui_activity_t* make_carousel_activity(const char* title, gui_view_node_t** labe
gui_make_vsplit(&vsplit, GUI_SPLIT_RELATIVE, 3, 25, 35, 40);
gui_set_parent(vsplit, parent);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, vsplit);
}
// Background fill
- gui_make_fill(&node, gui_get_highlight_color());
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, gui_get_highlight_color(), FILL_HIGHLIGHT, vsplit);
gui_view_node_t* hsplit;
gui_make_hsplit(&hsplit, GUI_SPLIT_RELATIVE, 3, 10, 80, 10);
@@ -604,8 +601,7 @@ gui_activity_t* make_carousel_activity(const char* title, gui_view_node_t** labe
gui_set_parent(node, hsplit);
// Updateable carousel item
- gui_make_fill(&node, gui_get_highlight_color());
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, gui_get_highlight_color(), FILL_HIGHLIGHT, hsplit);
gui_make_text(item, "", TFT_WHITE);
gui_set_align(*item, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
@@ -655,8 +651,8 @@ void make_progress_bar(gui_view_node_t* parent, progress_bar_t* progress_bar)
gui_make_vsplit(&progress_bar->container, GUI_SPLIT_RELATIVE, 1, 100);
gui_make_vsplit(&progress_bar->progress_bar, GUI_SPLIT_RELATIVE, 1, 100);
} else {
- gui_make_fill(&progress_bar->container, TFT_BLACK);
- gui_make_fill(&progress_bar->progress_bar, TFT_BLACK);
+ gui_make_fill(&progress_bar->container, TFT_BLACK, FILL_PLAIN, NULL);
+ gui_make_fill(&progress_bar->progress_bar, TFT_BLACK, FILL_PLAIN, NULL);
}
gui_set_borders(progress_bar->container, TFT_WHITE, 2, GUI_BORDER_ALL);
@@ -699,8 +695,7 @@ gui_activity_t* make_progress_bar_activity(const char* title, const char* messag
gui_set_align(node, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
progress_bar->pcnt_txt = node;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, vsplit);
gui_set_parent(progress_bar->pcnt_txt, node);
diff --git a/main/ui/keyboard.c b/main/ui/keyboard.c
index 12a1aa3..892d388 100644
--- a/main/ui/keyboard.c
+++ b/main/ui/keyboard.c
@@ -25,8 +25,7 @@ static void make_keyboard_screen(link_activity_t* kb_screen_activity, const char
// first row, message
gui_view_node_t* text_bg;
- gui_make_fill(&text_bg, TFT_BLACK);
- gui_set_parent(text_bg, vsplit);
+ gui_make_fill(&text_bg, TFT_BLACK, FILL_PLAIN, vsplit);
gui_view_node_t* entered_phrase;
gui_make_text_font(&entered_phrase, "", TFT_WHITE, UBUNTU16_FONT);
@@ -104,8 +103,7 @@ static void make_keyboard_screen(link_activity_t* kb_screen_activity, const char
if (!has_shift_btn && btn_ev_id == BTN_KEYBOARD_SHIFT) {
// No shift/next-kb button - just use blank/filler
gui_view_node_t* filler;
- gui_make_fill(&filler, TFT_BLACK);
- gui_set_parent(filler, hsplit);
+ gui_make_fill(&filler, TFT_BLACK, FILL_PLAIN, hsplit);
} else {
// Keyboard button as normal
gui_view_node_t* btn;
diff --git a/main/ui/mnemonic.c b/main/ui/mnemonic.c
index 69ca41c..ab4d32d 100644
--- a/main/ui/mnemonic.c
+++ b/main/ui/mnemonic.c
@@ -232,9 +232,8 @@ gui_activity_t* make_confirm_mnemonic_word_activity(gui_view_node_t** text_box,
gui_set_parent(node, hsplit);
} else {
// Make the selectable row
- gui_make_fill(&node, gui_get_highlight_color());
+ gui_make_fill(&node, gui_get_highlight_color(), FILL_HIGHLIGHT, vsplit);
gui_set_margins(node, GUI_MARGIN_ALL_DIFFERENT, 0, 4, 0, 4);
- gui_set_parent(node, vsplit);
gui_make_hsplit(&hsplit, GUI_SPLIT_RELATIVE, 3, 25, 50, 25);
gui_set_parent(hsplit, node);
@@ -245,8 +244,7 @@ gui_activity_t* make_confirm_mnemonic_word_activity(gui_view_node_t** text_box,
// This text will be updated, so we add a background that will
// be repainted every time to wipe the previous string
- gui_make_fill(&node, gui_get_highlight_color());
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, gui_get_highlight_color(), FILL_HIGHLIGHT, hsplit);
gui_make_text(text_box, "", TFT_WHITE);
gui_set_text_noise(*text_box, gui_get_highlight_color());
@@ -280,8 +278,7 @@ gui_activity_t* make_enter_wordlist_word_activity(gui_view_node_t** titletext, c
// first row, message
gui_view_node_t* text_bg;
- gui_make_fill(&text_bg, TFT_BLACK);
- gui_set_parent(text_bg, vsplit);
+ gui_make_fill(&text_bg, TFT_BLACK, FILL_PLAIN, vsplit);
gui_view_node_t* text_status;
gui_make_text(&text_status, "", TFT_WHITE);
@@ -424,8 +421,7 @@ gui_activity_t* make_export_qr_overview_activity(const Icon* icon, const bool in
// rhs - icon
gui_view_node_t* icon_bg;
- gui_make_fill(&icon_bg, TFT_DARKGREY);
- gui_set_parent(icon_bg, hsplit);
+ gui_make_fill(&icon_bg, TFT_DARKGREY, FILL_PLAIN, hsplit);
gui_view_node_t* node;
gui_make_icon(&node, icon, TFT_BLACK, &TFT_LIGHTGREY);
@@ -489,8 +485,7 @@ gui_activity_t* make_export_qr_fragment_activity(
gui_set_parent(vsplit, hsplit);
// rhs - icon
- gui_make_fill(&node, TFT_DARKGREY);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_DARKGREY, FILL_PLAIN, hsplit);
gui_make_icon(icon_node, icon, TFT_BLACK, &TFT_LIGHTGREY);
gui_set_align(*icon_node, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
@@ -504,8 +499,7 @@ gui_activity_t* make_export_qr_fragment_activity(
add_buttons(vsplit, UI_ROW, hdrbtns, 3);
// Second row, grid ref
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, vsplit);
gui_make_text(label_node, "", TFT_WHITE);
gui_set_align(*label_node, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
diff --git a/main/ui/otpauth.c b/main/ui/otpauth.c
index 104c912..4fc653b 100644
--- a/main/ui/otpauth.c
+++ b/main/ui/otpauth.c
@@ -320,8 +320,7 @@ gui_activity_t* make_show_totp_code_activity(const char* name, const char* times
gui_set_parent(node, hsplit);
gui_set_align(node, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text_font(txt_ts, timestr, TFT_WHITE, DEFAULT_FONT);
gui_set_parent(*txt_ts, node);
@@ -331,8 +330,7 @@ gui_activity_t* make_show_totp_code_activity(const char* name, const char* times
make_progress_bar(vsplit, progress_bar);
// Display the OTP code large/central
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, vsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, vsplit);
gui_make_text_font(txt_code, codestr, TFT_WHITE, DEJAVU24_FONT);
gui_set_parent(*txt_code, node);
diff --git a/main/ui/pin.c b/main/ui/pin.c
index 9a31a5c..8bf9f45 100644
--- a/main/ui/pin.c
+++ b/main/ui/pin.c
@@ -81,7 +81,7 @@ void make_pin_insert_activity(pin_insert_t* pin_insert, const char* title, const
gui_set_align(node, GUI_ALIGN_CENTER, GUI_ALIGN_MIDDLE);
} else {
gui_make_vsplit(&vsplit, GUI_SPLIT_RELATIVE, 3, 10, 75, 15);
- gui_make_fill(&node, TFT_BLACK);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, NULL);
}
gui_set_parent(vsplit, parent);
gui_set_parent(node, vsplit);
@@ -99,8 +99,7 @@ void make_pin_insert_activity(pin_insert_t* pin_insert, const char* title, const
pin_insert->pin[i] = 0xFF;
pin_insert->digit_status[i] = i == 0 ? SELECTED : EMPTY;
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
pin_insert->pin_digit_nodes[i].fill_node = node;
gui_make_vsplit(&vsplit, GUI_SPLIT_RELATIVE, 3, 25, 50, 25);
diff --git a/main/ui/qrmode.c b/main/ui/qrmode.c
index 7d7c46f..aaa6936 100644
--- a/main/ui/qrmode.c
+++ b/main/ui/qrmode.c
@@ -7,8 +7,7 @@ static void make_qrcode(gui_view_node_t* parent, Icon* icons, const size_t num_i
{
// qrcodes are a background fill node with the icon node on top
gui_view_node_t* fill;
- gui_make_fill(&fill, GUI_BLOCKSTREAM_QR_PALE);
- gui_set_parent(fill, parent);
+ gui_make_fill(&fill, GUI_BLOCKSTREAM_QR_PALE, FILL_QR, parent);
gui_view_node_t* icon;
gui_make_icon(&icon, icons, TFT_BLACK, &GUI_BLOCKSTREAM_QR_PALE);
@@ -120,8 +119,7 @@ gui_activity_t* make_search_verify_address_activity(
gui_set_padding(node, GUI_MARGIN_TWO_VALUES, 0, 2);
gui_set_parent(node, hsplit);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text(index_text, "", TFT_WHITE);
gui_set_align(*index_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
@@ -135,8 +133,7 @@ gui_activity_t* make_search_verify_address_activity(
gui_set_padding(node, GUI_MARGIN_TWO_VALUES, 0, 2);
gui_set_parent(node, hsplit);
- gui_make_fill(&node, TFT_BLACK);
- gui_set_parent(node, hsplit);
+ gui_make_fill(&node, TFT_BLACK, FILL_PLAIN, hsplit);
gui_make_text(label_text, root_label, TFT_WHITE);
gui_set_align(*label_text, GUI_ALIGN_LEFT, GUI_ALIGN_MIDDLE);
@@ -334,14 +331,12 @@ gui_activity_t* make_show_qr_help_activity(const char* url, Icon* qr_icon)
gui_set_parent(vsplit, hsplit);
gui_view_node_t* fill;
- gui_make_fill(&fill, TFT_BLACK);
- gui_set_parent(fill, vsplit);
+ gui_make_fill(&fill, TFT_BLACK, FILL_PLAIN, vsplit);
// QR icon
make_qrcode(vsplit, qr_icon, 1, 0); // takes ownership of icon
- gui_make_fill(&fill, TFT_BLACK);
- gui_set_parent(fill, vsplit);
+ gui_make_fill(&fill, TFT_BLACK, FILL_PLAIN, vsplit);
}
return act;
@@ -410,14 +405,12 @@ gui_activity_t* make_qr_back_continue_activity(
gui_set_parent(vsplit, hsplit);
gui_view_node_t* fill;
- gui_make_fill(&fill, TFT_BLACK);
- gui_set_parent(fill, vsplit);
+ gui_make_fill(&fill, TFT_BLACK, FILL_PLAIN, vsplit);
// QR icon background
make_qrcode(vsplit, qr_icon, 1, 0); // takes ownership of icon
- gui_make_fill(&fill, TFT_BLACK);
- gui_set_parent(fill, vsplit);
+ gui_make_fill(&fill, TFT_BLACK, FILL_PLAIN, vsplit);
}
return act;
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.