From b59bdf6761e66b0292afff7b62225ce114970446 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 10 Oct 2011 20:30:33 +0000 Subject: [PATCH] e17/comp: add function to get Comp_Source for window. - make part of comp source struct public, better than having all modules using Comp_Source copying E_Comp_Win private struct. SVN revision: 63963 --- src/bin/e_manager.c | 6 +++++ src/bin/e_manager.h | 48 ++++++++++++++++++++++------------- src/modules/comp/e_mod_comp.c | 9 +++++++ 3 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/bin/e_manager.c b/src/bin/e_manager.c index 706fca355..1d4d38d3b 100644 --- a/src/bin/e_manager.c +++ b/src/bin/e_manager.c @@ -566,6 +566,12 @@ e_manager_comp_src_list(E_Manager *man) return man->comp->func.src_list_get(man->comp->data, man); } +EAPI E_Manager_Comp_Source* +e_manager_comp_src_get(E_Manager *man, Ecore_X_Window win) +{ + return man->comp->func.src_get(man->comp->data, man, win); +} + EAPI Evas_Object * e_manager_comp_src_image_get(E_Manager *man, E_Manager_Comp_Source *src) { diff --git a/src/bin/e_manager.h b/src/bin/e_manager.h index d8fe44575..b1e21c270 100644 --- a/src/bin/e_manager.h +++ b/src/bin/e_manager.h @@ -9,23 +9,7 @@ typedef struct _E_Manager_Comp_Source E_Manager_Comp_Source; #define E_MANAGER_H #define E_MANAGER_TYPE (int) 0xE0b01008 - -struct _E_Manager_Comp -{ - struct { - Evas * (*evas_get) (void *data, E_Manager *man); - void (*update) (void *data, E_Manager *man); - const Eina_List * (*src_list_get) (void *data, E_Manager *man); - Evas_Object * (*src_image_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); - Evas_Object * (*src_shadow_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); - Evas_Object * (*src_image_mirror_add) (void *data, E_Manager *man, E_Manager_Comp_Source *src); - Eina_Bool (*src_visible_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); - void (*src_hidden_set) (void *data, E_Manager *man, E_Manager_Comp_Source *src, Eina_Bool hidden); - Eina_Bool (*src_hidden_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); - } func; - void *data; -}; - + struct _E_Manager { E_Object e_obj_inherit; @@ -44,6 +28,35 @@ struct _E_Manager E_Manager_Comp *comp; }; +struct _E_Manager_Comp +{ + struct { + Evas * (*evas_get) (void *data, E_Manager *man); + void (*update) (void *data, E_Manager *man); + const Eina_List * (*src_list_get) (void *data, E_Manager *man); + Evas_Object * (*src_image_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); + Evas_Object * (*src_shadow_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); + Evas_Object * (*src_image_mirror_add) (void *data, E_Manager *man, E_Manager_Comp_Source *src); + Eina_Bool (*src_visible_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); + void (*src_hidden_set) (void *data, E_Manager *man, E_Manager_Comp_Source *src, Eina_Bool hidden); + Eina_Bool (*src_hidden_get) (void *data, E_Manager *man, E_Manager_Comp_Source *src); + E_Manager_Comp_Source * (*src_get) (void *data, E_Manager *man, Ecore_X_Window win); + } func; + void *data; +}; + +struct _E_Manager_Comp_Source +{ + EINA_INLIST; + + void *__c; // parent compositor + Ecore_X_Window win; // raw window - for menus etc. + E_Border *bd; // if its a border - later + E_Popup *pop; // if its a popup - later + E_Menu *menu; // if it is a menu - later + int x, y, w, h; // geometry +}; + EINTERN int e_manager_init(void); EINTERN int e_manager_shutdown(void); EAPI Eina_List *e_manager_list(void); @@ -120,6 +133,7 @@ EAPI void e_manager_comp_event_src_add_send(E_Manager *man, E_Manage EAPI void e_manager_comp_event_src_del_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data); EAPI void e_manager_comp_event_src_config_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data); EAPI void e_manager_comp_event_src_visibility_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data); +EAPI E_Manager_Comp_Source *e_manager_comp_src_get(E_Manager *man, Ecore_X_Window win); #endif #endif diff --git a/src/modules/comp/e_mod_comp.c b/src/modules/comp/e_mod_comp.c index e7b17205e..0201159af 100644 --- a/src/modules/comp/e_mod_comp.c +++ b/src/modules/comp/e_mod_comp.c @@ -2915,6 +2915,14 @@ _e_mod_comp_update_func(void *data, _e_mod_comp_render_queue(c); } +static E_Manager_Comp_Source * +_e_mod_comp_src_get_func(void *data __UNUSED__, + E_Manager *man __UNUSED__, + Ecore_X_Window win) +{ + return (E_Manager_Comp_Source *) _e_mod_comp_win_find(win); +} + static const Eina_List * _e_mod_comp_src_list_get_func(void *data, E_Manager *man __UNUSED__) @@ -3176,6 +3184,7 @@ _e_mod_comp_add(E_Manager *man) c->comp.data = c; c->comp.func.evas_get = _e_mod_comp_evas_get_func; c->comp.func.update = _e_mod_comp_update_func; + c->comp.func.src_get = _e_mod_comp_src_get_func; c->comp.func.src_list_get = _e_mod_comp_src_list_get_func; c->comp.func.src_image_get = _e_mod_comp_src_image_get_func; c->comp.func.src_shadow_get = _e_mod_comp_src_shadow_get_func;