From 5f6af82e8a535864aabdf92d1061cbb04999ecce Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 6 Feb 2024 08:35:14 +1100 Subject: [PATCH] luavgl: add a method to focus an object --- lib/luavgl/src/lvgl.lua | 5 +++++ lib/luavgl/src/obj.c | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/luavgl/src/lvgl.lua b/lib/luavgl/src/lvgl.lua index 32061c1f..e06f673d 100644 --- a/lib/luavgl/src/lvgl.lua +++ b/lib/luavgl/src/lvgl.lua @@ -814,6 +814,11 @@ end function obj:invalidate() end +--- Sets this object as the current selection of the object's group. +---@return nil +function obj:focus() +end + --- --- Object event callback. `para` is not used for now. --- @alias EventCallback fun(obj:Object, code: ObjEventCode): nil diff --git a/lib/luavgl/src/obj.c b/lib/luavgl/src/obj.c index eccfd753..4b108891 100644 --- a/lib/luavgl/src/obj.c +++ b/lib/luavgl/src/obj.c @@ -1,3 +1,5 @@ +#include "core/lv_group.h" +#include "core/lv_obj.h" #include "luavgl.h" #include "private.h" @@ -578,6 +580,21 @@ static int luavgl_obj_get_pos(lua_State *L) { return 1; } +/** + * set this object as the current selection + */ +static int luavgl_obj_focus(lua_State *L) { + lv_obj_t *obj = luavgl_to_obj(L, 1); + + lv_group_t *group = lv_obj_get_group(obj); + if (group == NULL) { + return 0; + } + lv_group_focus_obj(obj); + + return 0; +} + /** * Remove all animations associates to this object */ @@ -654,6 +671,7 @@ static const luaL_Reg luavgl_obj_methods[] = { {"indev_search", luavgl_obj_indev_search}, {"get_coords", luavgl_obj_get_coords}, {"get_pos", luavgl_obj_get_pos}, + {"focus", luavgl_obj_focus}, {"onevent", luavgl_obj_on_event}, {"onPressed", luavgl_obj_on_pressed},