forked from enlightenment/enlightenment
add gadcon visibility handling, send hide signal to pager desks on hide
this (in combination with elm changes) should greatly reduce cpu usage
This commit is contained in:
parent
829b401494
commit
8f2d8748e1
|
@ -22,6 +22,8 @@ static void _e_gadcon_client_inject(E_Gadcon *gc, E_Gadcon_C
|
|||
|
||||
static void _e_gadcon_cb_min_size_request(void *data, Evas_Object *obj, void *event_info);
|
||||
static void _e_gadcon_cb_size_request(void *data, Evas_Object *obj, void *event_info);
|
||||
static void _e_gadcon_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_gadcon_cb_show(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_gadcon_cb_moveresize(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_gadcon_parent_resize_cb(E_Gadcon *gc, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _e_gadcon_cb_client_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
|
@ -467,6 +469,10 @@ e_gadcon_swallowed_new(const char *name, int id, Evas_Object *obj, const char *s
|
|||
(Evas_Object_Event_Cb)_e_gadcon_parent_resize_cb, gc);
|
||||
evas_object_event_callback_add(gc->o_container, EVAS_CALLBACK_RESIZE,
|
||||
_e_gadcon_cb_moveresize, gc);
|
||||
evas_object_event_callback_add(gc->o_container, EVAS_CALLBACK_SHOW,
|
||||
_e_gadcon_cb_show, gc);
|
||||
evas_object_event_callback_add(gc->o_container, EVAS_CALLBACK_HIDE,
|
||||
_e_gadcon_cb_hide, gc);
|
||||
evas_object_smart_callback_add(gc->o_container, "size_request",
|
||||
_e_gadcon_cb_size_request, gc);
|
||||
evas_object_smart_callback_add(gc->o_container, "min_size_request",
|
||||
|
@ -2430,6 +2436,28 @@ _e_gadcon_cb_size_request(void *data, Evas_Object *obj EINA_UNUSED, void *event_
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadcon_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Gadcon *gc = data;
|
||||
Eina_List *l;
|
||||
E_Gadcon_Client *gcc;
|
||||
|
||||
EINA_LIST_FOREACH(gc->clients, l, gcc)
|
||||
evas_object_show(gcc->o_base ?: gcc->o_frame);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadcon_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Gadcon *gc = data;
|
||||
Eina_List *l;
|
||||
E_Gadcon_Client *gcc;
|
||||
|
||||
EINA_LIST_FOREACH(gc->clients, l, gcc)
|
||||
evas_object_hide(gcc->o_base ?: gcc->o_frame);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadcon_cb_moveresize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
|
|
|
@ -100,6 +100,8 @@ struct _Pager_Popup
|
|||
|
||||
static void _pager_cb_mirror_add(Pager_Desk *pd, Evas_Object *obj, Evas_Object *mirror);
|
||||
|
||||
static void _pager_cb_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _pager_cb_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _pager_cb_obj_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _button_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
|
||||
static void _pager_inst_cb_menu_configure(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED);
|
||||
|
@ -234,6 +236,10 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
|||
_pager_cb_obj_moveresize, inst);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_button_cb_mouse_down, inst);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_SHOW,
|
||||
_pager_cb_obj_show, inst);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_HIDE,
|
||||
_pager_cb_obj_hide, inst);
|
||||
pager_config->instances = eina_list_append(pager_config->instances, inst);
|
||||
return gcc;
|
||||
}
|
||||
|
@ -826,6 +832,28 @@ _pager_popup_find(E_Zone *zone)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_cb_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Eina_List *l;
|
||||
Pager_Desk *pd;
|
||||
|
||||
EINA_LIST_FOREACH(inst->pager->desks, l, pd)
|
||||
edje_object_signal_emit(pd->o_desk, "e,state,hidden", "e");
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_cb_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Eina_List *l;
|
||||
Pager_Desk *pd;
|
||||
|
||||
EINA_LIST_FOREACH(inst->pager->desks, l, pd)
|
||||
edje_object_signal_emit(pd->o_desk, "e,state,visible", "e");
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_cb_obj_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue