From eed990217fde75c642e2148656ea38f1e8d66354 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Wed, 3 Jan 2024 14:59:10 +0100 Subject: [PATCH] cleanup and fixes for widgets --- .../nanobake/src/apps/services/gui/widgets/spacer.c | 9 +++++++++ .../nanobake/src/apps/services/gui/widgets/spacer.h | 13 +++++++++++++ .../src/apps/services/gui/widgets/toolbar.c | 5 ++++- .../src/apps/services/gui/widgets/top_bar.h | 2 +- .../src/apps/services/gui/widgets/widgets.c | 5 +++++ .../src/apps/services/gui/widgets/widgets.h | 2 ++ 6 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 components/nanobake/src/apps/services/gui/widgets/spacer.c create mode 100644 components/nanobake/src/apps/services/gui/widgets/spacer.h diff --git a/components/nanobake/src/apps/services/gui/widgets/spacer.c b/components/nanobake/src/apps/services/gui/widgets/spacer.c new file mode 100644 index 00000000..3b3aafb2 --- /dev/null +++ b/components/nanobake/src/apps/services/gui/widgets/spacer.c @@ -0,0 +1,9 @@ +#include "spacer.h" +#include "widgets.h" + +lv_obj_t* spacer(lv_obj_t* parent, lv_coord_t width, lv_coord_t height) { + lv_obj_t* spacer = lv_obj_create(parent); + lv_obj_set_size(spacer, width, height); + lv_obj_set_style_bg_invisible(spacer); + return spacer; +} diff --git a/components/nanobake/src/apps/services/gui/widgets/spacer.h b/components/nanobake/src/apps/services/gui/widgets/spacer.h new file mode 100644 index 00000000..1592f43f --- /dev/null +++ b/components/nanobake/src/apps/services/gui/widgets/spacer.h @@ -0,0 +1,13 @@ +#pragma once + +#include "lvgl.h" + +#ifdef __cplusplus +extern "C" { +#endif + +lv_obj_t* spacer(lv_obj_t* parent, lv_coord_t width, lv_coord_t height); + +#ifdef __cplusplus + } +#endif diff --git a/components/nanobake/src/apps/services/gui/widgets/toolbar.c b/components/nanobake/src/apps/services/gui/widgets/toolbar.c index 1a79f13c..a5a3afd1 100644 --- a/components/nanobake/src/apps/services/gui/widgets/toolbar.c +++ b/components/nanobake/src/apps/services/gui/widgets/toolbar.c @@ -26,9 +26,12 @@ void toolbar(lv_obj_t* parent, lv_coord_t offset_y, const AppManifest* manifest) lv_img_set_src(close_button_image, LV_SYMBOL_CLOSE); lv_obj_align(close_button_image, LV_ALIGN_CENTER, 0, 0); + // Need spacer to avoid button press glitch animation + spacer(toolbar, 2, 1); + lv_obj_t* label_container = lv_obj_create(toolbar); lv_obj_set_style_no_padding(label_container); - lv_obj_set_height(label_container, LV_PCT(100)); + lv_obj_set_height(label_container, LV_PCT(100)); // 2% less due to 4px translate (it's not great, but it works) lv_obj_set_flex_grow(label_container, 1); lv_obj_t* label = lv_label_create(label_container); diff --git a/components/nanobake/src/apps/services/gui/widgets/top_bar.h b/components/nanobake/src/apps/services/gui/widgets/top_bar.h index fc6504b5..a1588610 100644 --- a/components/nanobake/src/apps/services/gui/widgets/top_bar.h +++ b/components/nanobake/src/apps/services/gui/widgets/top_bar.h @@ -7,7 +7,7 @@ extern "C" { #endif #define TOP_BAR_ICON_SIZE 18 -#define TOP_BAR_HEIGHT (TOP_BAR_ICON_SIZE + 2) +#define TOP_BAR_HEIGHT (TOP_BAR_ICON_SIZE + 4) // 4 extra pixels for border and outline void top_bar(lv_obj_t* parent); diff --git a/components/nanobake/src/apps/services/gui/widgets/widgets.c b/components/nanobake/src/apps/services/gui/widgets/widgets.c index bf164f33..93ab8c95 100644 --- a/components/nanobake/src/apps/services/gui/widgets/widgets.c +++ b/components/nanobake/src/apps/services/gui/widgets/widgets.c @@ -5,6 +5,11 @@ void lv_obj_set_style_bg_blacken(lv_obj_t* obj) { lv_obj_set_style_border_color(obj, lv_color_black(), 0); } +void lv_obj_set_style_bg_invisible(lv_obj_t* obj) { + lv_obj_set_style_bg_opa(obj, 0, 0); + lv_obj_set_style_border_opa(obj, 0, 0); +} + void lv_obj_set_style_no_padding(lv_obj_t* obj) { lv_obj_set_style_pad_all(obj, LV_STATE_DEFAULT, 0); lv_obj_set_style_pad_gap(obj, LV_STATE_DEFAULT, 0); diff --git a/components/nanobake/src/apps/services/gui/widgets/widgets.h b/components/nanobake/src/apps/services/gui/widgets/widgets.h index 8f2e09b4..d59dd3c7 100644 --- a/components/nanobake/src/apps/services/gui/widgets/widgets.h +++ b/components/nanobake/src/apps/services/gui/widgets/widgets.h @@ -2,12 +2,14 @@ #include "top_bar.h" #include "toolbar.h" +#include "spacer.h" #ifdef __cplusplus extern "C" { #endif void lv_obj_set_style_bg_blacken(lv_obj_t* obj); +void lv_obj_set_style_bg_invisible(lv_obj_t* obj); void lv_obj_set_style_no_padding(lv_obj_t* obj); #ifdef __cplusplus