mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
minor fixes
This commit is contained in:
parent
4cfeb9e985
commit
55124afe66
@ -3042,6 +3042,12 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
else if(sign == LV_SIGNAL_STYLE_CHG) {
|
||||
lv_obj_refresh_ext_draw_pad(obj);
|
||||
}
|
||||
else if(sign == LV_SIGNAL_PRESSED) {
|
||||
lv_obj_add_state(obj, LV_OBJ_STATE_PRESSED);
|
||||
}
|
||||
else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) {
|
||||
lv_obj_clear_state(obj, LV_OBJ_STATE_PRESSED);
|
||||
}
|
||||
#if LV_USE_GROUP
|
||||
else if(sign == LV_SIGNAL_FOCUS) {
|
||||
if(lv_group_get_editing(lv_obj_get_group(obj))) {
|
||||
|
@ -114,7 +114,7 @@ lv_obj_t * lv_btn_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
* @param btn pointer to a button object
|
||||
* @param tgl true: enable toggled states, false: disable
|
||||
*/
|
||||
void lv_btn_set_toggle(lv_obj_t * btn, bool tgl)
|
||||
void lv_btn_set_checkable(lv_obj_t * btn, bool tgl)
|
||||
{
|
||||
LV_ASSERT_OBJ(btn, LV_OBJX_NAME);
|
||||
|
||||
@ -133,21 +133,21 @@ void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state)
|
||||
LV_ASSERT_OBJ(btn, LV_OBJX_NAME);
|
||||
|
||||
switch(state) {
|
||||
case LV_BTN_STATE_REL:
|
||||
case LV_BTN_STATE_RELEASED:
|
||||
lv_obj_clear_state(btn, LV_OBJ_STATE_PRESSED | LV_OBJ_STATE_CHECKED);
|
||||
break;
|
||||
case LV_BTN_STATE_PR:
|
||||
case LV_BTN_STATE_PRESSED:
|
||||
lv_obj_clear_state(btn, LV_OBJ_STATE_CHECKED);
|
||||
lv_obj_add_state(btn, LV_OBJ_STATE_PRESSED);
|
||||
break;
|
||||
case LV_BTN_STATE_TGL_REL:
|
||||
case LV_BTN_STATE_CHECKED_RELEASED:
|
||||
lv_obj_add_state(btn, LV_OBJ_STATE_CHECKED);
|
||||
lv_obj_clear_state(btn, LV_OBJ_STATE_PRESSED);
|
||||
break;
|
||||
case LV_BTN_STATE_TGL_PR:
|
||||
case LV_BTN_STATE_CHECKED_PRESSED:
|
||||
lv_obj_add_state(btn, LV_OBJ_STATE_PRESSED | LV_OBJ_STATE_CHECKED);
|
||||
break;
|
||||
case LV_BTN_STATE_INA:
|
||||
case LV_BTN_STATE_DISABLED:
|
||||
lv_obj_add_state(btn, LV_OBJ_STATE_DISABLED);
|
||||
break;
|
||||
}
|
||||
@ -188,12 +188,14 @@ lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn)
|
||||
|
||||
lv_obj_state_t state = lv_obj_get_state(btn, LV_BTN_PART_MAIN);
|
||||
|
||||
if(state & LV_OBJ_STATE_CHECKED) {
|
||||
if(state & LV_OBJ_STATE_PRESSED) return LV_BTN_STATE_TGL_PR;
|
||||
else return LV_BTN_STATE_TGL_REL;
|
||||
if(state & LV_OBJ_STATE_DISABLED) {
|
||||
return LV_BTN_STATE_DISABLED;
|
||||
} else if(state & LV_OBJ_STATE_CHECKED) {
|
||||
if(state & LV_OBJ_STATE_PRESSED) return LV_BTN_STATE_CHECKED_PRESSED;
|
||||
else return LV_BTN_STATE_CHECKED_RELEASED;
|
||||
} else {
|
||||
if(state & LV_OBJ_STATE_PRESSED) return LV_BTN_STATE_PR;
|
||||
else return LV_BTN_STATE_REL;
|
||||
if(state & LV_OBJ_STATE_PRESSED) return LV_BTN_STATE_PRESSED;
|
||||
else return LV_BTN_STATE_RELEASED;
|
||||
}
|
||||
|
||||
}
|
||||
@ -203,7 +205,7 @@ lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn)
|
||||
* @param btn pointer to a button object
|
||||
* @return true: toggle enabled, false: disabled
|
||||
*/
|
||||
bool lv_btn_get_toggle(const lv_obj_t * btn)
|
||||
bool lv_btn_get_checkable(const lv_obj_t * btn)
|
||||
{
|
||||
LV_ASSERT_OBJ(btn, LV_OBJX_NAME);
|
||||
|
||||
@ -212,20 +214,6 @@ bool lv_btn_get_toggle(const lv_obj_t * btn)
|
||||
return ext->toggle != 0 ? true : false;
|
||||
}
|
||||
|
||||
lv_style_list_t * lv_btn_get_style(lv_obj_t * cont, uint8_t type)
|
||||
{
|
||||
lv_style_list_t * style_dsc_p;
|
||||
switch(type) {
|
||||
case LV_BTN_PART_MAIN:
|
||||
style_dsc_p = &cont->style_list;
|
||||
break;
|
||||
default:
|
||||
style_dsc_p = NULL;
|
||||
}
|
||||
|
||||
return style_dsc_p;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
@ -269,64 +257,29 @@ static lv_res_t lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * param)
|
||||
if(res != LV_RES_OK) return res;
|
||||
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
|
||||
|
||||
bool tgl = lv_btn_get_toggle(btn);
|
||||
lv_btn_state_t state = lv_btn_get_state(btn);
|
||||
if(sign == LV_SIGNAL_PRESSED) {
|
||||
/*Refresh the state*/
|
||||
if(state == LV_BTN_STATE_REL) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_PR);
|
||||
} else if(state == LV_BTN_STATE_TGL_REL) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_PR);
|
||||
}
|
||||
} else if(sign == LV_SIGNAL_PRESS_LOST) {
|
||||
/*Refresh the state*/
|
||||
if(state == LV_BTN_STATE_PR)
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
else if(state == LV_BTN_STATE_TGL_PR)
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
} else if(sign == LV_SIGNAL_PRESSING) {
|
||||
/*When the button begins to drag revert pressed states to released*/
|
||||
if(lv_indev_is_dragging(param) != false) {
|
||||
if(state == LV_BTN_STATE_PR)
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
else if(state == LV_BTN_STATE_TGL_PR)
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
}
|
||||
} else if(sign == LV_SIGNAL_RELEASED) {
|
||||
bool tgl = lv_btn_get_checkable(btn);
|
||||
|
||||
if(sign == LV_SIGNAL_RELEASED) {
|
||||
/*If not dragged and it was not long press action then
|
||||
*change state and run the action*/
|
||||
if(lv_indev_is_dragging(param) == false) {
|
||||
if(lv_indev_is_dragging(param) == false && tgl) {
|
||||
uint32_t toggled = 0;
|
||||
if(state == LV_BTN_STATE_PR && tgl == false) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
if(lv_obj_get_state(btn, LV_BTN_PART_MAIN) & LV_OBJ_STATE_CHECKED) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_RELEASED);
|
||||
toggled = 0;
|
||||
} else if(state == LV_BTN_STATE_TGL_PR && tgl == false) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
} else {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_CHECKED_RELEASED);
|
||||
toggled = 1;
|
||||
} else if(state == LV_BTN_STATE_PR && tgl == true) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
toggled = 1;
|
||||
} else if(state == LV_BTN_STATE_TGL_PR && tgl == true) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
toggled = 0;
|
||||
}
|
||||
|
||||
if(tgl) {
|
||||
res = lv_event_send(btn, LV_EVENT_VALUE_CHANGED, &toggled);
|
||||
if(res != LV_RES_OK) return res;
|
||||
}
|
||||
} else { /*If dragged change back the state*/
|
||||
if(state == LV_BTN_STATE_PR) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
} else if(state == LV_BTN_STATE_TGL_PR) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
}
|
||||
res = lv_event_send(btn, LV_EVENT_VALUE_CHANGED, &toggled);
|
||||
if(res != LV_RES_OK) return res;
|
||||
}
|
||||
} else if(sign == LV_SIGNAL_CONTROL) {
|
||||
char c = *((char *)param);
|
||||
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
||||
if(lv_btn_get_toggle(btn)) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
|
||||
if(lv_btn_get_checkable(btn)) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_CHECKED_RELEASED);
|
||||
|
||||
uint32_t state = 1;
|
||||
res = lv_event_send(btn, LV_EVENT_VALUE_CHANGED, &state);
|
||||
@ -334,8 +287,8 @@ static lv_res_t lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * param)
|
||||
}
|
||||
|
||||
} else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) {
|
||||
if(lv_btn_get_toggle(btn)) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_REL);
|
||||
if(lv_btn_get_checkable(btn)) {
|
||||
lv_btn_set_state(btn, LV_BTN_STATE_RELEASED);
|
||||
|
||||
uint32_t state = 0;
|
||||
res = lv_event_send(btn, LV_EVENT_VALUE_CHANGED, &state);
|
||||
|
@ -36,23 +36,12 @@ extern "C" {
|
||||
/** Possible states of a button.
|
||||
* It can be used not only by buttons but other button-like objects too*/
|
||||
enum {
|
||||
/**Released*/
|
||||
LV_BTN_STATE_REL,
|
||||
|
||||
/**Pressed*/
|
||||
LV_BTN_STATE_PR,
|
||||
|
||||
/**Toggled released*/
|
||||
LV_BTN_STATE_TGL_REL,
|
||||
|
||||
/**Toggled pressed*/
|
||||
LV_BTN_STATE_TGL_PR,
|
||||
|
||||
/**Inactive*/
|
||||
LV_BTN_STATE_INA,
|
||||
|
||||
/**Number of states*/
|
||||
_LV_BTN_STATE_NUM,
|
||||
LV_BTN_STATE_RELEASED,
|
||||
LV_BTN_STATE_PRESSED,
|
||||
LV_BTN_STATE_CHECKED_RELEASED,
|
||||
LV_BTN_STATE_CHECKED_PRESSED,
|
||||
LV_BTN_STATE_DISABLED,
|
||||
_LV_BTN_STATE_LAST, /* Number of states*/
|
||||
};
|
||||
typedef uint8_t lv_btn_state_t;
|
||||
|
||||
@ -95,7 +84,7 @@ lv_obj_t * lv_btn_create(lv_obj_t * par, const lv_obj_t * copy);
|
||||
* @param btn pointer to a button object
|
||||
* @param tgl true: enable toggled states, false: disable
|
||||
*/
|
||||
void lv_btn_set_toggle(lv_obj_t * btn, bool tgl);
|
||||
void lv_btn_set_checkable(lv_obj_t * btn, bool tgl);
|
||||
|
||||
/**
|
||||
* Set the state of the button
|
||||
@ -202,7 +191,7 @@ lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn);
|
||||
* @param btn pointer to a button object
|
||||
* @return true: toggle enabled, false: disabled
|
||||
*/
|
||||
bool lv_btn_get_toggle(const lv_obj_t * btn);
|
||||
bool lv_btn_get_checkable(const lv_obj_t * btn);
|
||||
|
||||
/**
|
||||
* Get the layout of a button
|
||||
@ -254,29 +243,6 @@ static inline lv_fit_t lv_btn_get_fit_bottom(const lv_obj_t * btn)
|
||||
return lv_cont_get_fit_bottom(btn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get time of the ink in effect (draw a circle on click to animate in the new state)
|
||||
* @param btn pointer to a button object
|
||||
* @return the time of the ink animation
|
||||
*/
|
||||
uint16_t lv_btn_get_ink_in_time(const lv_obj_t * btn);
|
||||
|
||||
/**
|
||||
* Get the wait time before the ink disappears
|
||||
* @param btn pointer to a button object
|
||||
* @return the time of the ink animation
|
||||
*/
|
||||
uint16_t lv_btn_get_ink_wait_time(const lv_obj_t * btn);
|
||||
|
||||
/**
|
||||
* Get time of the ink out effect (animate to the releases state)
|
||||
* @param btn pointer to a button object
|
||||
* @return the time of the ink animation
|
||||
*/
|
||||
uint16_t lv_btn_get_ink_out_time(const lv_obj_t * btn);
|
||||
|
||||
lv_style_list_t * lv_btn_get_style(lv_obj_t * cont, uint8_t type);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
@ -80,7 +80,7 @@ lv_obj_t * lv_cb_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
lv_cb_set_text(cb, "Check box");
|
||||
lv_btn_set_layout(cb, LV_LAYOUT_ROW_M);
|
||||
lv_btn_set_fit(cb, LV_FIT_TIGHT);
|
||||
lv_btn_set_toggle(cb, true);
|
||||
lv_btn_set_checkable(cb, true);
|
||||
lv_obj_set_protect(cb, LV_PROTECT_PRESS_LOST);
|
||||
|
||||
lv_theme_apply(cb, LV_THEME_CB);
|
||||
|
@ -93,7 +93,7 @@ void lv_cb_set_static_text(lv_obj_t * cb, const char * txt);
|
||||
*/
|
||||
static inline void lv_cb_set_checked(lv_obj_t * cb, bool checked)
|
||||
{
|
||||
lv_btn_set_state(cb, checked ? LV_BTN_STATE_TGL_REL : LV_BTN_STATE_REL);
|
||||
lv_btn_set_state(cb, checked ? LV_BTN_STATE_CHECKED_RELEASED: LV_BTN_STATE_RELEASED);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,7 +102,7 @@ static inline void lv_cb_set_checked(lv_obj_t * cb, bool checked)
|
||||
*/
|
||||
static inline void lv_cb_set_inactive(lv_obj_t * cb)
|
||||
{
|
||||
lv_btn_set_state(cb, LV_BTN_STATE_INA);
|
||||
lv_btn_set_state(cb, LV_BTN_STATE_DISABLED);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -131,7 +131,7 @@ const char * lv_cb_get_text(const lv_obj_t * cb);
|
||||
*/
|
||||
static inline bool lv_cb_is_checked(const lv_obj_t * cb)
|
||||
{
|
||||
return lv_btn_get_state(cb) == LV_BTN_STATE_REL ? false : true;
|
||||
return lv_btn_get_state(cb) == LV_BTN_STATE_RELEASED ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -141,7 +141,7 @@ static inline bool lv_cb_is_checked(const lv_obj_t * cb)
|
||||
*/
|
||||
static inline bool lv_cb_is_inactive(const lv_obj_t * cb)
|
||||
{
|
||||
return lv_btn_get_state(cb) == LV_BTN_STATE_INA ? true :false;
|
||||
return lv_btn_get_state(cb) == LV_BTN_STATE_DISABLED ? true :false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -39,7 +39,7 @@ typedef struct
|
||||
lv_btn_ext_t btn; /*Ext. of ancestor*/
|
||||
/*New data for this type */
|
||||
#if LV_IMGBTN_TILED == 0
|
||||
const void * img_src[_LV_BTN_STATE_NUM]; /*Store images to each state*/
|
||||
const void * img_src[_LV_BTN_STATE_LAST]; /*Store images to each state*/
|
||||
#else
|
||||
const void * img_src_left[_LV_BTN_STATE_NUM]; /*Store left side images to each state*/
|
||||
const void * img_src_mid[_LV_BTN_STATE_NUM]; /*Store center images to each state*/
|
||||
@ -105,9 +105,9 @@ void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src
|
||||
* @param imgbtn pointer to an image button object
|
||||
* @param tgl true: enable toggled states, false: disable
|
||||
*/
|
||||
static inline void lv_imgbtn_set_toggle(lv_obj_t * imgbtn, bool tgl)
|
||||
static inline void lv_imgbtn_set_checkable(lv_obj_t * imgbtn, bool tgl)
|
||||
{
|
||||
lv_btn_set_toggle(imgbtn, tgl);
|
||||
lv_btn_set_checkable(imgbtn, tgl);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -184,9 +184,9 @@ static inline lv_btn_state_t lv_imgbtn_get_state(const lv_obj_t * imgbtn)
|
||||
* @param imgbtn pointer to a image button object
|
||||
* @return ture: toggle enabled, false: disabled
|
||||
*/
|
||||
static inline bool lv_imgbtn_get_toggle(const lv_obj_t * imgbtn)
|
||||
static inline bool lv_imgbtn_get_checkable(const lv_obj_t * imgbtn)
|
||||
{
|
||||
return lv_btn_get_toggle(imgbtn);
|
||||
return lv_btn_get_checkable(imgbtn);
|
||||
}
|
||||
|
||||
/*=====================
|
||||
|
@ -414,7 +414,13 @@ static lv_res_t lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param)
|
||||
info->result = lv_mbox_get_style(mbox, info->part);
|
||||
if(info->result != NULL) return LV_RES_OK;
|
||||
else return ancestor_signal(mbox, sign, param);
|
||||
}
|
||||
} else if(sign == LV_SIGNAL_GET_STATE_DSC) {
|
||||
lv_get_state_info_t * info = param;
|
||||
lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
|
||||
if(ext->btnm && info->part == LV_MBOX_PART_BTN_BG) info->result = lv_obj_get_state_dsc(ext->btnm, LV_BTNM_PART_BG);
|
||||
else if(ext->btnm && info->part == LV_MBOX_PART_BTN) info->result = lv_obj_get_state_dsc(ext->btnm, LV_BTNM_PART_BTN);
|
||||
return LV_RES_OK;
|
||||
}
|
||||
|
||||
/* Include the ancient signal function */
|
||||
res = ancestor_signal(mbox, sign, param);
|
||||
|
@ -181,7 +181,7 @@ static void basic_init(void)
|
||||
lv_style_set_pad_bottom(&btn, LV_STYLE_STATE_NORMAL, LV_DPI / 10);
|
||||
lv_style_set_pad_inner(&btn, LV_STYLE_STATE_NORMAL, LV_DPI / 10);
|
||||
lv_style_set_transition_time(&btn, LV_STYLE_STATE_NORMAL, 300);
|
||||
lv_style_set_transition_time(&btn, LV_STYLE_STATE_PRESSED, 0);
|
||||
// lv_style_set_transition_time(&btn, LV_STYLE_STATE_PRESSED, 0);
|
||||
lv_style_set_bg_color(&btn, LV_STYLE_STATE_FOCUS, lv_color_mix(LV_COLOR_RED, COLOR_ACCENT, LV_OPA_50));
|
||||
|
||||
lv_style_set_outline_width(&btn, LV_STYLE_STATE_NORMAL, 3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user