From 325cc6fe6810ee66974167074a672c43148728aa Mon Sep 17 00:00:00 2001 From: tsauerbeck Date: Thu, 2 Sep 2004 16:50:18 +0000 Subject: [PATCH] implemented ecore_evas_data_get/set SVN revision: 11501 --- .../ecore/src/lib/ecore_evas/Ecore_Evas.h.in | 3 +- legacy/ecore/src/lib/ecore_evas/ecore_evas.c | 33 +++++++++++++++++++ .../src/lib/ecore_evas/ecore_evas_private.h | 4 ++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h.in b/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h.in index a9e8583249..b2b0c1a3be 100644 --- a/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h.in +++ b/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h.in @@ -10,7 +10,6 @@ * to do soon: * - iconfication api needs to work * - maximization api nees to work - * - attach keyed data to an ecore_evas canvas * - document all calls * * later: @@ -59,6 +58,8 @@ Ecore_Evas *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h); /* generic manipulation calls */ void ecore_evas_free(Ecore_Evas *ee); +void *ecore_evas_data_get(Ecore_Evas *ee, const char *key); +void ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data); void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee)); diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas.c index 4bef504489..bc79d03542 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas.c @@ -62,6 +62,7 @@ ecore_evas_free(Ecore_Evas *ee) return; } ECORE_MAGIC_SET(ee, ECORE_MAGIC_NONE); + if (ee->data) evas_hash_free(ee->data); if (ee->driver) free(ee->driver); if (ee->name) free(ee->name); if (ee->prop.title) free(ee->prop.title); @@ -70,6 +71,7 @@ ecore_evas_free(Ecore_Evas *ee) if (ee->prop.cursor.file) free(ee->prop.cursor.file); if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object); if (ee->evas) evas_free(ee->evas); + ee->data = NULL; ee->driver = NULL; ee->name = NULL; ee->prop.title = NULL; @@ -82,6 +84,37 @@ ecore_evas_free(Ecore_Evas *ee) free(ee); } +void * +ecore_evas_data_get(Ecore_Evas *ee, const char *key) +{ + if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) + { + ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, + "ecore_evas_data_get"); + return NULL; + } + + if (!key) return NULL; + + return evas_hash_find(ee->data, key); +} + +void +ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data) +{ + if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) + { + ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, + "ecore_evas_data_set"); + return; + } + + if (!key) return; + + ee->data = evas_hash_del(ee->data, key, NULL); + ee->data = evas_hash_add(ee->data, key, data); +} + #define IFC(_ee, _fn) if (_ee->engine.func->_fn) {_ee->engine.func->_fn #define IFE return;} diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h index ddb3e62eb6..6464245abc 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h @@ -104,7 +104,9 @@ struct _Ecore_Evas char shaped : 1; char visible : 1; char should_be_visible : 1; - + + Evas_Hash *data; + struct { int x, y; } mouse;