fixed pager stick/unstick/duplication problem (thanks catalyst/JC)

:)


SVN revision: 13789
This commit is contained in:
Carsten Haitzler 2005-03-19 12:33:24 +00:00
parent f8b09ec084
commit b0d5786212
2 changed files with 35 additions and 12 deletions

1
TODO
View File

@ -30,7 +30,6 @@ Current freeze issues are:
ISSUES:
* ibar doesnt handle autoscroll when it starts up (only after a gadman resize)
* consoldiate client lists - we have client lists for containers, zones, desks AND e_borders.c consolidate into 1 list that has all borders with their stacking and what desk they belong to (and thus zone and container)
* virtual desktops need an overhaul. hacked in waay too quickly.
* virtual desktops need fixing to work with zones properly
* gadman gadget menu needs icons :)

View File

@ -131,7 +131,7 @@ int
about(E_Module *module)
{
e_error_dialog_show("Enlightenment Pager Module",
"A pager module to navigate E17 desktops.");
"A pager module to navigate virtual desktops.");
return 1;
}
@ -929,22 +929,46 @@ _pager_face_cb_event_border_desk_set(void *data, int type, void *event)
Pager_Face *face;
Pager_Win *pw;
Pager_Desk *pd;
Evas_List *l;
int found = 0;
face = data;
ev = event;
if (face->zone != ev->border->zone) return 1;
if (ev->border->sticky) return 1;
pw = _pager_face_border_find(face, ev->border);
pd = _pager_face_desk_find(face, ev->border->desk);
if ((pw) && (pd))
for (l = face->desks; l; l = l->next)
{
pw->desk->wins = evas_list_remove(pw->desk->wins, pw);
pw->desk = pd;
pd->wins = evas_list_append(pd->wins, pw);
e_layout_unpack(pw->window_object);
e_layout_pack(pd->layout_object, pw->window_object);
_pager_window_move(face, pw);
pd = l->data;
if (ev->border->desk != pd->desk)
{
pw = _pager_desk_border_find(pd, ev->border);
if (pw)
{
pd->wins = evas_list_remove(pd->wins, pw);
_pager_window_free(pw);
}
}
else
{
pw = _pager_desk_border_find(pd, ev->border);
if (pw) found = 1;
}
}
if (!found)
{
pw = _pager_face_border_find(face, ev->border);
pd = _pager_face_desk_find(face, ev->border->desk);
if ((pw) && (pd))
{
pw->desk->wins = evas_list_remove(pw->desk->wins, pw);
e_layout_unpack(pw->window_object);
pw->desk = pd;
pd->wins = evas_list_append(pd->wins, pw);
e_layout_pack(pd->layout_object, pw->window_object);
_pager_window_move(face, pw);
}
}
return 1;
}