forked from enlightenment/enlightenment
add event handler to pager to handle wallpaper changes; see ticket #1155 for the bug that this works around
SVN revision: 73574
This commit is contained in:
parent
5f712e630b
commit
22775c508a
|
@ -58,6 +58,7 @@ struct _Pager_Desk
|
||||||
Evas_Object *o_desk;
|
Evas_Object *o_desk;
|
||||||
Evas_Object *o_layout;
|
Evas_Object *o_layout;
|
||||||
Evas_Object *o_bg;
|
Evas_Object *o_bg;
|
||||||
|
Ecore_Event_Handler *ev;
|
||||||
int xpos, ypos, urgent;
|
int xpos, ypos, urgent;
|
||||||
int current : 1;
|
int current : 1;
|
||||||
struct
|
struct
|
||||||
|
@ -343,6 +344,30 @@ _pager_empty(Pager *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_pager_desk_bg_update(Pager_Desk *pd, int type __UNUSED__, E_Event_Bg_Update *ev)
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
Pager *p = pd->pager;
|
||||||
|
E_Desk *desk = pd->desk;
|
||||||
|
if (((ev->container < 0) || ((int)pd->desk->zone->container->num == ev->container)) &&
|
||||||
|
((ev->zone < 0) || ((int)pd->desk->zone->num == ev->zone)) &&
|
||||||
|
((ev->desk_x < 0) || (pd->desk->x == ev->desk_x)) &&
|
||||||
|
((ev->desk_y < 0) || (pd->desk->y == ev->desk_y)))
|
||||||
|
{
|
||||||
|
x = pd->xpos, y = pd->ypos;
|
||||||
|
_pager_desk_free(pd);
|
||||||
|
pd = _pager_desk_new(p, desk, x, y);
|
||||||
|
if (pd)
|
||||||
|
{
|
||||||
|
p->desks = eina_list_append(p->desks, pd);
|
||||||
|
if (desk == e_desk_current_get(desk->zone))
|
||||||
|
_pager_desk_select(pd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ECORE_CALLBACK_RENEW;
|
||||||
|
}
|
||||||
|
|
||||||
static Pager_Desk *
|
static Pager_Desk *
|
||||||
_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos)
|
_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos)
|
||||||
{
|
{
|
||||||
|
@ -361,6 +386,7 @@ _pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos)
|
||||||
pd->desk = desk;
|
pd->desk = desk;
|
||||||
e_object_ref(E_OBJECT(desk));
|
e_object_ref(E_OBJECT(desk));
|
||||||
pd->pager = p;
|
pd->pager = p;
|
||||||
|
pd->ev = ecore_event_handler_add(E_EVENT_BG_UPDATE, (Ecore_Event_Handler_Cb)_pager_desk_bg_update, pd);
|
||||||
|
|
||||||
o = edje_object_add(evas_object_evas_get(p->o_table));
|
o = edje_object_add(evas_object_evas_get(p->o_table));
|
||||||
pd->o_desk = o;
|
pd->o_desk = o;
|
||||||
|
@ -426,6 +452,7 @@ _pager_desk_free(Pager_Desk *pd)
|
||||||
evas_object_del(pd->o_layout);
|
evas_object_del(pd->o_layout);
|
||||||
EINA_LIST_FREE(pd->wins, w)
|
EINA_LIST_FREE(pd->wins, w)
|
||||||
_pager_window_free(w);
|
_pager_window_free(w);
|
||||||
|
ecore_event_handler_del(pd->ev);
|
||||||
e_object_unref(E_OBJECT(pd->desk));
|
e_object_unref(E_OBJECT(pd->desk));
|
||||||
E_FREE(pd);
|
E_FREE(pd);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue