mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-25 03:29:58 -07:00
JS: Allow pressing back in Submenu
This commit is contained in:
@@ -7,6 +7,7 @@ typedef struct {
|
||||
Submenu* submenu;
|
||||
ViewDispatcher* view_dispatcher;
|
||||
uint32_t result;
|
||||
bool accepted;
|
||||
} JsSubmenuInst;
|
||||
|
||||
typedef enum {
|
||||
@@ -35,12 +36,20 @@ static bool check_arg_count(struct mjs* mjs, size_t count) {
|
||||
}
|
||||
|
||||
static void submenu_callback(void* context, uint32_t id) {
|
||||
UNUSED(id);
|
||||
JsSubmenuInst* submenu = context;
|
||||
submenu->result = id;
|
||||
submenu->accepted = true;
|
||||
view_dispatcher_stop(submenu->view_dispatcher);
|
||||
}
|
||||
|
||||
static bool submenu_exit(void* context) {
|
||||
JsSubmenuInst* submenu = context;
|
||||
submenu->result = 0;
|
||||
submenu->accepted = false;
|
||||
view_dispatcher_stop(submenu->view_dispatcher);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void js_submenu_add_item(struct mjs* mjs) {
|
||||
JsSubmenuInst* submenu = get_this_ctx(mjs);
|
||||
if(!check_arg_count(mjs, 2)) return;
|
||||
@@ -95,7 +104,11 @@ static void js_submenu_show(struct mjs* mjs) {
|
||||
|
||||
submenu_reset(submenu->submenu);
|
||||
|
||||
mjs_return(mjs, mjs_mk_number(mjs, submenu->result));
|
||||
if(submenu->accepted) {
|
||||
mjs_return(mjs, mjs_mk_number(mjs, submenu->result));
|
||||
} else {
|
||||
mjs_return(mjs, MJS_UNDEFINED);
|
||||
}
|
||||
}
|
||||
|
||||
static void* js_submenu_create(struct mjs* mjs, mjs_val_t* object) {
|
||||
@@ -110,6 +123,8 @@ static void* js_submenu_create(struct mjs* mjs, mjs_val_t* object) {
|
||||
view_dispatcher_enable_queue(submenu->view_dispatcher);
|
||||
view_dispatcher_add_view(
|
||||
submenu->view_dispatcher, JsSubmenuViewSubmenu, submenu_get_view(submenu->submenu));
|
||||
view_dispatcher_set_event_callback_context(submenu->view_dispatcher, submenu);
|
||||
view_dispatcher_set_navigation_event_callback(submenu->view_dispatcher, submenu_exit);
|
||||
*object = submenu_obj;
|
||||
return submenu;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user