fix initial stickiness handling

SVN revision: 13796
This commit is contained in:
Carsten Haitzler 2005-03-19 17:39:25 +00:00
parent 245b40b816
commit aa0ccade2d
1 changed files with 47 additions and 13 deletions

View File

@ -775,14 +775,33 @@ _pager_face_cb_event_border_add(void *data, int type, void *event)
if ((face->zone != ev->border->zone) || if ((face->zone != ev->border->zone) ||
(_pager_face_border_find(face, ev->border))) (_pager_face_border_find(face, ev->border)))
return 1; return 1;
pd = _pager_face_desk_find(face, ev->border->desk); if (ev->border->sticky)
if (pd)
{ {
Pager_Win *pw; Evas_List *l;
pw = _pager_window_new(pd, ev->border); /* go through all desks */
if (pw) for (l = face->desks; l; l = l->next)
pd->wins = evas_list_append(pd->wins, pw); {
Pager_Win *pw;
pd = l->data;
/* create it and add it */
pw = _pager_window_new(pd, ev->border);
if (pw)
pd->wins = evas_list_append(pd->wins, pw);
}
}
else
{
pd = _pager_face_desk_find(face, ev->border->desk);
if (pd)
{
Pager_Win *pw;
pw = _pager_window_new(pd, ev->border);
if (pw)
pd->wins = evas_list_append(pd->wins, pw);
}
} }
return 1; return 1;
} }
@ -1014,14 +1033,29 @@ _pager_face_cb_event_border_desk_set(void *data, int type, void *event)
/* the border isnt in this pager at all - it must have moved zones */ /* the border isnt in this pager at all - it must have moved zones */
else else
{ {
/* find the pager desk it needs to go to */ if (!ev->border->sticky)
pd = _pager_face_desk_find(face, ev->border->desk);
if (pd)
{ {
/* create it and add it */ /* find the pager desk it needs to go to */
pw = _pager_window_new(pd, ev->border); pd = _pager_face_desk_find(face, ev->border->desk);
if (pw) if (pd)
pd->wins = evas_list_append(pd->wins, pw); {
/* create it and add it */
pw = _pager_window_new(pd, ev->border);
if (pw)
pd->wins = evas_list_append(pd->wins, pw);
}
}
else
{
/* go through all desks */
for (l = face->desks; l; l = l->next)
{
pd = l->data;
/* create it and add it */
pw = _pager_window_new(pd, ev->border);
if (pw)
pd->wins = evas_list_append(pd->wins, pw);
}
} }
} }
return 1; return 1;