diff options
Diffstat (limited to 'iup/srclua5/il_tree_aux.c')
-rwxr-xr-x | iup/srclua5/il_tree_aux.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/iup/srclua5/il_tree_aux.c b/iup/srclua5/il_tree_aux.c index 99e721b..6ebaa09 100755 --- a/iup/srclua5/il_tree_aux.c +++ b/iup/srclua5/il_tree_aux.c @@ -151,12 +151,26 @@ static int tree_multiselection_cb(Ihandle *ih, int* ids, int p1) return iuplua_call(L, 2); } -static int tree_noderemoved_cb(Ihandle *ih, int id, void* p1) +static int tree_multiunselection_cb(Ihandle *ih, int* ids, int p1) +{ + int i; + lua_State *L = iuplua_call_start(ih, "multiunselection_cb"); + lua_newtable(L); + for (i = 0; i < p1; i++) + { + lua_pushnumber(L,i+1); + lua_pushnumber(L,ids[i]); + lua_settable(L,-3); + } + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int tree_noderemoved_cb(Ihandle *ih, void* p1) { lua_State *L = iuplua_call_start(ih, "noderemoved_cb"); - lua_pushnumber(L, id); tree_push_userid(L, p1); - return iuplua_call(L, 2); + return iuplua_call(L, 1); } void iuplua_treefuncs_open (lua_State *L) @@ -164,6 +178,7 @@ void iuplua_treefuncs_open (lua_State *L) iuplua_dostring(L, "IUPTREEREFTABLE={}", ""); iuplua_register_cb(L, "MULTISELECTION_CB", (lua_CFunction)tree_multiselection_cb, NULL); + iuplua_register_cb(L, "MULTIUNSELECTION_CB", (lua_CFunction)tree_multiunselection_cb, NULL); iuplua_register_cb(L, "NODEREMOVED_CB", (lua_CFunction)tree_noderemoved_cb, NULL); /* In Lua 5: |