diff options
Diffstat (limited to 'src/client/lua_api/gui/iguielement.cpp')
| -rw-r--r-- | src/client/lua_api/gui/iguielement.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/client/lua_api/gui/iguielement.cpp b/src/client/lua_api/gui/iguielement.cpp index 5c51c15..af9d234 100644 --- a/src/client/lua_api/gui/iguielement.cpp +++ b/src/client/lua_api/gui/iguielement.cpp @@ -27,6 +27,7 @@ using namespace irr; using namespace core; using namespace gui; +extern IrrlichtDevice *device; /*** Move an element (by an offset) from it's current position @function guielement:move() @@ -145,8 +146,9 @@ int setiguitext(lua_State* L){ IGUIElement* el = (IGUIElement*)lua_touserdata(L,-1);//{guielement},ud_iguielement lua_pop(L,2); int textlen = strlen(text); - wchar_t* wtext = (wchar_t*)malloc(sizeof(wchar_t)*textlen); + wchar_t* wtext = (wchar_t*)malloc(sizeof(wchar_t)*textlen + 1);//+1 for null? mbstowcs(wtext,text,textlen); + wtext[textlen] = '\0'; el->setText(wtext); free(wtext); return 0; @@ -198,6 +200,21 @@ int removeiguielement(lua_State* L){ return 0; } +/*** +Focuses a gui element. +Will cause a ELEMENT_FOCUS_LOST followed by an ELEMENT_FOCUSED event. +If either events are trapped/returned from, then the focus will not change. +@function iguielement:focus() +*/ +//focus({self}) +int focus(lua_State *L){ + lua_getfield(L,-1,"guielement"); + IGUIElement *ele = (IGUIElement*)lua_touserdata(L,-1); + device->getGUIEnvironment()->setFocus(ele); + lua_pop(L,2); + return 0; +} + class guicallback{ private: @@ -250,5 +267,6 @@ extern const luaL_reg iguielement_m[] = { {"settext", setiguitext}, {"gettext", getiguitext}, {"remove", removeiguielement}, + {"focus", focus}, {NULL, NULL} }; |
