merge dev-6.1
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include "lv_refr.h"
|
||||
#include "lv_group.h"
|
||||
#include "lv_disp.h"
|
||||
#include "../lv_core/lv_debug.h"
|
||||
#include "../lv_themes/lv_theme.h"
|
||||
#include "../lv_draw/lv_draw.h"
|
||||
#include "../lv_misc/lv_anim.h"
|
||||
@@ -29,6 +30,7 @@
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define LV_OBJX_NAME "lv_obj"
|
||||
#define LV_OBJ_DEF_WIDTH (LV_DPI)
|
||||
#define LV_OBJ_DEF_HEIGHT (2 * LV_DPI / 3)
|
||||
|
||||
@@ -143,7 +145,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
}
|
||||
|
||||
new_obj = lv_ll_ins_head(&disp->scr_ll);
|
||||
lv_mem_assert(new_obj);
|
||||
LV_ASSERT_MEM(new_obj);
|
||||
if(new_obj == NULL) return NULL;
|
||||
|
||||
new_obj->par = NULL; /*Screens has no a parent*/
|
||||
@@ -182,8 +184,8 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
new_obj->style_p = &lv_style_scr;
|
||||
}
|
||||
/*Set the callbacks*/
|
||||
lv_obj_set_signal_cb(new_obj, lv_obj_signal);
|
||||
lv_obj_set_design_cb(new_obj, lv_obj_design);
|
||||
new_obj->signal_cb = lv_obj_signal;
|
||||
new_obj->design_cb = lv_obj_design;
|
||||
new_obj->event_cb = NULL;
|
||||
|
||||
/*Init. user date*/
|
||||
@@ -224,9 +226,10 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
/*parent != NULL create normal obj. on a parent*/
|
||||
else {
|
||||
LV_LOG_TRACE("Object create started");
|
||||
LV_ASSERT_OBJ(parent, LV_OBJX_NAME);
|
||||
|
||||
new_obj = lv_ll_ins_head(&parent->child_ll);
|
||||
lv_mem_assert(new_obj);
|
||||
LV_ASSERT_MEM(new_obj);
|
||||
if(new_obj == NULL) return NULL;
|
||||
|
||||
new_obj->par = parent; /*Set the parent*/
|
||||
@@ -265,8 +268,8 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
}
|
||||
|
||||
/*Set the callbacks*/
|
||||
lv_obj_set_signal_cb(new_obj, lv_obj_signal);
|
||||
lv_obj_set_design_cb(new_obj, lv_obj_design);
|
||||
new_obj->signal_cb = lv_obj_signal;
|
||||
new_obj->design_cb = lv_obj_design;
|
||||
new_obj->event_cb = NULL;
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
@@ -311,6 +314,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
|
||||
/*Copy the attributes if required*/
|
||||
if(copy != NULL) {
|
||||
LV_ASSERT_OBJ(copy, LV_OBJX_NAME);
|
||||
lv_area_copy(&new_obj->coords, ©->coords);
|
||||
new_obj->ext_draw_pad = copy->ext_draw_pad;
|
||||
|
||||
@@ -336,7 +340,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
new_obj->realign.auto_realign = copy->realign.auto_realign;
|
||||
#endif
|
||||
|
||||
/*Only copy the `event_cb`. `signal_cb` and `design_cb` will be copied the the derived
|
||||
/*Only copy the `event_cb`. `signal_cb` and `design_cb` will be copied in the derived
|
||||
* object type (e.g. `lv_btn`)*/
|
||||
new_obj->event_cb = copy->event_cb;
|
||||
|
||||
@@ -391,6 +395,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
*/
|
||||
lv_res_t lv_obj_del(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
lv_obj_invalidate(obj);
|
||||
|
||||
/*Delete from the group*/
|
||||
@@ -424,15 +429,6 @@ lv_res_t lv_obj_del(lv_obj_t * obj)
|
||||
|
||||
lv_event_mark_deleted(obj);
|
||||
|
||||
/*Remove the object from parent's children list*/
|
||||
lv_obj_t * par = lv_obj_get_parent(obj);
|
||||
if(par == NULL) { /*It is a screen*/
|
||||
lv_disp_t * d = lv_obj_get_disp(obj);
|
||||
lv_ll_rem(&d->scr_ll, obj);
|
||||
} else {
|
||||
lv_ll_rem(&(par->child_ll), obj);
|
||||
}
|
||||
|
||||
/* Reset all input devices if the object to delete is used*/
|
||||
lv_indev_t * indev = lv_indev_get_next(NULL);
|
||||
while(indev) {
|
||||
@@ -455,6 +451,15 @@ lv_res_t lv_obj_del(lv_obj_t * obj)
|
||||
* Now clean up the object specific data*/
|
||||
obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL);
|
||||
|
||||
/*Remove the object from parent's children list*/
|
||||
lv_obj_t * par = lv_obj_get_parent(obj);
|
||||
if(par == NULL) { /*It is a screen*/
|
||||
lv_disp_t * d = lv_obj_get_disp(obj);
|
||||
lv_ll_rem(&d->scr_ll, obj);
|
||||
} else {
|
||||
lv_ll_rem(&(par->child_ll), obj);
|
||||
}
|
||||
|
||||
/*Delete the base objects*/
|
||||
if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr);
|
||||
lv_mem_free(obj); /*Free the object itself*/
|
||||
@@ -475,6 +480,7 @@ lv_res_t lv_obj_del(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_del_async(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
lv_async_call(lv_obj_del_async_cb, obj);
|
||||
}
|
||||
|
||||
@@ -484,6 +490,7 @@ void lv_obj_del_async(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_clean(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
lv_obj_t * child = lv_obj_get_child(obj, NULL);
|
||||
lv_obj_t * child_next;
|
||||
while(child) {
|
||||
@@ -501,6 +508,8 @@ void lv_obj_clean(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_invalidate(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
if(lv_obj_get_hidden(obj)) return;
|
||||
|
||||
/*Invalidate the object only if it belongs to the 'LV_GC_ROOT(_lv_act_scr)'*/
|
||||
@@ -548,6 +557,9 @@ void lv_obj_invalidate(const lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
LV_ASSERT_OBJ(parent, LV_OBJX_NAME);
|
||||
|
||||
if(obj->par == NULL) {
|
||||
LV_LOG_WARN("Can't set the parent of a screen");
|
||||
return;
|
||||
@@ -585,6 +597,8 @@ void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent)
|
||||
*/
|
||||
void lv_obj_move_foreground(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * parent = lv_obj_get_parent(obj);
|
||||
|
||||
/*Do nothing of already in the foreground*/
|
||||
@@ -606,6 +620,8 @@ void lv_obj_move_foreground(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_move_background(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * parent = lv_obj_get_parent(obj);
|
||||
|
||||
/*Do nothing of already in the background*/
|
||||
@@ -633,6 +649,8 @@ void lv_obj_move_background(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
/*Convert x and y to absolute coordinates*/
|
||||
lv_obj_t * par = obj->par;
|
||||
|
||||
@@ -680,6 +698,8 @@ void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
|
||||
*/
|
||||
void lv_obj_set_x(lv_obj_t * obj, lv_coord_t x)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_set_pos(obj, x, lv_obj_get_y(obj));
|
||||
}
|
||||
|
||||
@@ -690,6 +710,8 @@ void lv_obj_set_x(lv_obj_t * obj, lv_coord_t x)
|
||||
*/
|
||||
void lv_obj_set_y(lv_obj_t * obj, lv_coord_t y)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_set_pos(obj, lv_obj_get_x(obj), y);
|
||||
}
|
||||
|
||||
@@ -701,6 +723,8 @@ void lv_obj_set_y(lv_obj_t * obj, lv_coord_t y)
|
||||
*/
|
||||
void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
|
||||
/* Do nothing if the size is not changed */
|
||||
/* It is very important else recursive resizing can
|
||||
@@ -750,6 +774,8 @@ void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h)
|
||||
*/
|
||||
void lv_obj_set_width(lv_obj_t * obj, lv_coord_t w)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_set_size(obj, w, lv_obj_get_height(obj));
|
||||
}
|
||||
|
||||
@@ -760,6 +786,8 @@ void lv_obj_set_width(lv_obj_t * obj, lv_coord_t w)
|
||||
*/
|
||||
void lv_obj_set_height(lv_obj_t * obj, lv_coord_t h)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_set_size(obj, lv_obj_get_width(obj), h);
|
||||
}
|
||||
|
||||
@@ -773,6 +801,8 @@ void lv_obj_set_height(lv_obj_t * obj, lv_coord_t h)
|
||||
*/
|
||||
void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_mod, lv_coord_t y_mod)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_coord_t new_x = lv_obj_get_x(obj);
|
||||
lv_coord_t new_y = lv_obj_get_y(obj);
|
||||
|
||||
@@ -780,6 +810,9 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co
|
||||
base = lv_obj_get_parent(obj);
|
||||
}
|
||||
|
||||
LV_ASSERT_OBJ(base, LV_OBJX_NAME);
|
||||
|
||||
|
||||
switch(align) {
|
||||
case LV_ALIGN_CENTER:
|
||||
new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2;
|
||||
@@ -918,6 +951,8 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co
|
||||
*/
|
||||
void lv_obj_align_origo(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_mod, lv_coord_t y_mod)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_coord_t new_x = lv_obj_get_x(obj);
|
||||
lv_coord_t new_y = lv_obj_get_y(obj);
|
||||
|
||||
@@ -928,6 +963,9 @@ void lv_obj_align_origo(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align,
|
||||
base = lv_obj_get_parent(obj);
|
||||
}
|
||||
|
||||
LV_ASSERT_OBJ(base, LV_OBJX_NAME);
|
||||
|
||||
|
||||
switch(align) {
|
||||
case LV_ALIGN_CENTER:
|
||||
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
|
||||
@@ -1062,6 +1100,8 @@ void lv_obj_align_origo(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align,
|
||||
*/
|
||||
void lv_obj_realign(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_OBJ_REALIGN
|
||||
if(obj->realign.origo_align)
|
||||
lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
|
||||
@@ -1081,6 +1121,8 @@ void lv_obj_realign(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_set_auto_realign(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_OBJ_REALIGN
|
||||
obj->realign.auto_realign = en ? 1 : 0;
|
||||
#else
|
||||
@@ -1099,6 +1141,8 @@ void lv_obj_set_auto_realign(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_ext_click_area(lv_obj_t * obj, uint8_t w, uint8_t h)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->ext_click_pad_hor = w;
|
||||
obj->ext_click_pad_ver = h;
|
||||
}
|
||||
@@ -1116,6 +1160,8 @@ void lv_obj_set_ext_click_area(lv_obj_t * obj, uint8_t w, uint8_t h)
|
||||
*/
|
||||
void lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t left, lv_coord_t right, lv_coord_t top, lv_coord_t bottom)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
obj->ext_click_pad.x1 = left;
|
||||
obj->ext_click_pad.x2 = right;
|
||||
@@ -1144,6 +1190,9 @@ void lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t left, lv_coord_t right
|
||||
*/
|
||||
void lv_obj_set_style(lv_obj_t * obj, const lv_style_t * style)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
LV_ASSERT_STYLE(style);
|
||||
|
||||
obj->style_p = style;
|
||||
|
||||
/*Send a signal about style change to every children with NULL style*/
|
||||
@@ -1159,6 +1208,8 @@ void lv_obj_set_style(lv_obj_t * obj, const lv_style_t * style)
|
||||
*/
|
||||
void lv_obj_refresh_style(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_invalidate(obj);
|
||||
obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL);
|
||||
lv_obj_invalidate(obj);
|
||||
@@ -1171,6 +1222,8 @@ void lv_obj_refresh_style(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_report_style_mod(lv_style_t * style)
|
||||
{
|
||||
LV_ASSERT_STYLE(style);
|
||||
|
||||
lv_disp_t * d = lv_disp_get_next(NULL);
|
||||
|
||||
while(d) {
|
||||
@@ -1198,6 +1251,8 @@ void lv_obj_report_style_mod(lv_style_t * style)
|
||||
*/
|
||||
void lv_obj_set_hidden(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
if(!obj->hidden) lv_obj_invalidate(obj); /*Invalidate when not hidden (hidden objects are ignored) */
|
||||
|
||||
obj->hidden = en == false ? 0 : 1;
|
||||
@@ -1215,6 +1270,8 @@ void lv_obj_set_hidden(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_click(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->click = (en == true ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -1226,6 +1283,8 @@ void lv_obj_set_click(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_top(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->top = (en == true ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -1236,6 +1295,8 @@ void lv_obj_set_top(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_drag(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
if(en == true) lv_obj_set_click(obj, true); /*Drag is useless without enabled clicking*/
|
||||
obj->drag = (en == true ? 1 : 0);
|
||||
}
|
||||
@@ -1247,6 +1308,8 @@ void lv_obj_set_drag(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_drag_dir(lv_obj_t * obj, lv_drag_dir_t drag_dir)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->drag_dir = drag_dir;
|
||||
|
||||
if(obj->drag_dir != 0) lv_obj_set_drag(obj, true); /*Drag direction requires drag*/
|
||||
@@ -1259,6 +1322,8 @@ void lv_obj_set_drag_dir(lv_obj_t * obj, lv_drag_dir_t drag_dir)
|
||||
*/
|
||||
void lv_obj_set_drag_throw(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->drag_throw = (en == true ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -1270,6 +1335,8 @@ void lv_obj_set_drag_throw(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_drag_parent(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->drag_parent = (en == true ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -1280,6 +1347,8 @@ void lv_obj_set_drag_parent(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_parent_event(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->parent_event = (en == true ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -1307,6 +1376,8 @@ void lv_obj_set_base_dir(lv_obj_t * obj, lv_bidi_dir_t dir)
|
||||
*/
|
||||
void lv_obj_set_opa_scale_enable(lv_obj_t * obj, bool en)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->opa_scale_en = en ? 1 : 0;
|
||||
}
|
||||
|
||||
@@ -1320,6 +1391,8 @@ void lv_obj_set_opa_scale_enable(lv_obj_t * obj, bool en)
|
||||
*/
|
||||
void lv_obj_set_opa_scale(lv_obj_t * obj, lv_opa_t opa_scale)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->opa_scale = opa_scale;
|
||||
lv_obj_invalidate(obj);
|
||||
}
|
||||
@@ -1331,6 +1404,8 @@ void lv_obj_set_opa_scale(lv_obj_t * obj, lv_opa_t opa_scale)
|
||||
*/
|
||||
void lv_obj_set_protect(lv_obj_t * obj, uint8_t prot)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->protect |= prot;
|
||||
}
|
||||
|
||||
@@ -1341,6 +1416,8 @@ void lv_obj_set_protect(lv_obj_t * obj, uint8_t prot)
|
||||
*/
|
||||
void lv_obj_clear_protect(lv_obj_t * obj, uint8_t prot)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
prot = (~prot) & 0xFF;
|
||||
obj->protect &= prot;
|
||||
}
|
||||
@@ -1353,6 +1430,8 @@ void lv_obj_clear_protect(lv_obj_t * obj, uint8_t prot)
|
||||
*/
|
||||
void lv_obj_set_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->event_cb = event_cb;
|
||||
}
|
||||
|
||||
@@ -1367,6 +1446,8 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, const void * data)
|
||||
{
|
||||
if(obj == NULL) return LV_RES_OK;
|
||||
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_res_t res;
|
||||
res = lv_event_send_func(obj->event_cb, obj, event, data);
|
||||
return res;
|
||||
@@ -1384,6 +1465,8 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, const void * data)
|
||||
*/
|
||||
lv_res_t lv_event_send_func(lv_event_cb_t event_xcb, lv_obj_t * obj, lv_event_t event, const void * data)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
/* Build a simple linked list from the objects used in the events
|
||||
* It's important to know if an this object was deleted by a nested event
|
||||
* called from this `even_cb`. */
|
||||
@@ -1448,6 +1531,8 @@ const void * lv_event_get_data(void)
|
||||
*/
|
||||
void lv_obj_set_signal_cb(lv_obj_t * obj, lv_signal_cb_t signal_cb)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->signal_cb = signal_cb;
|
||||
}
|
||||
|
||||
@@ -1458,6 +1543,8 @@ void lv_obj_set_signal_cb(lv_obj_t * obj, lv_signal_cb_t signal_cb)
|
||||
*/
|
||||
void lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
if(obj->signal_cb) obj->signal_cb(obj, signal, param);
|
||||
}
|
||||
|
||||
@@ -1468,6 +1555,8 @@ void lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param)
|
||||
*/
|
||||
void lv_obj_set_design_cb(lv_obj_t * obj, lv_design_cb_t design_cb)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->design_cb = design_cb;
|
||||
}
|
||||
|
||||
@@ -1483,6 +1572,8 @@ void lv_obj_set_design_cb(lv_obj_t * obj, lv_design_cb_t design_cb)
|
||||
*/
|
||||
void * lv_obj_allocate_ext_attr(lv_obj_t * obj, uint16_t ext_size)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->ext_attr = lv_mem_realloc(obj->ext_attr, ext_size);
|
||||
|
||||
return (void *)obj->ext_attr;
|
||||
@@ -1494,6 +1585,8 @@ void * lv_obj_allocate_ext_attr(lv_obj_t * obj, uint16_t ext_size)
|
||||
*/
|
||||
void lv_obj_refresh_ext_draw_pad(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
obj->ext_draw_pad = 0;
|
||||
obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL);
|
||||
|
||||
@@ -1511,6 +1604,8 @@ void lv_obj_refresh_ext_draw_pad(lv_obj_t * obj)
|
||||
*/
|
||||
lv_obj_t * lv_obj_get_screen(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_obj_t * par = obj;
|
||||
const lv_obj_t * act_p;
|
||||
|
||||
@@ -1529,6 +1624,8 @@ lv_obj_t * lv_obj_get_screen(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_disp_t * lv_obj_get_disp(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_obj_t * scr;
|
||||
|
||||
if(obj->par == NULL)
|
||||
@@ -1561,6 +1658,8 @@ lv_disp_t * lv_obj_get_disp(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_obj_t * lv_obj_get_parent(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->par;
|
||||
}
|
||||
|
||||
@@ -1573,6 +1672,8 @@ lv_obj_t * lv_obj_get_parent(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_obj_t * lv_obj_get_child(const lv_obj_t * obj, const lv_obj_t * child)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * result = NULL;
|
||||
|
||||
if(child == NULL) {
|
||||
@@ -1593,6 +1694,8 @@ lv_obj_t * lv_obj_get_child(const lv_obj_t * obj, const lv_obj_t * child)
|
||||
*/
|
||||
lv_obj_t * lv_obj_get_child_back(const lv_obj_t * obj, const lv_obj_t * child)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * result = NULL;
|
||||
|
||||
if(child == NULL) {
|
||||
@@ -1611,6 +1714,8 @@ lv_obj_t * lv_obj_get_child_back(const lv_obj_t * obj, const lv_obj_t * child)
|
||||
*/
|
||||
uint16_t lv_obj_count_children(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * i;
|
||||
uint16_t cnt = 0;
|
||||
|
||||
@@ -1625,6 +1730,8 @@ uint16_t lv_obj_count_children(const lv_obj_t * obj)
|
||||
*/
|
||||
uint16_t lv_obj_count_children_recursive(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_t * i;
|
||||
uint16_t cnt = 0;
|
||||
|
||||
@@ -1648,6 +1755,8 @@ uint16_t lv_obj_count_children_recursive(const lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_get_coords(const lv_obj_t * obj, lv_area_t * cords_p)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_area_copy(cords_p, &obj->coords);
|
||||
}
|
||||
|
||||
@@ -1658,6 +1767,8 @@ void lv_obj_get_coords(const lv_obj_t * obj, lv_area_t * cords_p)
|
||||
*/
|
||||
void lv_obj_get_inner_coords(const lv_obj_t * obj, lv_area_t * coords_p)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_style_t * style = lv_obj_get_style(obj);
|
||||
if(style->body.border.part & LV_BORDER_LEFT) coords_p->x1 += style->body.border.width;
|
||||
|
||||
@@ -1675,6 +1786,8 @@ void lv_obj_get_inner_coords(const lv_obj_t * obj, lv_area_t * coords_p)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_x(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_coord_t rel_x;
|
||||
lv_obj_t * parent = lv_obj_get_parent(obj);
|
||||
rel_x = obj->coords.x1 - parent->coords.x1;
|
||||
@@ -1689,6 +1802,8 @@ lv_coord_t lv_obj_get_x(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_y(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_coord_t rel_y;
|
||||
lv_obj_t * parent = lv_obj_get_parent(obj);
|
||||
rel_y = obj->coords.y1 - parent->coords.y1;
|
||||
@@ -1703,6 +1818,8 @@ lv_coord_t lv_obj_get_y(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_width(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return lv_area_get_width(&obj->coords);
|
||||
}
|
||||
|
||||
@@ -1713,6 +1830,8 @@ lv_coord_t lv_obj_get_width(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_height(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return lv_area_get_height(&obj->coords);
|
||||
}
|
||||
|
||||
@@ -1723,6 +1842,8 @@ lv_coord_t lv_obj_get_height(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_width_fit(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_style_t * style = lv_obj_get_style(obj);
|
||||
|
||||
return lv_obj_get_width(obj) - style->body.padding.left - style->body.padding.right;
|
||||
@@ -1735,6 +1856,8 @@ lv_coord_t lv_obj_get_width_fit(lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_height_fit(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_style_t * style = lv_obj_get_style(obj);
|
||||
|
||||
return lv_obj_get_height(obj) - style->body.padding.top - style->body.padding.bottom;
|
||||
@@ -1747,6 +1870,8 @@ lv_coord_t lv_obj_get_height_fit(lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_auto_realign(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_OBJ_REALIGN
|
||||
return obj->realign.auto_realign ? true : false;
|
||||
#else
|
||||
@@ -1762,6 +1887,8 @@ bool lv_obj_get_auto_realign(lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_ext_click_pad_left(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_TINY
|
||||
return obj->ext_click_pad_hor;
|
||||
#elif LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
@@ -1779,6 +1906,8 @@ lv_coord_t lv_obj_get_ext_click_pad_left(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_ext_click_pad_right(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_TINY
|
||||
return obj->ext_click_pad_hor;
|
||||
#elif LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
@@ -1796,6 +1925,8 @@ lv_coord_t lv_obj_get_ext_click_pad_right(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_ext_click_pad_top(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_TINY
|
||||
return obj->ext_click_pad_ver;
|
||||
#elif LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
@@ -1813,6 +1944,8 @@ lv_coord_t lv_obj_get_ext_click_pad_top(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_ext_click_pad_bottom(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
#if LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_TINY
|
||||
return obj->ext_click_pad_ver
|
||||
#elif LV_USE_EXT_CLICK_AREA == LV_EXT_CLICK_AREA_FULL
|
||||
@@ -1830,6 +1963,8 @@ lv_coord_t lv_obj_get_ext_click_pad_bottom(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_coord_t lv_obj_get_ext_draw_pad(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->ext_draw_pad;
|
||||
}
|
||||
|
||||
@@ -1844,6 +1979,8 @@ lv_coord_t lv_obj_get_ext_draw_pad(const lv_obj_t * obj)
|
||||
*/
|
||||
const lv_style_t * lv_obj_get_style(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_style_t * style_act = obj->style_p;
|
||||
if(style_act == NULL) {
|
||||
lv_obj_t * par = obj->par;
|
||||
@@ -1892,6 +2029,8 @@ const lv_style_t * lv_obj_get_style(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_hidden(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->hidden == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1902,6 +2041,8 @@ bool lv_obj_get_hidden(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_click(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->click == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1912,6 +2053,8 @@ bool lv_obj_get_click(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_top(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->top == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1922,6 +2065,8 @@ bool lv_obj_get_top(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_drag(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->drag == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1932,6 +2077,8 @@ bool lv_obj_get_drag(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_drag_dir_t lv_obj_get_drag_dir(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->drag_dir;
|
||||
}
|
||||
|
||||
@@ -1942,6 +2089,8 @@ lv_drag_dir_t lv_obj_get_drag_dir(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_drag_throw(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->drag_throw == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1962,6 +2111,8 @@ bool lv_obj_get_drag_parent(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_get_parent_event(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->parent_event == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -1991,6 +2142,8 @@ lv_bidi_dir_t lv_obj_get_base_dir(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_opa_t lv_obj_get_opa_scale_enable(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->opa_scale_en == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -2001,6 +2154,8 @@ lv_opa_t lv_obj_get_opa_scale_enable(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_opa_t lv_obj_get_opa_scale(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
const lv_obj_t * parent = obj;
|
||||
|
||||
while(parent) {
|
||||
@@ -2018,6 +2173,8 @@ lv_opa_t lv_obj_get_opa_scale(const lv_obj_t * obj)
|
||||
*/
|
||||
uint8_t lv_obj_get_protect(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->protect;
|
||||
}
|
||||
|
||||
@@ -2029,6 +2186,8 @@ uint8_t lv_obj_get_protect(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_is_protected(const lv_obj_t * obj, uint8_t prot)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return (obj->protect & prot) == 0 ? false : true;
|
||||
}
|
||||
|
||||
@@ -2039,6 +2198,8 @@ bool lv_obj_is_protected(const lv_obj_t * obj, uint8_t prot)
|
||||
*/
|
||||
lv_signal_cb_t lv_obj_get_signal_cb(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->signal_cb;
|
||||
}
|
||||
|
||||
@@ -2049,6 +2210,8 @@ lv_signal_cb_t lv_obj_get_signal_cb(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_design_cb_t lv_obj_get_design_cb(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->design_cb;
|
||||
}
|
||||
|
||||
@@ -2059,6 +2222,8 @@ lv_design_cb_t lv_obj_get_design_cb(const lv_obj_t * obj)
|
||||
*/
|
||||
lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->event_cb;
|
||||
}
|
||||
|
||||
@@ -2074,6 +2239,8 @@ lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj)
|
||||
*/
|
||||
void * lv_obj_get_ext_attr(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->ext_attr;
|
||||
}
|
||||
|
||||
@@ -2085,6 +2252,9 @@ void * lv_obj_get_ext_attr(const lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_get_type(lv_obj_t * obj, lv_obj_type_t * buf)
|
||||
{
|
||||
LV_ASSERT_NULL(buf);
|
||||
LV_ASSERT_NULL(obj);
|
||||
|
||||
lv_obj_type_t tmp;
|
||||
|
||||
memset(buf, 0, sizeof(lv_obj_type_t));
|
||||
@@ -2113,6 +2283,8 @@ void lv_obj_get_type(lv_obj_t * obj, lv_obj_type_t * buf)
|
||||
*/
|
||||
lv_obj_user_data_t lv_obj_get_user_data(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->user_data;
|
||||
}
|
||||
|
||||
@@ -2123,6 +2295,8 @@ lv_obj_user_data_t lv_obj_get_user_data(lv_obj_t * obj)
|
||||
*/
|
||||
lv_obj_user_data_t * lv_obj_get_user_data_ptr(lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return &obj->user_data;
|
||||
}
|
||||
|
||||
@@ -2133,6 +2307,8 @@ lv_obj_user_data_t * lv_obj_get_user_data_ptr(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_obj_set_user_data(lv_obj_t * obj, lv_obj_user_data_t data)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
memcpy(&obj->user_data, &data, sizeof(lv_obj_user_data_t));
|
||||
}
|
||||
#endif
|
||||
@@ -2145,6 +2321,8 @@ void lv_obj_set_user_data(lv_obj_t * obj, lv_obj_user_data_t data)
|
||||
*/
|
||||
void * lv_obj_get_group(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
return obj->group_p;
|
||||
}
|
||||
|
||||
@@ -2155,6 +2333,8 @@ void * lv_obj_get_group(const lv_obj_t * obj)
|
||||
*/
|
||||
bool lv_obj_is_focused(const lv_obj_t * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
if(obj->group_p) {
|
||||
if(lv_group_get_focused(obj->group_p) == obj) return true;
|
||||
}
|
||||
@@ -2163,12 +2343,37 @@ bool lv_obj_is_focused(const lv_obj_t * obj)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*-------------------
|
||||
* OTHER FUNCTIONS
|
||||
*------------------*/
|
||||
|
||||
/**
|
||||
* Used in the signal callback to handle `LV_SIGNAL_GET_TYPE` signal
|
||||
* @param obj pointer to an object
|
||||
* @param buf pointer to `lv_obj_type_t`. (`param` i nteh signal callback)
|
||||
* @param name name of the object. E.g. "lv_btn". (Only teh pointer is saved)
|
||||
* @return LV_RES_OK
|
||||
*/
|
||||
lv_res_t lv_obj_handle_get_type_signal(lv_obj_type_t * buf, const char * name)
|
||||
{
|
||||
uint8_t i;
|
||||
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
|
||||
if(buf->type[i] == NULL) break;
|
||||
}
|
||||
buf->type[i] = name;
|
||||
|
||||
return LV_RES_OK;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
static void lv_obj_del_async_cb(void * obj)
|
||||
{
|
||||
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
|
||||
|
||||
lv_obj_del(obj);
|
||||
}
|
||||
|
||||
@@ -2229,24 +2434,19 @@ static bool lv_obj_design(lv_obj_t * obj, const lv_area_t * mask_p, lv_design_mo
|
||||
*/
|
||||
static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
{
|
||||
(void)param;
|
||||
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
|
||||
|
||||
lv_res_t res = LV_RES_OK;
|
||||
|
||||
const lv_style_t * style = lv_obj_get_style(obj);
|
||||
|
||||
if(sign == LV_SIGNAL_CHILD_CHG) {
|
||||
/*Return 'invalid' if the child change signal is not enabled*/
|
||||
if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV;
|
||||
} else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
|
||||
const lv_style_t * style = lv_obj_get_style(obj);
|
||||
if(style->body.shadow.width > obj->ext_draw_pad) obj->ext_draw_pad = style->body.shadow.width;
|
||||
} else if(sign == LV_SIGNAL_STYLE_CHG) {
|
||||
lv_obj_refresh_ext_draw_pad(obj);
|
||||
} else if(sign == LV_SIGNAL_GET_TYPE) {
|
||||
lv_obj_type_t * buf = param;
|
||||
buf->type[0] = "lv_obj";
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -2367,13 +2567,13 @@ static void delete_children(lv_obj_t * obj)
|
||||
indev = lv_indev_get_next(indev);
|
||||
}
|
||||
|
||||
/* Clean up the object specific data*/
|
||||
obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL);
|
||||
|
||||
/*Remove the object from parent's children list*/
|
||||
lv_obj_t * par = lv_obj_get_parent(obj);
|
||||
lv_ll_rem(&(par->child_ll), obj);
|
||||
|
||||
/* Clean up the object specific data*/
|
||||
obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL);
|
||||
|
||||
/*Delete the base objects*/
|
||||
if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr);
|
||||
lv_mem_free(obj); /*Free the object itself*/
|
||||
|
||||
Reference in New Issue
Block a user