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/extantz')

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