From 8617ffe44a0845794e671add64754ba2cbc080f3 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 5 May 2014 02:44:09 +1000 Subject: Track all windows in a Eina_List. --- src/extantz/extantz.c | 16 ++++++++++------ src/extantz/extantz.h | 3 +-- src/extantz/winFang.c | 1 + src/extantz/winFang.h | 5 ++++- 4 files changed, 16 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/extantz/extantz.c b/src/extantz/extantz.c index 679a47e..8956bbf 100644 --- a/src/extantz/extantz.c +++ b/src/extantz/extantz.c @@ -386,7 +386,6 @@ EAPI_MAIN int elm_main(int argc, char **argv) Evas_Object *obj; EPhysics_World *world; GLData *gld = NULL; - winFang *chat = NULL, *woMan = NULL; char buf[PATH_MAX]; // Eina_Bool gotWebKit = elm_need_web(); // Initialise ewebkit if it exists, or return EINA_FALSE if it don't. @@ -417,6 +416,7 @@ EAPI_MAIN int elm_main(int argc, char **argv) elm_config_finger_size_set(0); elm_config_scale_set(1.0); + eina_clist_init(&ourGlobals.winFangs); gld = &ourGlobals.gld; gldata_init(gld); @@ -468,8 +468,8 @@ EAPI_MAIN int elm_main(int argc, char **argv) elm_win_resize_object_add(ourGlobals.win, ourGlobals.bx); // overlay_add(&ourGlobals); - woMan = woMan_add(&ourGlobals); - chat = chat_add(&ourGlobals); + woMan_add(&ourGlobals); + chat_add(&ourGlobals); ourGlobals.files = filesAdd(&ourGlobals, (char *) elm_app_data_dir_get(), EINA_TRUE, EINA_FALSE); // Gotta do this after adding the windows, otherwise the menu renders under the window. @@ -503,11 +503,15 @@ EAPI_MAIN int elm_main(int argc, char **argv) if (ourGlobals. win) { + winFang *win; + Evas_3D_Demo_fini(&ourGlobals); eo_unref(ourGlobals.tb); - winFangDel(&ourGlobals, ourGlobals.files); - winFangDel(&ourGlobals, chat); - winFangDel(&ourGlobals, woMan); + + EINA_CLIST_FOR_EACH_ENTRY(win, &ourGlobals.winFangs, winFang, node) + { + winFangDel(&ourGlobals, win); + } eo_unref(ourGlobals.bx); evas_object_del(ourGlobals.win); } diff --git a/src/extantz/extantz.h b/src/extantz/extantz.h index 046f099..7d969b1 100644 --- a/src/extantz/extantz.h +++ b/src/extantz/extantz.h @@ -211,7 +211,6 @@ typedef struct _globals Evas_Object *win; // Our Elm window. Evas_Object *tb; // Our Elm toolbar. Evas_Object *bx; // Our box. - Eina_Clist widgets; // Our windows widgets. int logDom; // Our logging domain. int scr_w, scr_h; // The size of the screen. @@ -223,7 +222,7 @@ typedef struct _globals GLData gld; Scene_Data *scene; - Eina_Clist windows; + Eina_Clist winFangs; winFang *files; } globals; diff --git a/src/extantz/winFang.c b/src/extantz/winFang.c index 0f0328f..3d2b6ef 100644 --- a/src/extantz/winFang.c +++ b/src/extantz/winFang.c @@ -82,6 +82,7 @@ winFang *winFangAdd(globals *ourGlobals) Evas_Object *bg; result = calloc(1, sizeof(winFang)); + eina_clist_add_head(&ourGlobals->winFangs, &result->node); eina_clist_init(&result->widgets); // In theory this should create an EWS window, in practice, I'm not seeing any difference. diff --git a/src/extantz/winFang.h b/src/extantz/winFang.h index 8749be5..738a616 100644 --- a/src/extantz/winFang.h +++ b/src/extantz/winFang.h @@ -8,6 +8,7 @@ typedef struct _winFang { Evas_Object *win; Eina_Clist widgets; + Eina_Clist node; void *data; Evas_Smart_Cb on_del; } winFang; @@ -16,12 +17,14 @@ typedef struct _Widget { char magic[8]; Evas_Object *obj; - Eina_Clist node; + char *label, *look, *action, *help; // foreground / background colour // thing // types {} // skangCoord x, y, w, h + + Eina_Clist node; void *data; Evas_Smart_Cb on_del; } Widget; -- cgit v1.1