From 20f851e6e2ceed52739ffcad85e10fa4c183bff1 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Tue, 6 May 2014 16:53:17 +1000 Subject: Every window is a winFang now, and winFangs delete their own children. --- src/GuiLua/GuiLua.c | 19 +++++++++++++------ src/GuiLua/GuiLua.h | 4 ++-- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'src/GuiLua') diff --git a/src/GuiLua/GuiLua.c b/src/GuiLua/GuiLua.c index 7463abb..3ff8f94 100644 --- a/src/GuiLua/GuiLua.c +++ b/src/GuiLua/GuiLua.c @@ -232,7 +232,7 @@ static int colour(lua_State *L) static int window(lua_State *L) { winFang *win = NULL; - Evas_Object *parent = NULL; + winFang *parent = NULL; char *name = "GuiLua"; char *title = "GuiLua test harness"; int w = WIDTH, h = HEIGHT; @@ -246,7 +246,12 @@ static int window(lua_State *L) if (gl && gl->parent) parent = gl->parent; win = winFangAdd(parent, 25, 25, w, h, title, name); - eina_clist_add_head(&gl->winFangs, &win->node); + // If there's no parent, we become the parent. + if (gl && !parent) + { + gl->parent = win; + eina_clist_add_head(&gl->winFangs, &win->node); + } lua_pushlightuserdata(L, win); return 1; @@ -282,10 +287,12 @@ static int closeWindow(lua_State *L) gl = lua_touserdata(L, -1); lua_pop(L, 1); - - EINA_CLIST_FOR_EACH_ENTRY(win, &gl->winFangs, winFang, node) + if (gl) { - winFangDel(win); + EINA_CLIST_FOR_EACH_ENTRY(win, &gl->winFangs, winFang, node) + { + winFangDel(win); + } } return 0; @@ -357,7 +364,7 @@ PD("GuiLua 3"); return 1; } -GuiLua *GuiLuaDo(int argc, char **argv, Evas_Object *parent) +GuiLua *GuiLuaDo(int argc, char **argv, winFang *parent) { GuiLua *result; lua_State *L; diff --git a/src/GuiLua/GuiLua.h b/src/GuiLua/GuiLua.h index 3548a44..d390000 100644 --- a/src/GuiLua/GuiLua.h +++ b/src/GuiLua/GuiLua.h @@ -18,7 +18,7 @@ typedef struct _GuiLua { lua_State *L; - Evas_Object *parent; // Our parent window, if it exists. + winFang *parent; // Our parent window, if it exists. Eina_Clist winFangs; // The windows we might open. Eina_Clist node; @@ -26,6 +26,6 @@ typedef struct _GuiLua Evas_Smart_Cb on_del; } GuiLua; -GuiLua *GuiLuaDo(int argc, char **argv, Evas_Object *parent); +GuiLua *GuiLuaDo(int argc, char **argv, winFang *parent); #endif -- cgit v1.1