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
This commit is contained in:
Hannes Janetzek 2011-10-10 20:30:33 +00:00
parent d1caae1da8
commit b59bdf6761
3 changed files with 46 additions and 17 deletions

View File

@ -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)
{

View File

@ -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

View File

@ -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;