diff --git a/lv_objx/lv_btnm.c b/lv_objx/lv_btnm.c index d5aaad9f0..37a72138f 100644 --- a/lv_objx/lv_btnm.c +++ b/lv_objx/lv_btnm.c @@ -303,6 +303,25 @@ void lv_btnm_set_action(lv_obj_t * btnm, lv_btnm_action_t action) ext->action = action; } +/** + * Set the pressed button + * @param btnm pointer to button matrix object + * @param id index of the currently pressed button (`LV_BTNM_PR_NONE` to unpress) + */ +void lv_btnm_set_pressed(const lv_obj_t * btnm, uint16_t id) +{ + lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm); + + if (id >= ext->btn_cnt && id != LV_BTNM_PR_NONE) + return; + + if (id == ext->btn_id_pr) + return; + + ext->btn_id_pr = id; + lv_obj_invalidate(btnm); +} + /** * Enable or disable button toggling * @param btnm pointer to button matrix object diff --git a/lv_objx/lv_btnm.h b/lv_objx/lv_btnm.h index 0e07b2af9..8fa67e8f6 100644 --- a/lv_objx/lv_btnm.h +++ b/lv_objx/lv_btnm.h @@ -141,6 +141,13 @@ void lv_btnm_set_ctrl_map(const lv_obj_t * btnm, const lv_btnm_ctrl_t * ctrl_map */ void lv_btnm_set_action(lv_obj_t * btnm, lv_btnm_action_t action); +/** + * Set the pressed button + * @param btnm pointer to button matrix object + * @param id index of the currently pressed button (`LV_BTNM_PR_NONE` to unpress) + */ +void lv_btnm_set_pressed(const lv_obj_t * btnm, uint16_t id); + /** * Enable or disable button toggling * @param btnm pointer to button matrix object diff --git a/lv_objx/lv_mbox.c b/lv_objx/lv_mbox.c index adaf4ad42..06f636d5e 100644 --- a/lv_objx/lv_mbox.c +++ b/lv_objx/lv_mbox.c @@ -377,17 +377,29 @@ lv_style_t * lv_mbox_get_style(const lv_obj_t * mbox, lv_mbox_style_t type) /** * Get whether recoloring is enabled - * @param btnm pointer to button matrix object + * @param mbox pointer to a message box object * @return whether recoloring is enabled */ bool lv_mbox_get_recolor(const lv_obj_t * mbox) { - lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox); + lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox); - if(!ext->btnm) - return false; + if(!ext->btnm) + return false; - return lv_btnm_get_recolor(ext->btnm); + return lv_btnm_get_recolor(ext->btnm); +} + +/** + * Get message box button matrix + * @param mbox pointer to a message box object + * @return pointer to button matrix object + * @remarks return value will be NULL unless `lv_mbox_add_btns` has been already called + */ +lv_obj_t * lv_mbox_get_btnm(lv_obj_t * mbox) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox); + return ext->btnm; } diff --git a/lv_objx/lv_mbox.h b/lv_objx/lv_mbox.h index 9a25a76e3..0526fae88 100644 --- a/lv_objx/lv_mbox.h +++ b/lv_objx/lv_mbox.h @@ -184,11 +184,19 @@ lv_style_t * lv_mbox_get_style(const lv_obj_t *mbox, lv_mbox_style_t type); /** * Get whether recoloring is enabled - * @param btnm pointer to button matrix object + * @param mbox pointer to a message box object * @return whether recoloring is enabled */ bool lv_mbox_get_recolor(const lv_obj_t * mbox); +/** + * Get message box button matrix + * @param mbox pointer to a message box object + * @return pointer to button matrix object + * @remarks return value will be NULL unless `lv_mbox_add_btns` has been already called + */ +lv_obj_t * lv_mbox_get_btnm(lv_obj_t * mbox); + /********************** * MACROS **********************/