diff --git a/radio/src/gui/colorlcd/tabsgroup.cpp b/radio/src/gui/colorlcd/tabsgroup.cpp index 236dfb483..a0e0e44a1 100644 --- a/radio/src/gui/colorlcd/tabsgroup.cpp +++ b/radio/src/gui/colorlcd/tabsgroup.cpp @@ -63,6 +63,11 @@ class TabCarouselButton : public ButtonBase show(isVisible()); } + ~TabCarouselButton() + { + delete pageTab; + } + #if defined(DEBUG_WINDOWS) std::string getName() const override { @@ -89,8 +94,7 @@ class TabCarouselButton : public ButtonBase show(isVisible()); if (lastIcon != getIcon()) { lastIcon = getIcon(); - icon->deleteLater(); - icon = new StaticIcon(this, 2, ICON_Y, lastIcon, COLOR_THEME_PRIMARY2); + icon->setIcon(lastIcon); } ButtonBase::checkEvents(); } diff --git a/radio/src/gui/colorlcd/tabsgroup.h b/radio/src/gui/colorlcd/tabsgroup.h index 49543f48f..3f4e5c498 100644 --- a/radio/src/gui/colorlcd/tabsgroup.h +++ b/radio/src/gui/colorlcd/tabsgroup.h @@ -40,10 +40,10 @@ class PageTab { } - virtual bool isVisible() const { return true; } - virtual ~PageTab() = default; + virtual bool isVisible() const { return true; } + virtual void build(Window* window) = 0; virtual void checkEvents() {} diff --git a/radio/src/thirdparty/libopenui/src/static.cpp b/radio/src/thirdparty/libopenui/src/static.cpp index c1330d0df..668ebf75d 100644 --- a/radio/src/thirdparty/libopenui/src/static.cpp +++ b/radio/src/thirdparty/libopenui/src/static.cpp @@ -167,9 +167,9 @@ void StaticIcon::setColor(LcdColorIndex color) void StaticIcon::setIcon(EdgeTxIcon icon) { - auto mask = getBuiltinIcon(icon); - setSize(mask->width, mask->height); - lv_canvas_set_buffer(lvobj, (void*)mask->data, mask->width, mask->height, + auto newMask = getBuiltinIcon(icon); + setSize(newMask->width, newMask->height); + lv_canvas_set_buffer(lvobj, (void*)newMask->data, newMask->width, newMask->height, LV_IMG_CF_ALPHA_8BIT); }